结构同步前必须强制备份,因其会执行drop、alter等高危操作;推荐用navicat「备份」功能导出全库(含视图、存储过程等),生成.nbu文件;若用sql备份,须显式设字符集utf8mb4及排序规则utf8mb4_general_ci,并验证源目标库一致性。
结构同步前必须做备份,否则可能丢数据
结构同步不是只读操作,它会直接执行 drop、alter、create 等语句修改目标库。一旦出错(比如外键依赖顺序错、字符集不兼容、权限不足),轻则同步中断,重则删表或破坏约束。所以同步前备份不是建议,是强制动作。
用 Navicat 备份功能导出全库结构+数据最稳妥
别只导出结构或只右键“转储为 SQL”——那些方式容易漏掉视图、存储过程、事件、函数等对象。Navicat 自带的「备份」功能能覆盖全部数据库实体。
- 点击顶部工具栏
备份图标 →新建备份 - 选择目标数据库(如
mall-prod),勾选「备份所有对象」(默认已选) - 格式选
NA(Navicat 专有格式),它比纯 SQL 更可靠:支持压缩、校验、增量还原,且保留原始字符集和排序规则 - 设置保存路径,点
开始。完成后会生成一个.nbu文件,这就是可一键还原的完整快照
如果必须用 SQL 文件备份,注意三个关键点
某些 CI/CD 流程要求纯 SQL,但直接用「导出向导」容易踩坑。尤其要注意字符集和排序规则兼容性。
- 导出时务必在「导出设置」页勾选
DDL和数据(这次要勾!),格式选SQL - 在「高级」选项里,把
字符集显式设为utf8mb4,排序规则设为utf8mb4_general_ci(避开utf8mb4_0900_ai_ci这类 MySQL 8.0+ 特有规则,否则在旧版本目标库会报错[Err] 1273 - Unknown collation) - 导出前手动执行
SHOW CREATE DATABASE `mall-prod`;,确认源库默认字符集与目标库一致;不一致就先在目标库执行ALTER DATABASE `mall-prod` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
结构同步时别跳过「预览」和「部署选项」
即使做了备份,也别跳过同步流程里的安全检查环节。很多误操作其实卡在这两步。
- 比对完后,一定点开
DDL比较选项卡,逐个看「+」「-」「→」符号对应的对象,确认没有意外的DROP TABLE或TRUNCATE - 进入「部署脚本」页后,点
部署选项→ 勾选遇到错误时继续(防止单条语句失败导致后续建表中断) - 点击
在查询编辑器打开脚本,手动搜索关键词DROP、FOREIGN KEY、ENGINE=,检查是否有高危操作或引擎不一致(比如源是InnoDB,目标被误写成MyISAM)
真正危险的不是同步本身,而是把备份当成形式主义——存了 .nbu 文件却没验证能否还原,或者导出 SQL 后没核对字符集就扔进生产库。同步前花三分钟验证备份有效性,远比事后抢救强。











