使用 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。