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设计
相关推荐
Csvn16 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定曲幽18 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了用户5569188175319 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录倔强的石头_21 小时前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测兵慌码乱1 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化aqi002 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能Csvn2 天前
`functools.lru_cache` —— 一行代码搞定缓存加速金銀銅鐵2 天前
[Python] 从《千字文》中随机挑选汉字