開発運用

Percona XtraBackupによるMySQLバックアップ

Percona XtraBackupを使用してMySQLデータベースのホットバックアップを作成する方法について、以下に完全かつ包括的に説明します。この記事では、Ubuntu上でのインストール、設定、バックアップ作成手順を詳細に解説します。

1. はじめに

MySQLデータベースのバックアップは、データの損失を防ぐために非常に重要です。特に、運用中のデータベースのバックアップをダウンタイムなしで取得する必要がある場合、Percona XtraBackup(PXB)は非常に有用です。Percona XtraBackupは、MySQLのフルバックアップおよび増分バックアップを高速に取得できるツールで、オンラインバックアップを提供します。これにより、バックアップ中でもデータベースを使用することができます。

2. Percona XtraBackupのインストール

Percona XtraBackupは、Ubuntuの公式リポジトリには含まれていないため、Perconaの公式リポジトリからインストールする必要があります。以下の手順に従ってインストールを行います。

ステップ1: Perconaリポジトリの追加

まず、PerconaのリポジトリをUbuntuに追加します。以下のコマンドを実行します。

bash
sudo apt-get update sudo apt-get install wget lsb-release wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb

次に、Perconaのリポジトリを有効にします。

bash
sudo percona-release enable original release sudo apt-get update

ステップ2: Percona XtraBackupのインストール

リポジトリが設定されたら、次にPercona XtraBackupをインストールします。

bash
sudo apt-get install percona-xtrabackup-24

これで、Percona XtraBackupがインストールされました。

3. バックアップの準備

バックアップを作成する前に、いくつかの設定が必要です。MySQLサーバーが起動している状態で、バックアップを取得できます。

ステップ1: MySQLの設定確認

まず、MySQLの設定が適切であることを確認します。innodb_flush_log_at_trx_commitsync_binlogなどの設定は、バックアップの一貫性に影響を与える可能性があるため、バックアップ前に確認します。通常、以下の設定が推奨されます。

bash
[mysqld] innodb_flush_log_at_trx_commit = 1 sync_binlog = 1

これらの設定を確認するには、MySQLに接続して、以下のクエリを実行します。

sql
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit'; SHOW VARIABLES LIKE 'sync_binlog';

ステップ2: バックアップ用ディレクトリの作成

バックアップファイルを保存するために、ディレクトリを作成します。例えば、/var/backups/mysqlというディレクトリを作成する場合、以下のコマンドを実行します。

bash
sudo mkdir -p /var/backups/mysql sudo chown mysql:mysql /var/backups/mysql

4. ホットバックアップの作成

Percona XtraBackupを使用してホットバックアップを作成するには、以下のコマンドを実行します。

bash
sudo xtrabackup --backup --target-dir=/var/backups/mysql

ここで、--backupオプションはバックアップモードを指定し、--target-dirオプションでバックアップ先のディレクトリを指定します。このコマンドを実行すると、データベースのバックアップが/var/backups/mysqlディレクトリに作成されます。

バックアップが完了したら、以下のようなメッセージが表示されます。

bash
xtrabackup: Transaction log start is: 'xxx' xtrabackup: Transaction log end is: 'xxx'

5. バックアップの準備完了

バックアップが作成された後、バックアップを復元可能な状態にするために、xtrabackupは追加の操作が必要です。具体的には、ログファイルの適用を行います。以下のコマンドで、バックアップディレクトリ内のログを適用します。

bash
sudo xtrabackup --prepare --target-dir=/var/backups/mysql

これにより、バックアップデータが完全な状態になります。

6. バックアップの復元

バックアップが完了した後、データベースを復元する手順について説明します。

ステップ1: MySQLサービスを停止

まず、MySQLサービスを停止します。

bash
sudo systemctl stop mysql

ステップ2: バックアップデータの復元

バックアップデータをMySQLデータディレクトリにコピーします。

bash
sudo rm -rf /var/lib/mysql/* sudo cp -r /var/backups/mysql/* /var/lib/mysql/

ステップ3: MySQLサービスの再起動

バックアップデータの復元が完了したら、MySQLサービスを再起動します。

bash
sudo systemctl start mysql

7. 増分バックアップ

Percona XtraBackupでは、増分バックアップもサポートしています。増分バックアップを作成するには、まず最初にフルバックアップを取得し、その後、変更された部分だけをバックアップします。増分バックアップを作成するためには、次のコマンドを実行します。

bash
sudo xtrabackup --backup --target-dir=/var/backups/mysql_increment --incremental-basedir=/var/backups/mysql

--incremental-basedirオプションで、前回のバックアップディレクトリを指定します。増分バックアップを取得した後、フルバックアップと同様に復元することができます。

8. 定期的なバックアップスケジュールの設定

Percona XtraBackupを定期的に実行するには、cronを使用してバックアップスケジュールを設定します。以下のようにcrontabを設定します。

bash
sudo crontab -e

例えば、毎日午前2時にバックアップを実行するには、次のように設定します。

bash
0 2 * * * /usr/bin/xtrabackup --backup --target-dir=/var/backups/mysql

9. 結論

Percona XtraBackupを使用することで、MySQLデータベースのホットバックアップを簡単に取得することができます。オンラインバックアップをサポートしているため、データベースの可用性を確保しながら、バックアップ作業を進めることができます。定期的なバックアップと増分バックアップの組み合わせを活用することで、データの保護を強化できます。

Percona XtraBackupは非常に強力で柔軟なツールであり、MySQLを使用する多くのシステムにおいて有用です。バックアップと復元のプロセスをしっかりと理解し、適切なバックアップ戦略を立てることが重要です。

Back to top button