DBAtlas · 数据库运维图谱

使用 mysqldump 获取带 GTID 信息的一致性逻辑备份

MySQL备份与 PITR

命令

mysqldump -h db1 -u backup -p \
  --single-transaction --source-data=2 --set-gtid-purged=ON \
  --routines --events --triggers --hex-blob \
  --all-databases | gzip > /backup/full_$(date +%F_%H%M).sql.gz

# Restore: GTID sets must not overlap on the target
zcat /backup/full_2026-10-08_0200.sql.gz | mysql -h db2 -u root -p

作用

在单个一致性快照中导出 InnoDB 表,并在开头写入 binlog 文件/位置(作为注释)以及 SET @@GLOBAL.GTID_PURGED 语句,使该导出可用于初始化副本或作为基于 binlog 的 PITR 起点。

适用场景

用于数十 GB 以内的数据库、迁移 schema/表,以及版本之间的逻辑迁移。

注意

--single-transaction 只对 InnoDB 保证一致;MyISAM 表的导出是不一致的。导出期间对表执行 DDL(ALTER / RENAME / TRUNCATE)会使导出失败或遗漏该表。--source-data / --set-gtid-purged 在开始时会短暂获取全局读锁(需要 RELOAD 权限);如果此时有长查询在运行,锁等待期间所有写入都会停滞。部分导出(--databases)仍会写入所有 GTID;将子集迁移到另一台服务器时请使用 --set-gtid-purged=OFF。导出是单线程的;对于大数据量,优先使用 MySQL Shell dump 或 XtraBackup。

在 DBAtlas 中打开 →

相关内容