mysql 重新主从复制

1.先进入主库,进行锁表,防止数据写入 

mysql> flush tables with read lock; 

2.进行数据备份

/usr/local/mysql/bin/mysqldump -uroot  -p  --quick --routines --master-data=2 --single-transaction   -A  > test.sql
--quick, -q     # 不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。
--routines, -R  # 导出存储过程以及自定义函数。
--master-data   # 该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。
--single-transaction # 该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。

3.查看MASTER_LOG_POS

# grep "CHANGE MASTER TO MASTER_LOG_FILE" test.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000010', MASTER_LOG_POS=179567203 ;

4.停止从库

mysql> stop slave;

5.从库还原数据

mysql> source test.sql;

6.从新设置主从同步

reset slave all;
CHANGE MASTER TO MASTER_HOST='172.16.2.216',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000010', MASTER_LOG_POS=179567203;

7.从新开启主从同步

mysql> start slave;

8.查看主从同步状态

mysql> show slave status\G

9.主库解除锁

mysql> UNLOCK TABLES;

 

posted @ 2022-03-03 17:52  小吉猫  阅读(201)  评论(0编辑  收藏  举报