Percona XtraBackup mysqldumpリストア時間比較 おまけでロールフォワード

ホーム > 業務日誌 > スタッフ別 > > Percona XtraBackup mysqldumpリストア時間比較 おまけでロールフォワード

xtrabackup

MySQLのリストアがめっちゃ速いXtraBackupのご紹介です。

MySQLの運用としてmysqldumpはバックアップは良いものの、リストア時はとても遅くなり問題になります。不安になってきた方は1度検証環境で現在のデータをリストアして復旧時間を計測してみると面白いかもしれません。

システムの要件や規模によりますが、秒単位で利益が発生しすぐに復旧する必要があるWEBサービス、データ容量が多くなってきた場合は、XtraBackupに切り替えた方が良いでしょう。また逆に、業務が発生していない夜間や早朝は止めて良くて、データ量も少ないシステムならmysqldumpで十分です。

 

環境

  • 1CPU 3.30GHz
  • メモリ8GB
  • バックアップ対象DB容量:3.5GB
  • CentOS7

 

 

先に結論

mysqldumpがSQLに対して、xtrabackupは解凍なので当たり前っちゃ当たり前ですが恐ろしい差がでますね。レプリケーションとかしているとリストアしている間の時間はシビアなので速いにこしたことはないのです。

 

 

MySQLで普通にmysqldumpする

 

普通にmysqldumpします。

48秒で出来ました。

 

リストア

3分23秒

 

Xtrabackupのインストール

 

 

バックアップディレクトリの作成

 

バックアップ

29秒

 

 

 

いきなり!ロールフォワード

XtrraBackupがめちゃ速!という結論は出ていますし、会社記事作成用とはいえ、せっかくDBのバックアップとリストアする作業を設けたので、ロールフォワードの訓練もしておくことにします。

 

ロールフォワード(前進復帰)

例えば、夕方17時に障害が発生し、朝5時にバックアップした復旧ポイントにデータをリストアすることをロールバック。ロールバックした地点から夕方17時まで、更新処理を改めて行うことで復旧することをロールフォワードといいます。

 

 

ロールフォワードのシナリオ

  1. データ入力する作業中に誤ってデータの削除をしてしまっている事に後で気付いた!
  2. そこでロールバック&ロールフォワードによる復旧!

茶番にお付き合い下さい。

 

 

大切なデータの追加1

 

大切なデータの追加2

 

大切なデータの追加3

 

 

…!!!

サンプルデータの追加したと思ったら消してしまっています。

大変ですね。

 

 

緊急メンテナンスモードにしましょう。

サンプルデータの追加2をなかったことにしつつ、追加1と追加3は反映させた状態で復旧させなくてはいけません。

メンテナンスモードにして復旧するというシナリオです。

 

 

リストア

MySQLを止めます。

 

旧ファイル退避。mysql.oldにバイナリログも退避される

 

バックアップディレクトリの確認

 

バイナリのポジションの把握

mysql-bin.000001のファイルの154から見ればいいことがわかります。

 

リストアします。

25秒。

速いですね!

 

感動している場合じゃありません、復旧しなければ!!

 

binlogの具合を見てみよう。

わけがわからない。文字が多すぎですよね。事前知識がないと意味わからんです。

 

書いてある内容の解説

ヒント1.  

バイナリポジションの把握から154から見ていけばいいことがわかっています。

 

ヒント2. 

#171129 19:26:25

上記は2017年11月29日19時26分25秒をあらわします。

 

ヒント3. 

# at 数字はファイルの場所を指定していると考えてください。ポジション310と629の間にINSERTのクエリがあることがわかります。

 

また、事故のクエリはDELETEです、DELETEで検索すれば良いかもしれません!

 

 

DELETEで前後5行を検索します。

あっいいですね。

ポジション1373と1501の間に問題のクエリがあることがわかります。

 

もしくは、事故った時間がわかれば話は早いです。

時間を指定することでそこの時点からファイルを参照することが出来ます。

 

 

 

復旧用クエリ抽出

事故ったクエリを迂回するように指定することで復旧用クエリを抽出することが出来ます。

 

 

MySQLの起動

 

復旧用クエリによるロールフォワード

 

データの確認

 

大丈夫そうですね。

 

無事復旧できましたね。

お疲れ様です。

 

金広 優(エンジニア)

この記事を書いた人:金広 優(エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM BlueMix InfrastructureやAWSなどクラウド案件が多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166