MySQL道普請便り

第59回 Percona XtraBackupを使ってみよう

この記事を読むのに必要な時間:およそ 3 分

リストアする

続いて,先程取得したバックアップを基にリストアしてみましょう。リストア先のMySQLが起動している場合は停止して,リカバリ作業とファイルの配置作業を実施します。

リカバリ

まずは,prepareオプションを使用してリカバリ作業が必要です。これは,前述にあるInnoDBログファイルの更新情報をibdファイルに適用して,一貫性のあるデータベースにすることです。

# xtrabackup --prepare --target-dir=/backup
  • target-dirオプションにバックアップディレクトリを指定します。
  • 正常終了後はcompleted OK!が出力されます。

ファイルの配置

その後,リストアします。リストアは,バックアップファイルを指定したMySQLのデータディレクトリに配置する作業です。copy-backmove-backオプションが存在します。

  • copy-backは以前作成したバックアップ内のすべてのファイルをバックアップディレクトリから元の場所にコピーします
  • move-backは以前作成したバックアップのすべてのファイルをバックアップディレクトリから元の場所に移動しますバックアップファイルはすべて削除されます。

今回はcopy-backを使用します。

xtrabackup --copy-back --target-dir=/backup  --datadir=/var/lib/mysql
  • target-dirオプションにバックアップディレクトリを指定します。
  • datadirオプションにMySQLのデータディレクトリを指定します。指定したディレクトリは空である必要があります。
  • 正常終了後はcompleted OK!が出力されます。

最後に,chownコマンドでデータディレクトリ配下をmysqlユーザに変更します。

# chown -R mysql:mysql /var/lib/mysql

MySQLを起動してリストア完了となります。

Percona XtraBackupのバージョンによる違い

PXBは,バージョンによってバックアップを取得できるMySQLのバージョンが異なります。公式ドキュメント上には以下のようになっています。

MySQL バージョンPXB2.0PXB2.1PXB2.2PXB2.3PXB2.4
5.0××××
5.1 + builtin InnoDB××××
5.1 + InnoDB plugin×
5.5
5.6
5.7××××
  • MySQL5.0 と 5.1 + builtin InnoDB はPXB2.0のみサポートしています。
  • MySQL5.1 + InnoDB plugin は最新のPXB2.4ではなくPXB2.3である必要があります。
  • MySQL5.7 は 最新のPXB2.4のみサポートしています。

PXB2.3をインストールするには前述のpercona-xtrabackup-24percona-xtrabackup-23と変更してください。

また,yumレポジトリからはPXB2.2以降がインストール可能なため,PXB2.0が必要な場合は Download Percona XtraBackup のversionから選択してダウンロードする必要があります。

また,PXB2.2とPXB2.3の間には大きな変化があります。PXB2.2とそれ以前では,トランザクション対応/非対応のストレージエンジンが混在しているMySQLに対してバックアップを取得する際に,innobackupexコマンドというxtrabackupコマンドをラップしたコマンドが用意されていて,それを使用しなければなりません。

PXB2.3とそれ以降は,xtrabackupコマンドがinnobackupexのすべて機能をサポートするようになりました。innobackupexコマンドは今後廃止される予定です。

まとめ

今回はオンラインでのバックアップ取得ツール Percona XtraBackupについて紹介しました。ここでは紹介しきれない様々オプションがPXBには存在します。公式ドキュメントをよく読んで,いろいろと試してみてください。

著者プロフィール

北川健太郎(きたがわけんたろう)

LINE株式会社所属のデータベースエンジニア。担当はMySQLとOracle Database。好きなMySQLの機能はレプリケーションで,好きなOracleDatabaseの機能はログオントリガー。

Twitter:@keny_lala