mariabackupでバックアップ・リストアする

目次

mariabackupとは

mysqldump は、データベースの中身を SQL 文としてダンプし、SQL 文としてリストアするため、大量データのバックアップ・リストアにかなりの時間を要することがあります。データによっては、ダンプは15分で終わるけど、リストアに数日かかるケースなんてのもあります。

SQL 文をダンプする代わりに、/var/lib/mysql などのデータディレクトリをファイルごと高速にバックアップするツールを、Perconna社が XtraBackup という名前で公開しています。

XtraBackup は MySQL 向けのツールですが、MariaDB では MySQL との互換性が一部失われてきていますので、MariaDB では、XtraBackup をベースとした mariabackup を開発し、MariaDB に同梱しています。

バックアップ

バックアップするには、--backup オプションを使用します。

# mariabackup --backup -u root -pパスワード --target-dir /tmp/backup

バックアップ中は FLUSH TABLES WITH READ LOCK で全テーブルがロックされます。--no-lock でロックしないようにできますが、自分で静止点を考慮する必要があります。

一貫性の確認

--prepare オプションで、バックアップデータの一貫性が保たれているかチェックすることができます。

# mariabackup --prepare --target-dir /tmp/backup
  :
191208 03:16:33 completed OK!

リストア

--copy-back オプションでリストアします。

# systemctl stop mariadb
# rm -rf /var/lib/mysql/*
# mariabackup --copy-back --target-dir /tmp/backup
# chown -R mysql:mysql /var/lib/mysql/*
# systemctl start mariadb

ロールフォワード

バイナリログが退避されていれば、障害発生直前の状態までロールフォワードすることが可能です。xtrabackup_binlog_info にバイナリログのファイル名とポジション番号が記録されています。手順は mysqldump を参照してください。

# cat /tmp/backup/xtrabackup_binlog_info
mariadb-bin.000005   389