情况说明

    因为各种原因造成从库同步失败。从库与主库不同步。
为尽量少影响线上服务,选择在使用低谷进行操作。

主要步骤

  1. 首先从库 停止同步

    登录进入:mysql -uroot -pxxxx

    停止同步:stop slave;

  2. 主库

    备份数据:mysqldump -uroot -pxxx --single-transaction --master-data=2 --databases db1> db1.sql


    不停服两个主要参数说明

    --single-transaction

    --master-data=2

    master-data参数主要用来记录主库的binlog_file和pos,它有两个值,分别是:

    ‘1’:在mysqldump过程中,将binlogfile和pos信息记录在sql中,并且不是以注释信息的方式记录,这样在执行导入的时候自动执行这部分信息

    ‘2’:在mysqldump过程中,将binlogfile和pos信息以注释的方式记录在sql中

    single-transaction参数则是通过提交单一事务来确保数据一致性,通过在FLUSH TABLES WITH READ LOCK 后添加START TRANSACTION 语句,开启单一事务,此时加锁,仅仅是为了获取准确的master-data中的binlogfile和pos信息,在开启事务后,锁已经释放了,所以对业务影响很小

    通过以上两个参数,可以在不长时间锁表的情况下获取准确的binlogfile和pos信息,从而完成主从配置

    3.从库重置slave

    重置同步:reset slave  //会清楚原有的relaylog,重新生成新的relaylog 00001开始

    4.删除从库对应db 

        drop database db1;

    5.从库 导入数据  mysql -uroot -p < db1.sql

    6.从库 修改同步位置:

        获取位置-再db1.sql 的前几十行中存在
        head -40 db1.sql 会找到对应的sql

        CHANGE MASTER TO MASTER_LOG_FILE='MySQL-bin.000077', MASTER_LOG_POS=183240705;

    7.从库开启同步

        start slave;

    8.查看同步状态

        show slave status\G;



        如上图  

        Seconds_Behind_Master:0 代表与主库最新记录时间差距,为0代表已经同步完成。


乐享:知识积累,快乐无限。