MySQL Backup · 1 min read · Dec 13, 2025

Ubuntu 16.04でPercona XtraBackupを使用してMySQLデータベースのホットバックアップを実行する

Percona XtraBackupはMySQL用のオープンソースバックアップユーティリティです。Percona Server、MariaDB、(Oracle) MySQLなど、すべてのMySQLフレーバーをサポートしています。Percona XtrabackupはMySQLのホットバックアップを実行します。ホットバックアップとは、ダウンタイムなしで実行中のMySQLサーバーのバックアップを作成することを意味します。

このチュートリアルでは、Ubuntu 16.04 (Xenial Xerus)上でオープンソースツールPercona XtraBackupを使用してホットMySQLデータベースバックアップを作成する方法を示します。バックアップを実行するためにMariaDBをデータベースサーバーとして使用しますが、同じセットアップはMySQLサーバーでも機能します。

前提条件

  • Ubuntuサーバー16.04 - (Xenial Xerus)
  • MySQLまたはMariaDBサーバー
  • ルート権限

ステップ1 - Percona XtraBackupをインストールする

最初のステップは、最新のPercona XtraBackupソフトウェアをUbuntuサーバーにインストールすることです。SSH(またはコンソール)でサーバーにログインします:

ssh [email protected]  
TYPE YOUR PASSWORD

Percona XtraBackupはUbuntuリポジトリにありますが、最新バージョンをPerconaリポジトリから使用したいと思います。

ウェブからdebパッケージをダウンロードして、dpkgコマンドでインストールすることでPerconaリポジトリを追加します:

wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb  
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb

次に、リポジトリを更新し、Percona XtraBackup 2.4(現時点での最新バージョン)をインストールします:

sudo apt-get update  
sudo apt-get install percona-xtrabackup-24

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

ステップ2 - ユーザーとバックアップディレクトリを設定する

ホットバックアップを実行するには、特別な権限と許可を持つ新しいmysqlユーザーを作成する必要があります。このチュートリアルでは、データベースサーバーとしてMariaDB 10.0を使用します。MySQL互換のデータベースをまだインストールしていない場合は、以下のコマンドでインストールできます:

sudo apt-get install mariadb-server mariadb-client

このコマンドでrootユーザーの安全なパスワードを設定します:

mysql_secure_installation

MariaDBがインストールされている場合、mysqlクライアントコマンドでrootユーザーとしてMariaDB/MySQLシェルにアクセスします:

mysql -u root -p  
TYPE MySQL PASSWORD

bekupuser ‘という名前の新しいユーザーを’ mypassword ‘というパスワードで作成します(サーバー用に安全なパスワードを選択してください!):

CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';

ユーザーに次の権限を付与します:’RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’。

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';  
FLUSH PRIVILEGES;  
exit

次に、MySQLバックアップファイルを保存するための新しいディレクトリを作成します:

mkdir -p /data/backups/mysql/

新しいバックアップユーザーとバックアップディレクトリが作成されました。

ステップ3 - Innobackupexでバックアップを実行する

InnobackupexはxtrabackupプログラムのためのPerlスクリプトラッパーです。これは、Oracleによって提供されるinnobackupスクリプトのパッチバージョンで、InnoDB Backupツールと共に配布されています。Innobackupexは、xtrabackupをxbstreamおよびxbcryptと組み合わせて使用して、MySQLデータベースインスタンス全体のバックアップを提供します。

このステップでは、MySQLインスタンスの完全バックアップを作成して準備します。

A. Innobackupexでバックアップを作成する

ステップ2では、バックアップ用の新しいディレクトリを作成し、新しいmysqlバックアップユーザーを追加しました。これらを使用してinnobackupexコマンドでバックアップを作成します。

新しいディレクトリ’/data/backups/my_backup’にinnobackupexでMySQLバックアップを作成します:

innobackupex --user=bekupuser  --password=mypassword --no-timestamp /data/backups/my_backup

注意:

–user = 必要なバックアップ権限を持つユーザー(ステップ-2)。

–password = バックアップユーザーのパスワード。

–no-timestamp = バックアップルートディレクトリに新しいタイムスタンプ付きサブディレクトリの作成を無効にします。

/data/backups/my_backup = バックアップ用のディレクトリで、バックアッププロセス中に自動的に作成されます。ディレクトリが存在する場合、エラーメッセージが表示されます。

Percona XtraBackupでバックアップを作成する

別のオプション:

mkdir -p /data/backups/my_backup2  
  
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2  
  
or  
innobackupex --user=bekupuser --password=mypassword /data/backups/

注意:

my_backup2 ‘というディレクトリがない場合、’ timestamp ‘形式に基づいてディレクトリが作成されます。

結果:

B. Innobackupexで完全バックアップを準備する

新しいバックアップを作成した後、データは復元の準備ができていません。データが復元できるようにするためには、もう1つのステップが必要です。データが復元できるようにするために「準備段階」が必要です。

バックアップディレクトリ ‘/data/backups/my_backup ‘に対して、innobackupexを使用してバックアップを準備します:

innobackupex --apply-log /data/backups/my_backup

プロセスがエラーなしで完了することを確認してから、次に進んでください。

完全バックアップを準備する

十分なメモリがあり、大きなデータベースがある場合は、オプション –use-memory=memorynumber を使用してinnobackupexに使用可能なメモリ量を指定できます:

innobackupex --apply-log --use-memory=4G /data/backups/my_backup

データは復元の準備が整いました。これを同じサーバーまたはMariaDBを実行している別のサーバーに復元できます。

ステップ4 - Innobackupexで完全バックアップを復元する

このステップでは、innobackupexを使用してMySQLインスタンスを復元します。

MySQLインスタンスを復元する前に、systemctlコマンドでMySQLプロセスを停止する必要があります(MariaDBプロセスはmysqlと呼ばれます):

systemctl stop mysql

古いMySQLデータディレクトリのバックアップを作成します:

mkdir ~/mysql_old/  
mv /var/lib/mysql/* ~/mysql_old/

次に、innobackupexを使用して完全バックアップからmysqlインスタンスを復元します:

innobackupex --copy-back /data/backups/my_backup

innobackupex: completed OK ‘という結果が表示されたら、MySQLインスタンスが正常に復元されたことになります。

次に、MySQLデータディレクトリの所有者をmysqlユーザーに変更し、サービスを再起動します:

chown -R mysql:mysql /var/lib/mysql  
systemctl start mysql

バックアップを復元する

MySQLインスタンスはpercona-xtrabackupで正常に復元されました。

参考文献

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。