スマートスタイル TECH BLOG

Mariabackup による MariaDB Server のバックアップ/リストア

本記事はMariaDB Corporationより寄稿された記事となります

はじめに

MariaDB Server 10.1 で以下の機能が実装されたため,

MariaDB Server 10.1 以降 Percona XtraBackup との互換性が失われています。

この対策として,MariaDB Server 10.1.23 / 10.2.7 以降,XtraBackup を fork した Mariabackup が利用可能となっています。
本記事では Mariabackup に関してご説明いたします。

Mariabackup 概要

Mariabackup では以下の機能がサポートされています。

Mariabackup と XtraBackup の違い

Mariabackup は XtraBackup を fork しているため機能的にはほぼ同等ですが,Mariabackup と XtraBackup には以下のような違いがあります。

  • Percona XtraBackup は InnoDB redo log ファイルを xtrabackup_logfile にコピーするが, Mariabackup は ib_logfile0 を用いる。
  • XtraBackup の encrypted backup は Mariabackup でサポートされない。
  • mariabackup から innobackupex, への symbolic link はない。
  • --compact ,  --rebuild_indexes オプションはサポートされない。
  • --stream=tar オプションはサポートされない。
  • xbstream  は mbstream に名称変更されている。

最新の MariaDB Server に対して XtraBackup を利用することの問題点

MariaDB Server 10.3 を利用し,以下のように XtraBackup によってバックアップを行おうとすると,エラーとなります。

XtraBackup は MariaDB Server 10.3 の redo log をサポートしません(ここで,XtraBackup は古いバージョンのため,innobackupex コマンドを用いています)。
これに対して Mariabackup は新しい redo log フォーマットに対応しています。

Mariabackup を用いたバックアップ/リストア

テスト環境として以下の2台の MariaDB Server を用意し,古いバージョンの MariaDB Server 上でバックアップを実施,新しいバージョンの MariaDB server 上でリストアを行ってみます。

  • MariaDB Server 10.2.22 (バックアップ元) / CentOS 7
  • MariaDB Server 10.3.13 (リストア先) / CentOS 7

なお,mariababckup を利用するには,以下のRPMパッケージをインストールする必要があります。

MariaDB Server 10.2 におけるバックアップ

データのバックアップ先(target dir)として,/tmp/backup を指定し,mariabackup によるバックアップを実行します。
なお,バックアップ元のサーバには,事前に A sample MySQL database から clone したデータがインポート済です。

/tmp/backup にデータがバックアップされますので,

tar + gzip 等でアーカイブし,リストア先サーバへコピーします。

MariaDB Server 10.3 へのリストア

リストア先のサーバでは,datadir システム変数(デフォルト値: /var/lib/mysql)で示されるデータディレクトリにあるデータを事前に削除しておく必要があります。datadir にデータが存在する場合,以下のようなエラーが発生します。

バックアップ元からコピーしたデータを target dir に展開し,datadir にあるデータを削除します。

実際のリストアの前に --prepare オプションによりデータの一貫性のチェックを行います。

最後に completed OK! と表示されていれば問題ありません。

ここで,--copy-back オプションを付与して mariabackup を実行し,データをリストアします。

バックアップ時は 2.3秒 ほど時間がかかっていましたが,リストアは 0.7 秒 ほどで完了しています。
リストアした直後はデータファイル/ディレクトリの owner が mariabackup を実行したユーザになっていますので,mysql:mysql に変更し,mariadb service を起動します。

リストアしたデータの確認

A sample MySQL database の test_employees_sha.sql を用いてバックアップしたデータが正常にリストアされているか確認します。
なお,test_employees_sha.sql は BLACKHOLE ストレージエンジンを用いていますので,双方の MariaDB Server 上で

を実行し,BLACKHOLE を利用可能にしておく必要があります。

バックアップ元での確認

まず,test_db ディレクトリにて,employees データベースに対して test_employees_sha.sql を実行します。

すべてのテーブルのレコード数,チェックサムが一致しています。

リストア先での確認

同様にリストア先でもレコード数,チェックサムの確認を実施します。

正常にリストアされていることが確認できました。

まとめ

Percona XtraBackup から fork された MariaDB Server 用バックアップツール,Mariabackup の基本的な利用方法について解説させて頂きました。
なお,MariaDB ColumnStore 用の columnstoreBackup / columnstoreRestore に関しましては,BSL 1.1 でライセンスされていますので,ご留意願います。


執筆者情報

後藤 智(GOTO Satoru)
2017年6月よりMariaDB Corporation AbにてAPAC(Asia Pacific)地域におけるプリセールス業務を主に担当。現在は主に日本を担当。
この執筆者の他の記事をよむ
Return Top