mysqldump导出必须加--single-transaction和--master-data=2,否则binlog位置与数据不一致,导致从库复制启动失败;若启用GTID还需加--set-gtid-purged=ON,且应显式指定库名、避免--all-databases,从库导入前须STOP SLAVE; RESET SLAVE ALL; 并清空业务库。mysqldump导出时必须加 --single-transaction 和 --master-data=2不加这两个参数,导出的数据和 binlog 位置对不上,从库启动复制后大概率报 Could not find first log file name in binary log index file 或直接跳过大量事务。前者是因为没记录主库当前 binlog 文件名和偏移,后者是因为事务不一致导致 GTID 或 position 复制断裂。实操建议:--single-transaction 保证 InnoDB 表一致性快照(但对 MyISAM 无效,所以务必确认表引擎)--master-data=2 把 CHANGE MASTER TO 所需的 MASTER_LOG_FILE 和 MASTER_LOG_POS 作为注释写在 dump 文件开头如果主库开了 GTID,还要额外加 --set-gtid-purged=ON(默认值),否则从库导入后可能因 GTID 集合为空而拒绝启动复制避免用 --all-databases 导出:它会把 mysql 系统库也 dump 进来,而其中的 gtid_executed、slave_master_info 等表在从库上不能直接覆盖,容易引发冲突从库导入前要先关掉复制线程并清空旧数据很多人 dump 导入后直接 start slave,结果报 Slave has more GTIDs than the master 或主键冲突。根本原因是:旧从库可能已有部分数据,或残留了之前复制状态,和新 dump 的起始点打架。正确做法是彻底重置:执行 STOP SLAVE;,再 RESET SLAVE ALL;(注意不是 RESET SLAVE,后者不删 master.info 文件)删除从库所有业务库(DROP DATABASE),不要用 TRUNCATE 或 DELETE ------ 它们不重置 auto_increment、不清理索引统计,且无法处理新增表导入前确认从库 server_id 已改且唯一,否则主库 binlog 里会漏记该从库的事件导入命令别用 source,用 mysql -u root -p ,避免客户端缓冲区溢出或字符集错乱导入完成后必须手动执行 CHANGE MASTER TO 再 start slavedump 文件里的 CHANGE MASTER TO 注释只是参考,不能直接依赖。因为 dump 时间和实际导入完成时间之间存在延迟,主库 binlog 可能已滚动;更关键的是,如果你用的是 GTID 复制模式,这行语句根本无效,必须用 SET GLOBAL gtid_slave_pos = 'xxx' 替代。 Trenz AI驱动的社交电商营销平台,专为TikTok Shop设计
相关推荐
小徐学编程-zZ21 小时前
量产测试数据QQ80578065121 小时前
django基于机器学习的电商评论情感分析系统设计实现wx090921 小时前
stata实现机器学习的环境配置小短腿的代码世界21 小时前
Qt 股票订单撮合引擎:高频交易系统的核心心脏JosieBook1 天前
【数据库】时序数据库选型指南:从数据模型到大模型智能分析小猿姐1 天前
Clickhouse Kubernetes Operator 实测:哪种方案更适合生产?nuowenyadelunwen1 天前
CS 61A Lab 2 笔记:短路求值、高阶函数与 Lambda 表达式2501_921939261 天前
MHA高可用_Evan_Yao1 天前
MySQL 基础:SELECT、WHERE、JOIN 的第一次使用qq_422828621 天前
android图形学之SurfaceControl和Surface的关系 五