一。主库,备份数据库
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;
网友评论