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までのデータベース、スキーマ/表の移動、バージョン間の論理移行に。

注意

--single-transactionはInnoDBに対してのみ一貫性がある。MyISAM表は不整合な状態で出力される。ダンプ中に表でDDL(ALTER / RENAME / TRUNCATE)が実行されると、ダンプは失敗するかその表が欠落する。--source-data / --set-gtid-purgedは開始時に短時間のグローバル読み取りロックを取得する(RELOAD権限が必要)。その時点で長いクエリが実行中だと、ロック待機の間すべての書き込みが停止する。部分ダンプ(--databases)でもすべてのGTIDが書き込まれるため、一部を別サーバーに移す場合は--set-gtid-purged=OFFを使用する。ダンプはシングルスレッドであり、大規模データにはMySQL ShellのダンプまたはXtraBackupを推奨する。

DBAtlas で開く →

関連項目