4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQL8.0.17でバックアップしてMySQL8.4.4へリストアするのにかかる所要時間

Last updated at Posted at 2025-05-19

概要

MySQL8.0がEOLになり、弊社で運用しているサービスのMySQLもリプレイスすることになりました。その中でも特に時間のかかる部分について実際にかかった時間やパラメータを踏まえて記事にしてみました。
特にバックアップやリストアにかかる時間などデータベースの運用に関わる人は気になるところかもしれません。

対象マシン

あまり興味がなく、以下のざっくりした情報だけです。多分ハード好きな同僚から細かくスペック情報が来ると思うので、その時に更新します。

  • CPU:128スレッド
  • メモリ:約1TB
  • 1GBイーサネット環境

バックアップとリストアのパターンその1(圧縮なし)

  • PerconaXtrabackup8.0を利用してバックアップします。バックアップ時のdataディレクトリのサイズは1.4TBです
  • リストア先のマシン(MySQL8.4)でリストアします
  • 圧縮なしだと4時間30分ほどかけてバックアップとリストアが完了します

バックアップその1(約4時間15分)

  • PerconaXtrabackup8.0でバックアップします
  • 以下ストリーミングでバックアップします
time sudo xtrabackup \
  --backup \
  --user=root \
  --socket=/opt/mysql-data/mysql.sock \
  --parallel=16 \
  --slave-info \
  --stream=xbstream | nc [転送先] 9999
  • 所要時間: 約4時間15分

  • 特記事項:

    • 並列処理数(--parallel=16)を指定
    • ストリーミング(--stream=xbstream)形式で取得し、そのままネットワーク経由で送信
    • リモート転送時間を含む全体の実行時間

リストア

  • PerconaXtrabackup8.0でリストアします

リストア前処理の時間

prepare(約1分15秒)

  • バックアップから InnoDB の整合性を復元する処理です
time sudo xtrabackup --prepare --parallel=32 --target-dir=/opt/xxx_backup
  • 所要時間: 約1分15秒

copy-back(約6分)

  • バックアップデータを MySQL のデータディレクトリへ復元
time sudo xtrabackup --copy-back --parallel=32 --target-dir=/opt/xxx_backup
  • 所要時間: 約6分

バックアップとリストアのパターンその2(圧縮あり)

  • 圧縮ありだとdataディレクトリが1.4TBであっても90分ほどでバックアップとリストアが完了します

バックアップ

  • PerconaXtrabackup8.0でバックアップします
time sudo xtrabackup \
  --backup \
  --user=root \
  --socket=/opt/mysql-data/mysql.sock \
  --parallel=16 \
  --slave-info \
  --compress \
  --stream=xbstream | nc [転送先] 9999
  • 所要時間: 約58分

  • 特記事項:

    • 並列処理数(--parallel=16)を指定
    • ストリーミング(--stream=xbstream)形式で取得し、そのままネットワーク経由で送信
    • リモート転送時間を含む全体の実行時間
    • --compressオプションで圧縮しています。

リストア

  • PerconaXtrabackup8.0でリストアします
  • リストア時には--compressオプションによる圧縮を解凍する必要があります

解凍処理(約8分)

  • 圧縮転送されたファイルを解凍してxtrabackupで利用できる形式に戻す作業です
time sudo find /opt/xxx_backup -type f -print0 | xargs -0 -n1 -P$(nproc) zstd -d --rm
  • 所要時間: 約7分47秒

prepare(約1分54秒)

  • バックアップから InnoDB の整合性を復元する処理になります
time sudo xtrabackup --prepare --parallel=24 --target-dir=/opt/xxx_backup
  • 所要時間: 約1分54秒
  • 32スレッドから24スレッドにしたところ、prepare時間は伸びました

copy-back(約6分)

  • バックアップデータを MySQL のデータディレクトリへ復元する処理です
time sudo xtrabackup --copy-back --parallel=32 --target-dir=/opt/xxx_backup
  • 所要時間: 約6分
  • スレッド数を変えずに処理すると概ね10秒以内の誤差でした

まとめ

  • --parallelオプションについてはストレージやネットワークの制限を大きく受ける印象でした(スレッド増やしても頭打ちになる)。ただし--compressオプションを利用した場合にはCPUも回っていました。圧縮ってちゃんと計算してるんだなっていうのが目に見えて面白いです
  • --parallelオプションを増やしすぎると同居してるMySQLで使えるスレッドが減るため注意してください
  • 物理バックアップでは、xtrabackupが最も使い勝手が良かったため利用しています
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?