0
点赞
收藏
分享

微信扫一扫

重置mysql主从同步(MySQL Reset Master-Slave Replication)


 

重置mysql主从同步(MySQL Reset Master-Slave Replication)

mysql主从同步的过程中,可能会因为各种原因出现主库与从库不同步的情况,网上虽然有一些解决办法,但是有时很难彻底解决,重置主从服务器也许不是最快的办法,但却是最安全有效的。 

    下面将自己重置主从同步的步骤总结一下,以备不时之需。

    master与slave均使用:centos6.0+mysql 5.1.61 ,假设有db1,db2两个数据库需要热备。

shell与mysql均使用root账号,在真实环境中,请根据情况更换。

    1.停止slave服务器的主从同步

    为了防止主从数据不同步,需要先停止slave上的同步服务。

    STOP SLAVE;

    2.对master服务器的数据库加锁

数据库进行更新操作,必须对数据库加锁。

    FLUSH TABLES WITH READ LOCK;

服务器也可以关闭apache或nginx服务,效果也是一样的。

   

    3.备份master上的数据

mysqldump -u root -p -databases db1 db2

    4.重置master服务

    RESET MASTER;

master的核心语法,看一下官方解释。

only

may

    大概的意思是RESET MASTER将删除所有的二进制日志,创建一个.000001的空日志。RESET MASTER并不会影响SLAVE服务器上的工作状态,所以盲目的执行这个命令会导致slave找不到master的binlog,造成同步失败。

    但是我们就是要重置同步,所以必须执行它。

数据库解锁

    UNLOCK TABLES;

    如果你停止了apache或nginx,请开启它们

   

master上的备份文件拷贝到slave服务器上

    大可不必用WinScp先下载到本地再上传到slave上,可以直接使用scp命令在服务器间拷贝,速度更快。

scp

服务器上的旧数据

    删除前,请先确认该备份的是否都备份了。

    DROP DATABASE db1;

db2;

    8.导入数据

    SOURCE /root/bak.sql;

    9.重置slave服务

    RESET SLAVE;

    还是看一下官方解释

master's binary log. This statement is meant to be used for a clean start: It deletes the master.info and relay-log.info files, all the relay log files, and starts a new relay log file. To use RESET SLAVE, the slave replication threads must be stopped (use STOP SLAVE if necessary).

    大概意思是,RESET SLAVE将清除slave上的同步位置,删除所有旧的同步日志,使用新的日志重新开始,这正是我们想要的。需要注意的是,必须先停止slave服务(STOP SLAVE),我们已经在第一步停止了它。

    10.开启slave服务

    START SLAVE;

    大功告成,SHOW SLAVE STATUS\G 检查同步状态,一切正常。

 

 

举报

相关推荐

0 条评论