mysqldump 对象与 GTID 选项是什么
默认导出只覆盖表与数据,存储过程、函数、事件与触发器需要显式声明才会包含;而是否写入全局事务标识语句,取决于产物要导入到哪里。这两组选项决定了备份的完整性以及能不能顺畅地恢复到目标实例,属于生产脚本的必备项。
常用补充选项
| 选项 | 作用 |
|---|---|
| 存储程序 | 导出存储过程与函数 |
| 事件 | 导出事件调度器对象 |
| 触发器 | 导出触发器,默认已含,显式写出更清晰 |
| 全局事务标识 | 控制产物是否携带标识语句,按目标环境选择 |
| 二进制输出 | 二进制列以十六进制输出,规避字符集问题 |
基本信息
| 默认行为 | 只导出表结构、数据与触发器 |
|---|---|
| 易漏对象 | 存储过程、函数与事件调度器对象 |
| 标识语句 | 导入到已有数据的实例时需要谨慎处理 |
| 授权对象 | 账号与权限不随单库备份导出,需单独处理 |
完整对象导出
完整对象导出
mysqldump -u root -p --single-transaction --set-gtid-purged=OFF \
--routines --events --triggers --databases appdb > appdb-full.sql
# 含二进制列时加上十六进制输出
mysqldump -u root -p --hex-blob --databases appdb > appdb-blob.sql使用要点
- 按目标环境选择标识语句的处理方式,混用会让导入在中途报错
- 存储程序与事件要显式导出,否则恢复后依赖它们的定时任务与接口会失效
- 含二进制列的表加上十六进制输出,避免字符集转换造成数据损坏
- 账号与授权单独备份并优先恢复,避免导入数据时权限不足
- 导出后核对对象数量:表、过程、事件与触发器都要与源端一致
把带全局事务标识信息的产物导入到已有数据的实例可能直接报错,需按目标环境选择是否写入标识语句。
易漏对象检查单
- 存储过程与函数:业务逻辑常写在这里,漏掉会导致接口报错
- 事件调度器对象:定时任务依赖它们,恢复后不生效很难排查
- 触发器:影响写入行为,缺失会造成数据校验规则失效
- 账号与授权:不随单库备份导出,需要单独备份并优先恢复