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设计
相关推荐
Flynt3 分钟前
Astra 自主跑了 35 小时烧掉 40 亿 token,产出为零:我给 Agent 加了三道闸robottt6664 分钟前
2026国产协作机器人排名与选型指南:越疆、遨博、节卡、珞石解析mldong6 分钟前
Python 开发者也有自己的轻量工作流引擎了:pip install 一行,5 分钟跑通一条审批流郑州光合科技余经理12 分钟前
本地生活系统:多业务订单字段怎么分账本导出weixin199701080161 小时前
《跨境二手ERP的3种对接模式:自研API / SaaS中间件 / 平台认证服务商,怎么选?》(附Python源码)B2_Proxy1 小时前
Python 爬虫代理中间件开发:统一处理 403、429 与自动重试机制学代码的CJY1 小时前
Python序列类型详解529宝宝起名网1 小时前
用 Python 爬取古籍文献中的名字用例数据库:从二十四史到诗词文集的历史名字采集与分析weixin_460443563 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计风哥2号3 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战