mysql 主从同步不同步修复

一。主库,备份数据库

mysqldump -uroot -p  --single-transaction --master-data=2 --no-autocommit  -A > /root/alldatas.sql

--single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响

--master-data=2该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。=2 是把change log 那行注释掉,=1 是没有注释.


head -n 30 alldatas.sql

记录: 1. MASTER_LOG_FILE  

             2. MASTER_LOG_POS

二。copy 数据到从库,删掉原来数据, 从新source alldatas.sql

三。 重新同步

change master to master_host='192.16.1.100', MASTER_PORT=3306, master_user='replication',master_password='Xsjy%123',master_log_file='mysql-bin.000007',master_log_pos=422223897;

四。 start slave ;   show slave status \G;       这时从库已经同步主库数据。

如果是主主同步, 还需要主库同步从库上数据

1. 从库锁表,flush tables with read lock;  

2. 从库查询: show master status \G;

3. 到主库同步从库,并启动同步线程

change master to master_host='192.168.1.1', MASTER_PORT=3306, master_user='replication',master_password='Xsjy%123',master_log_file='mysql-bin.000033',master_log_pos=638897339;

start slave;

show slave status \G;

4. 从库解锁   unlock tables;

你可能感兴趣的:(mysql 主从同步不同步修复)