DBマイグレーション、時間を先に知れば計画が立てられる
データベースマイグレーションはサービス規模が大きくなるほどリスクが高まる作業です。カラムを1つ追加するだけの単純なALTERはロック時間が短く、秒間数万件を処理できますが、既存データを変換・コピーするUPDATE・COPY作業はトランザクションログとディスクI/Oの負荷が大きくなり、速度が大きく落ちます。インデックスの再構築やテーブル全体の再作成が必要な場合はロック競合とリソース消費が最も大きいため、事前に所要時間を予測してダウンタイムの必要性を判断する工程が欠かせません。
このツールは総レコード数、マイグレーション種類別の処理速度、並列ワーカー数を基準に予想所要時間を計算します。実際の運用環境ではサーバー性能、ネットワーク遅延、他のクエリとのロック競合など変数が多いため、計算結果に10%の余裕バッファを加えて表示します。予想時間が1時間を超える場合は、アクセスが少ない深夜帯にスケジュールを組んだり、サービスメンテナンスの告知を準備しておくと安心です。
大規模テーブルを無停止で移行する必要がある場合は、gh-ostやpt-online-schema-changeなどのオンラインスキーマ変更ツールを検討してみてください。元のテーブルはそのままに、影テーブルへデータを複製してから原子的に入れ替える方式なので、サービスのダウンタイムを最小限に抑えられます。
よくある質問
並列ワーカー数を増やしたり、インデックスの再構築をマイグレーション後に回すなどバッチ処理を最適化すると時間を短縮できます。
gh-ostやpt-online-schema-changeなどのオンラインスキーマ変更ツールを使えば、サービスを止めずに大きなテーブルを移行できます。
はい。サーバー性能やロック競合、ネットワーク状況によって実際の所要時間は予測より長くなることがあるため、余裕を持って計画してください。