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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY