`
kakaluyi
  • 浏览: 445006 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

MySQL实施热备份

阅读更多

MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的
-从关系来实现的。其中一个作为主服务器,其它的作为副服务器。以下将
详细讨论如何配置两台服务器,将一个设为主服务器,另一个设为副服务器。
并且描述一下在它们之间进行切换的处理过程。

1      操作步骤

1.1   主服务器授权

授权副服务器可以连接主服务器并可以进行更新。这是在主服务器上进行的,创建一个
username和password供副服务器访问时使用。在MySQL命令行下输入

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘username’@’slave-server-hostname’ IDENTIFIED BY ‘password’;



根据实际情况替换username,slave-server-hostname,password。

 

1.2   数据复制

一旦建立好访问许可后,接下来就是从主服务器向副服务器复制数据。可以从mysqldump
工具。

#锁住表,禁止update。

mysql> FLUSH TABLES WITH READ LOCK;

#导出数据 Windows中为命令提示符。

shell> mysqldump –opt databasename > backup.sql

#解除锁定

mysql> UNLOCK TABLES







将备份好的数据库脚本backup.sql拷贝到副服务器。

另外也可以使用LOAD DATA FROM MASTER语句将主服务器的数据传输到副服务器,但
使用上有些限制。
注意:在执行数据复制的过程中,要确保不能对主服务器执行更新操作。

1.3   配置主服务器

在选项配置文件中赋予主服务器一个server-id,该id必须是1到2^23-1范围
内的唯一值。主服务器和副服务器的server-id不能相同。

另外,还需要配置主服务器,使之启用二进制日志,即在选项配置文件中添加log-bin
启动选项。

选项文件示例(其中#开头的为注释):

[mysqld]

#唯一值,并不能与副服务器相同

server-id=3

#日志文件以binary_log为前缀,如果不给log-bin赋值,日志文件将以#master-server-hostname为前缀

log-bin = binary_log

#日志文件跳过的数据库(可选属性)

binlog-ignore-db=mysql

#日志文件操作的数据库(可选属性)

binlog-do-db=netbar

 

 

 

 

1.4   重启主服务器

配置好以上选项后,重启MySQL服务,新选项将生效。现在,所有对数据库中信息的
更新操作将被写进日志中。

 

注意:如果主服务器的二进制日志已经启用,关闭并重新启动之前应该对以前的二
进制日志进行备份。重新启动后,应使用RESET MASTER语句清空以前的日志。

 

1.5   配置副服务器

在副服务器上的MySQL选项配置文件中添加以下参数。

[mysqld]

#唯一,并与主服务器上的server-id不同。

server-id=7

#主服务器的主机名或者ip地址

master-host=master-server-hostname

#如果主服务器没有在默认的端口上监听,则需确定master-port选项

master-port=3306

#步骤2.1中创建的用户名和密码

master-user=username

master-password=password

#复制操作要针对的数据库(可选,默认为全部)

replicate-do-db=netbar

#如果主副服务器间连接经常失败,需增加master-retry-count和master-connect-retry

#master-retry-count连接重试的次数

#master-connect-retry 连接失败后等待的秒数

master-retry-count = 999

master-connect-retry = 60

 

 

 

 

 

 

1.6   重启副服务器

副服务器上MySQL服务重启后,还在数据目录中创建一个master.info文件,其中包含
所有有关复制过程的信息(连接主服务器的相关信息及与主服务器交换数据的相关信息)。
在初次启动以后,副服务器将检查这个master.info文件,以得到相关信息。如果想修
改复制选项,删除master.info并重启MySQL服务,在启动过程中使用选项配置文件中的
新选项进行重新创建了master.info文件。

 

将主服务器上备份好的数据库脚本文件(backup.sql)导入到副服务器数据库中,以便保
证主-副服务器上进行复制操作的起点一样。

2      管理复制过程

2.1   管理主服务器

mysql> SHOW PROCESSLIST


显示数据库服务器上有关线程的信息

mysql> SHOW BINLOG EVENTS


显示二进制日志中的信息(MySQL 4.0以后的版本中)

mysql> SHOW MASTER STATUS


显示主服务器中有关二进制日志的其他信息。

2.2   管理副服务器

mysql> START SLAVE


用于开始或恢复复制,START SLAVE命令执行后,并不意味着一切都OK,需要用 
SHOW SLAVE STATUS来监督副服务器的活动

在SHOW SLAVE STATUS的命令输出后,应该包含Slave_IO_Running对应的值为YES,
Slave_SQL_Running对应的值为YES

mysql> STOP SLAVE


停止或结束复制

mysql> SHOW SLAVE STATUS


查看服务器的状态信息

mysql> CHANGE MASTER TO master_def [, master_def] ...

master_def:
      MASTER_HOST = 'host_name'
    | MASTER_USER = 'user_name'
    | MASTER_PASSWORD = 'password'
    | MASTER_PORT = port_num
    | MASTER_CONNECT_RETRY = count
    | MASTER_LOG_FILE = 'master_log_name'
    | MASTER_LOG_POS = master_log_pos
    | RELAY_LOG_FILE = 'relay_log_name'
    | RELAY_LOG_POS = relay_log_pos
    | MASTER_SSL = {0|1}
    | MASTER_SSL_CA = 'ca_file_name'
    | MASTER_SSL_CAPATH = 'ca_directory_name'
    | MASTER_SSL_CERT = 'cert_file_name'
    | MASTER_SSL_KEY = 'key_file_name'
    | MASTER_SSL_CIPHER = 'cipher_list'

 


























CHANGE MASTER TO更新了副服务器与主服务器连接和通讯的参数,即更新了master.info
和relay-log.info两个文件中的内容。如果不需要改变已有参数则不需要指定相对于的
参数名。在更改参数值之前需调用STOP SLAVE停止副服务器上的IO_THREAD和SQL_THREAD进程。

2.3   数据恢复

mysql> LOAD DATA FROM MASTER


该语句在MySQL4.0以上版本使用,这是一种副服务器从主服务器获得数据的方法。但
使用这个命令有些限制,目前MySQL建议只能在主服务器数据库很小以及主服务器对长
时间不存在问题的情况设置了读锁的的情况下使用。此外只有MyISAM类型的表可以使
用这个命令复制数据。

 

4      附录

5.1   选项配置文件

Windows MySQL将在Windows安装目录(比如C:\WINNT或C:\WINDOWS)中的名为my.cnf的选项文件和
C:\my.cnf中查找启动选项。作为代替,my.cnf可以采用文件名为my.ini,位于Windows安装目录中。

Unix/Linux MySQL将检查/etc/my.cnf文件,如果没有MySQL使用默认启动选项。也可以手工创建该文件。

5.2   数据目录

Windows MySQL的安装目录下的data目录,比如C:\mysql\data目录

Unix/Linux 如果是源码方式安装(tar.gz)MySQL,数据目录在/usr/loca/mysql/data目录;
如果是用RPM包安装的,数据目录在/var/lib/mysql目录

5.3   从MySQL数据库和表中倒出结构和数据

shell> mysqldump [OPTIONS] database [tables]



如果你不给定任何表,整个数据库将被倾倒。 通过执行mysqldump --help,你能得到你mysqldump的
版本支持的选项表。 

注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在倾倒结果前装载整个结果集到
内存中,如果你正在倾倒一个大的数据库,这将可能是一个问题。 

mysqldump支持下列选项(常用的): 

--add-locks 

在每个表倾倒之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。 

-F, --flush-logs 

在开始倾倒前,洗掉在MySQL服务器中的日志文件。 

-f, --force, 

即使我们在一个表倾倒期间得到一个SQL错误,继续。 

-h, --host=.. 

从命名的主机上的MySQL服务器倾倒数据。缺省主机是localhost。 

-l, --lock-tables. 

为开始倾倒锁定所有表。 

-t, --no-create-info 

不写入表创建信息(CREATE TABLE语句) 

-d, --no-data 

不写入表的任何行信息。如果你只想得到一个表的结构的倾倒,这是很有用的! 

--opt 

同--quick --add-drop-table --add-locks --extended-insert --lock-tables。应该给你为
读入一个MySQL服务器的尽可能最快的倾倒。 

-pyour_pass, --password[=your_pass] 

与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。 

-P port_num, --port=port_num 

与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。) 

-u user_name, --user=user_name 

与服务器连接时,MySQL使用的用户名。缺省值是root。 

 

最常见的mysqldump使用可能制作整个数据库的一个备份: 

mysqldump --opt database > backup-file.sql 

评论

相关推荐

    MySQL热备份

    ### MySQL热备份详解 在IT领域,数据的安全与完整性至...通过以上步骤,即可完成MySQL热备份的配置与实施,确保了在不影响业务运行的前提下,实现了数据的实时、安全备份,大大提升了数据库系统的稳定性和数据安全性。

    MySQL双机热备份实施方案.pdf

    MySQL双机热备份是一种高可用性和灾难恢复策略,它通过实时同步主数据库的数据到备用数据库来确保业务连续性。在MySQL中,这种热备份通常基于内部的复制功能,允许数据在多个服务器间实时流动,即使在主服务器故障时...

    mysql 数据库热备份1

    - **"mysql 数据库热备份1"**:此标题表明文章主要讲解的是MySQL数据库中的热备份技术及其实施方式,数字“1”可能表示这是一个系列文章的第一部分。 #### 描述分析: - **红色字体表示同步错误指示**:在MySQL主从...

    MySQL数据库双机热备份实施方案.pdf

    【MySQL数据库双机热备份实施方案】是指在两个服务器上配置MySQL数据库,以实现高可用性和数据安全性。在主服务器(Master)上进行的所有数据更改都会实时地、异步地复制到备用服务器(Slave)。这种配置被称为双机...

    MYSQL如何实现双机热备份

    在大型的Web应用或关键业务环境中,数据库服务不能出现长时间的停机,因此需要实施双机热备份来应对硬件故障或其他潜在问题。下面将详细阐述MySQL双机热备份的实现方法。 一、复制技术 MySQL的复制机制是实现双机...

    mysql自动化备份方案

    使用`mysqldump`命令进行热备份,即在不中断数据库服务的情况下导出SQL语句,这种方式适合大多数业务场景,保证了数据的一致性。 - **设置定时备份周期**:通过`crontab`设置定时任务,通常选择在业务低峰时段(如...

    Mysql数据库备份

    根据备份过程中是否允许对数据库进行读写操作,MySQL备份可以分为热备份(在线备份)和冷备份(离线备份)两种模式。 - **热备份**:可以在不停止数据库服务的情况下进行,适用于生产环境中的备份需求。 - **冷备份...

    Linux下Mysql双机备份

    双机热备份基于MySQL内部的复制功能,在多台服务器之间建立主从关系,确保写入主数据库的数据也能被复制到从数据库中。这种方式不仅提高了数据安全性,还能够减少备份时间,并在主服务器出现故障时快速切换到从...

    mysql全库备份增量备份脚本

    `xtrabackup`是由Percona开发的一个开源工具,特别适用于InnoDB存储引擎的MySQL数据库,它提供了高效且无锁的热备份功能。全量备份后,xtrabackup可以进行增量备份,仅备份自上次备份以来发生更改的数据。这大大减少...

    mysql备份解决方案

    同时,为了提高数据安全性,通常还会考虑使用网络备份、冷备份、热备份等多种备份方式,以及利用云服务提供的备份服务。此外,定期检查备份的完整性和可恢复性也非常重要,确保在需要时能顺利恢复数据。

    windows下mysql双机热备.doc

    "Windows服务器Mysql数据库双机热备" Windows服务器Mysql数据库双机热备是指在Windows服务器中,实现两台服务器中Mysql数据库的数据同步机制。这种机制可以保证数据的一致性和高可用性。 在实现双机热备之前,需要...

    MySQL数据库备份的简单知识

    在实施备份时,遵循一些最佳实践至关重要: 1. 定期备份:制定备份计划并严格执行,以减少数据丢失的风险。 2. 开启数据库的二进制日志:二进制日志记录所有更改,有助于在恢复后应用后续更新,从而达到崩溃前的...

    MySQL数据库的备份和恢复.pdf

    热备份允许在不影响数据库服务的情况下进行备份,而冷备份则需要停止数据库服务以保证数据一致性。 六、备份管理 为了保证数据的安全性和可靠性,应定期进行备份并妥善存储。同时,需要定期测试备份的完整性和可...

    mysql大数据备份文档及脚本

    Xtrabackup是由Percona公司开发的,它的核心特性在于能够在不锁定数据库的情况下进行物理热备份,这意味着在备份过程中,系统可以继续接收读写操作,不影响正常业务运行。这种备份方式尤其适合大数据环境,因为...

    MySQL自定义备份方案设计.pdf

    然而,mysqldump在处理大型数据库时可能会消耗大量时间和资源,且不支持热备份,即在数据库运行时进行备份,可能导致数据丢失。 2. 自定义备份方案 针对上述问题,自定义备份方案通常会结合MySQL的特性,比如使用...

    mysql备份

    此外,MySQL还提供了其他备份工具,如`xtrabackup`,这是一个用于InnoDB存储引擎的开源热备份工具,可以在不锁定数据库的情况下进行物理备份,适合大数据量的环境。 在备份策略上,我们通常建议实施定期备份,例如...

    MySQL数据库备份与恢复详解天盾数据恢复中心PPT学习教案.pptx

    1. 根据是否需要数据库离线,分为冷备份、温备份和热备份。 2. 根据要备份的数据集合的范围,分为完全备份、增量备份和差异备份。 3. 根据备份数据或文件进行直接备份数据,即物理备份。 MySQL数据库备份方法有...

    MySQL数据库备份以及常用备份工具集合

    1. `mysqldump` 是MySQL自带的备份工具,它支持热备份(对于InnoDB存储引擎),但速度较慢,适合小型数据库。对于MyISAM引擎的表,需要使用温备份并加读锁;而对于InnoDB,可以使用`--single-transaction`选项进行热...

Global site tag (gtag.js) - Google Analytics