mysql热备份使⽤⽅案_MySQL双机热备份实施⽅案
1、MySQL数据库没有增量备份的机制,当数据量太⼤的时候备份是⼀个很⼤的问题。还好MySQL数据库提供了⼀种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。
2、要想实现双机的热备⾸先要了解主从数据库服务器的版本的需求。要实现热备MySQL的版本都要⾼于3.2,还有⼀个基本的原则就是作为从数据库的数据库版本可以⾼于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
MySQL的双机热备份是基于MySQL内部复制功能,建⽴在两台或者多台以上的服务器之间,通过它们之间的主从关系,是插⼊主数据库的数据同时也插⼊到从数据库上,这实现了动态备份当前数据库的功能。下⾯细说⼀下主从热备份的步骤:
假设主服务器A(master)、从服务器为B(slave)
A:192.168.0.104
B:192.168.0.169
1.主服务器授权授权副服务器可以连接主服务器并可以进⾏更新。这是在主服务器上进⾏的,创建⼀个username和password供副服务器访问时使⽤。在MySQL命令⾏下输⼊mysql> GRANT REPLICATION SLAVE ON *.* TO backup@‘19
2.168.0.169’IDENTIFIED BY ‘123456’; 这⾥创建了⼀个帐号backup⽤于slave访问master来更新slave数据库。2.数据复制将master上已有的数据复制到slave 上,以便主从数据库建⽴的时候两个数据库的数据保持⼀致。
在master上导出数据 mysql> FLUSH TABLES WITH READ LOCK; D:/Develop/MySQL/bin> mysqldump –u root -p cartrader > d:/cartrader.sql
mysql> UNLOCK TABLES 在slave上导⼊数据mysql>use cartrader
mysql>source d:/cartrader.sql 另外也可以使⽤LOAD DATA FROM MASTER语句将主服务器的数据传输到副服务器,但使⽤上有些限制。注意:在执⾏数据复制的过程中,要确保不能对主服务器执⾏更新操作。不推荐使⽤!3. 配置主服务器修改master上mysql的根⽬录下的my.ini配置⽂件,在选项配置⽂件中赋予主服务器⼀个server-id,该id必须是1到2^23-1范围内的唯⼀值。主服务器和副服务器的server-id不能相同。另外,还需要配置主服务器,使之启⽤⼆进制⽇志,即在选项配置⽂件中添加log-bin启动选项。
[mysqld]
server-id=1 #唯⼀值,并不能与副服务器相同
log-bin = bin_log #⽇志⽂件以binary_log为前缀,如果不给log-bin赋值,⽇志⽂件将以#master-server-hostname为前缀
binlog-ignore-db= mysql,test,information_schema #⽇志⽂件跳过的数据库(可选属性 )
binlog-do-db= cartrader #⽇志⽂件操作的数据库(可选属性 ,默认所有数据库的相关操作都写⼊⼆进制⽇志⽂件)
注意:如果主服务器的⼆进制⽇志已经启⽤,关闭并重新启动之前应该对以前的⼆进制⽇志进⾏备份。重新启动后,应使⽤RESET MASTER语句清空以前的⽇志。
原因:master上对数据库cartrader的⼀切操作都记录在⽇志⽂件中,然后会把⽇志发给slave,slave接收到master传来的⽇志⽂件之后就会执⾏相应的操作,使slave中的数据库做和master数据库相同的操作。所以为了保持数据的⼀致性,必须保证⽇志⽂件没有脏数据。4.重启master配置好以上选项后,重启MySQL服务,新选项将⽣效。现在,所有对数据库中信息的更新操作将被写进⽇志中。5.配置slave 在副服务器上的MySQL选项配置⽂件中添加以下参数。
[mysqld]
server-id=2 #唯⼀并与主服务器上的server-id不同。
master-host= 192.168.0.104 #主服务器的主机名或者ip地址
master-port=3306
master-user=root
master-password=123456
#复制操作要针对的数据库(可选,默认为全部)
replicate-do-db=cartrader
#如果主副服务器间连接经常失败,需增加master-retry-count和master-connect-retry
#master-retry-count #连接重试的次数
#master-connect-retry #连接失败后等待的秒数
master-retry-count = 999
master-connect-retry = 606. 重启slave副服务器上MySQL服务重启后,还在数据⽬录中创建⼀个master.info⽂件,其中包含所有有关复制过程的信息(连接主服务器的相关信息及与主服务器交换数据的相关信息)。在初次启动以后,副服务器将检查这个master.info⽂件,以得到相关信息。
如果想修改复制选项,删除master.info并重启MySQL服务,在启动过程中使⽤选项配置⽂件中的新选项进⾏重新创建了master.info⽂件。
将主服务器上备份好的数据库脚本⽂件(cartrader.sql)导⼊到副服务器数据库中,以便保证主-副服务器上进⾏复制操作的起点⼀样。7. 查看mastermysql>show master status #查看master的状态与设置的是否⼀致(在master上)8.查看slave⼀般重启了slave之后,⾃动就会开启复制功能,可以通过下⾯的语句查看
mysql>show slave status #在slave上
如果显⽰waiting for master to send event 的话就表⽰已经启动了,反之就运⾏
mysql下载后的初次使用mysql>start slave #启动slave
在SHOW SLAVE STATUS的命令输出后,应该包含Slave_IO_Running对应的值为YES,Slave_SQL_Running对应的值为YES,如下图所⽰,只有这样才保证主从机能正常备份。
mysql>stop slave #暂时停⽌主从热备份
注:以上的配置⽅式只能实现A->B,即数据由A(master)转移到B(slave),不能由B转移到A,这样的话对B做的任何操作就不会被同步到数据库A中。当然也可以通过把A设置成slave和master,把B设置成slave和master从⽽实现对A或者B的任何改动都会影响到另外⼀⽅。配置同上,在此不在论述。
============================================================================
1. 如果 binlog 已经产⽣,可以通过 SQL 命令⾏清除:
/*
* 要清理⽇志,需按照以下步骤:
* 1 在每个从属服务器上,使⽤SHOW SLAVE STATUS来检查它正在读取哪个⽇志。
* 2 使⽤SHOW MASTER LOGS获得主服务器上的⼀系列⽇志。
* 3 在所有的从属服务器中判定最早的⽇志。这个是⽬标⽇志。如果所有的从属服务器是更新的,这是清单上的最后⼀个⽇志。
* 4 制作您将要删除的所有⽇志的备份。(这个步骤是⾃选的,但是建议采⽤。)
* 5 清理所有的⽇志,但是不包括⽬标⽇志。
*/
# 必须拥有RELOAD权限,此 命令将删除列于索引⽂件中的所有binlog,把 binlog 索引⽂件重新设置为空,并创建⼀个新的 binlog (在以前版本中,被称为FLUSH MASTER)
RESET MASTER;
#清除指定的 binlog PURGE MASTER LOGS TO 'mysql-bin.010';
# 清除指定⽇期之前的binlog,BEFORE变量的date⾃变量可以为'YYYY-MM-DD hh:mm:ss'格式 PURGE MASTER LOGS BEFORE
'2006-06-06 06:06:06';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论