Skip to content

スナップショットとダンプ復旧

ダンプに含まれるもの

ダンプは、MygramDB が索引化したデータ、設定の互換性メタデータ、レプリケーション位置をバイナリで保存した復旧用ファイルです。MySQL 自体のバックアップではありません。MySQL のバックアップと binlog は別に保持してください。

DUMP SAVE は常に現行のダンプ形式で書き出します。読み込み側は形式 1 と形式 2 を受け付けます。互換性メタデータの版が 1 のダンプも読み込めます。現行のメタデータには MySQL のソースサーバー UUID も記録されます。未対応の新しい形式は拒否されます。

ダンプを保存する

mygram
DUMP SAVE
DUMP SAVE /var/lib/mygramdb/dumps/before-maintenance.dmp

DUMP SAVE--with-stats オプションはありません。このフラグを含むコマンドは無効です。

保存時は一貫した GTID を記録するためにレプリケーションを停止してドレインし、終了後に再開します。検索は継続しますが、大きなダンプの保存中は MySQL への追従が遅れることがあります。SYNCDUMP LOADOPTIMIZE、定期スナップショットは同時に実行できません。

復元前に検証して確認する

mygram
DUMP VERIFY /var/lib/mygramdb/dumps/mygramdb.dmp
DUMP INFO /var/lib/mygramdb/dumps/mygramdb.dmp

DUMP VERIFY は稼働中のデータを変更せずにファイルとセクションの整合性を検証します。DUMP INFO は形式、GTID、テーブル数、フラグ、サイズ、作成時刻を表示します。手動復元の前に対象ファイルを検証してください。ただし、整合性が正しくても、現在の MySQL ソースに対応するファイルとは限りません。

形式 2 のダンプでは、検証時に CRC をストリーム処理し、dump.restore_max_section_mb を超えるセクションを拒否します。復元では、稼働中のテーブルを置き換える前に、dump.restore_memory_budget_mb の範囲でデータをステージングします。既定値は、エンコード済みセクションごとに 2048 MiB、合計ステージングメモリに 4096 MiB です。ホストの容量と信頼できる最大ダンプに合わせて両方を設定してください。上限による拒否は、無制限のメモリ確保からプロセスを守ります。

手動で復元する

mygram
DUMP VERIFY mygramdb.dmp
DUMP INFO mygramdb.dmp
DUMP LOAD mygramdb.dmp

DUMP LOAD は稼働中のインデックスとドキュメントストアを置き換えます。レプリケーションを停止し、置き換え前にダンプを検証し、読み込んだ GTID を設定して検索統計を再構築し、クエリキャッシュを消去してからレプリケーションを復帰させます。復元が成功すると、復元した全テーブルは初期化済みになります。ただしレプリケーションを再開できなければ、readiness は false のままです。

索引対象テーブルの互換性設定が異なるダンプ、設定済みソースと MySQL の host、port、database が異なるダンプ、記録されたソース UUID が実行中のソースと異なるダンプは拒否されます。実行中のソース UUID が分かる場合、UUID を記録していないダンプも拒否されます。空でないレプリケーション位置を、GTID を持たないダンプで置き換えることもできません。

起動時に復元する

dump.load_on_startup: true を設定すると、起動時に dump.dir/default_filename のファイルだけを復元します。

yaml
dump:
  dir: /var/lib/mygramdb/dumps
  default_filename: mygramdb.dmp
  load_on_startup: true
  restore_memory_budget_mb: 4096
  restore_max_section_mb: 2048

起動時には設定済み MySQL ソースを確認し、ダンプのテーブル互換性、host、port、database、ソース UUID、GTID を検証します。レプリケーションを有効にしている場合、起動時ダンプには GTID が必要です。成功するとダンプを復元してテーブルを初期化済みにし、ダンプの GTID からレプリケーションを開始して追従します。

既定ファイルがない、破損している、互換性がない、別のソースから作られた、または検証できない場合、MygramDB は起動時復元の失敗をログに残し、通常の MySQL 初期スナップショットへフォールバックします。この場合はダンプを調査してください。MySQL に全表読み取りの負荷がかかる可能性があります。

保持と保管

yaml
dump:
  interval_sec: 600
  retain: 3

定期ダンプには時刻付きの名前が付き、保持数はこの自動作成ファイルにだけ適用されます。手動の DUMP SAVE ファイルは保持処理で削除されません。ダンプには索引化した内容と接続メタデータが含まれるため、アクセスを制限し、保護されたストレージに置き、隔離環境で復元を試してください。

トラブルシューティング

状況対処
CRC 不一致または切り詰めエラー読み込まないでください。別の検証済みコピーを使い、保存先や転送経路を調べます。
未対応の形式その形式を読める MygramDB を使うか、互換性のあるダンプを選びます。
ソースまたは UUID が不一致強制しないでください。設定済みソースのダンプを使うか、復旧前に意図的に設定を変更して再起動します。
復元上限を超えたファイルを検証し、十分なメモリを用意してから設定上限を上げます。
復元成功後も readiness が false/health/ready または INFO のレプリケーションエラーを確認します。データは入っていますが、レプリケーションの修復が必要です。

関連項目