--source-data 是什么
这个选项让 mysqldump 把备份开始时刻的 binlog 坐标写进备份文件:取值为 2 时以注释形式记录,取值为 1 时生成可直接执行的位点设置语句。它的意义是把备份与 binlog 衔接起来——用备份加载数据、再用后续 binlog 重放,就能实现时间点恢复,也是搭建从库时确定起点的标准做法。
基本信息
| 取值含义 | 2 注释形式(推荐);1 可执行语句 |
|---|---|
| 所需权限 | RELOAD(旧版本用 SUPER) |
| 前置条件 | 主库必须开启 binlog |
| 选项旧名 | MySQL 8.0.26 之前叫 --master-data |
| 搭配选项 | --single-transaction 保证一致性快照 |
典型使用场景
- 搭建从库:从备份头部的位点或 GTID 集合开始复制
- 时间点恢复:备份加载后重放指定时间段的 binlog
- 备份归档:记录位点便于日后核对备份覆盖范围
- 迁移实例:迁移完成后以记录的位点建立复制关系
- 备份校验:确认备份文件确实包含位点信息
- 恢复演练:验证从备份到目标时间点的完整流程
备份并查看位点
备份并查看位点
mysqldump -uroot -p --single-transaction --source-data=2 \
--databases appdb > appdb.sql
# 查看备份头部记录的位点信息
grep -n -E 'CHANGE REPLICATION SOURCE|SOURCE_LOG_FILE|SOURCE_LOG_POS|GTID_PURGED' appdb.sql | head
# GTID 环境下会记录 gtid_executed 集合
# 恢复后建立复制:
# CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.10', SOURCE_AUTO_POSITION=1, SOURCE_USER='repl';
# START REPLICA; SHOW REPLICA STATUS\G取值与输出含义
| 取值 | 输出形式 | 使用注意 |
|---|---|---|
| --source-data=2 | 行首注释,含 binlog 文件与位点 | 默认推荐,便于人工查看 |
| --source-data=1 | 生成可执行语句 | 导入即改位点,别误导入生产 |
| 不指定 | 不记录位点 | 只能做全量恢复,无法衔接 binlog |
| GTID 环境 | 记录 gtid_executed 集合 | 重建从库时配合 gtid_purged |
--source-data=1 生成可执行语句,导入即改位点;只给建从库用,别误导入生产实例。
GTID 环境下备份头部记录的是 gtid_executed 集合,恢复后用 SET GLOBAL gtid_purged 把该集合标记为已执行,复制才能从正确位置继续。
备份文件里的位点只代表备份开始时刻,导入过程持续期间产生的新写入需要靠 binlog 补上;恢复后先确认记录到的位点或 GTID 集合,再启动复制,避免重复回放。