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设计
相关推荐
Patrick在香港4 分钟前
MCP 的 initialize 握手真的没了?67 行标准库实测 2026-07-28 规范jason.zeng@15022074 分钟前
canal做mysql的异步传输工具vx_Biye_Design6 分钟前
springboot角色扮演服务平台65161-计算机课程设计、毕业设计追烽少年x9 分钟前
从零构建一个3D点云预览器:Python + PySide6 + pyqtgraph 实战Ivanqhz10 分钟前
BURG(自底向上重写生成器)仍然.14 分钟前
Redis---主从复制weixin_4404016922 分钟前
质朴的爬虫+数据处理估值探索者24 分钟前
【Python量化系统工程实战 #01】数据存储选型 CSVSQLiteMySQL 对比与 SQLite 实战建库其实防守也摸鱼26 分钟前
网安自测题:掌握核心知识点的实用练习数字化顾问26 分钟前
(142页PPT)PLM+ERP系统选型及建设方案建议书(附下载方式)