DBAtlas · データベース運用アトラス

MySQL Shellによるパラレルダンプ/ロード(util.dumpInstance、loadDump)

MySQLバックアップとPITR

コマンド

# Parallel, zstd-compressed, consistent instance dump
mysqlsh backup@db1:3306 -- util dump-instance /backup/dump_20261008 --threads=8 --compression=zstd --consistent=true
# Single schema
mysqlsh backup@db1:3306 -- util dump-schemas shop --outputUrl=/backup/shop_20261008 --threads=8

# Load: local_infile must be temporarily ON on the target
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = ON"
mysqlsh root@db2:3306 -- util load-dump /backup/dump_20261008 --threads=8 --skipBinlog=false
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = OFF"

概要

表をチャンクに分割し、多数のスレッドでダンプ/ロードする。ダンプとリストアのどちらもmysqldumpより何倍も高速。ダンプディレクトリはGTIDとbinlogの座標を@.jsonに格納する。

使用する場面

数百GBの論理バックアップ、アップグレード時の論理移行、オンプレミス → クラウド(RDS、HeatWave)への移行に。

注意

--consistent=trueは短時間のグローバル読み取りロック/バックアップロックを取得する。長いクエリが実行中だと書き込みが待機する。loadDumpはLOAD DATA LOCALを使用するため、ターゲットにはlocal_infile=ONが必要で、その後は無効にすべきである。中断したロードは停止した箇所から再開する(進捗ファイル)。最初からやり直すには--resetProgressを使用する。ユーザーアカウントはデフォルトではロードされない(--loadUsers=true)。--skipBinlog=trueはロード中のbinlog記録を無効にする。ターゲットにレプリカがある場合はfalseのままにする。

DBAtlas で開く →

関連項目