Percona XtraBackup MySQLのオープンソースバックアップユーティリティです。 Percona Server、MariaDB、(Oracle)MySQLなどのすべてのMySQLフレーバーをサポートします。 Percona Xtrabackupは、MySQLのホットバックアップを実行します。ホットバックアップとは、MySQLサーバーの実行中にダウンタイムなしでバックアップを作成することを意味します。
このチュートリアルでは、Ubuntu 16.04(Xenial Xerus)でオープンソースツールのPerconaXtraBackupを使用してホットMySQLデータベースバックアップを作成する方法を紹介します。バックアップを実行するデータベースサーバーとしてMariaDBを使用しますが、同じセットアップがMySQLサーバーでも機能します。
前提条件
- Ubuntuサーバー16.04-(Xenial Xerus)
- MySQLまたはMariaDBサーバー
- ルート権限
最初のステップは、Ubuntuサーバーに最新のPerconaXtraBackupソフトウェアをインストールすることです。 SSH(またはコンソール)でサーバーにログインします:
ssh [email protected]
TYPE YOUR PASSWORD
Percona XtraBackupはUbuntuリポジトリで利用できますが、Perconaリポジトリの最新バージョンを使用したいと考えています。
WebからdebパッケージをダウンロードしてPerconaリポジトリを追加し、dpkgコマンドを使用してインストールします。
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
次に、リポジトリを更新し、Ppercona XtraBackup 2.4(現時点では最新バージョン)をインストールします。
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
PerconaXtraBackupがインストールされています。
ホットバックアップを実行するには、特別な権限と権限を持つ新しいmysqlユーザーを作成する必要があります。このチュートリアルでは、データベースサーバーとしてMariaDB10.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、REPLICATIONCLIENT'。
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit
次に、MySQLバックアップファイルを保存するための新しいディレクトリを作成します。
mkdir -p /data/backups/mysql/
新しいバックアップユーザーとバックアップディレクトリが作成されました。
Innobackupex xtrabackupプログラムのPerlスクリプトラッパーです。これは、Oracleが提供するinnobackupスクリプトのパッチが適用されたバージョンであり、InnoDBバックアップツールとともに配布されます。 Innobackupexは、xtrabackupをxbstreamおよびxbcryptと組み合わせて使用して、MySQLデータベースインスタンス全体のバックアップを提供します。
このステップでは、MySQLインスタンスの完全バックアップを作成して準備します。
A。 Innobackupexを使用してバックアップを作成する
手順2では、バックアップ用の新しいディレクトリを作成し、新しいmysqlバックアップユーザーを追加しました。これらを使用して、innobackupexコマンドでバックアップを作成します。
innobackupexを使用してMySQLバックアップを新しいディレクトリ'/data / backups / my_backup'に作成します:
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backup
注:
-user =必要なバックアップ権限を持つユーザー(ステップ2)。
-パスワード =バックアップユーザーのパスワード。
-タイムスタンプなし =バックアップルートディレクトリでの新しいタイムスタンプ付きサブディレクトリの作成を無効にします。
/ data / backups / my_backup =バックアップ用のディレクトリ。バックアッププロセス中に自動的に作成されます。ディレクトリが存在する場合は、エラーメッセージが表示されます。
別のオプション:
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 '、'タイムスタンプに基づいてディレクトリを取得します 'フォーマット。
結果:
B。 Innobackupexを使用して完全バックアップを準備する
新しいバックアップを作成した後、データを復元する準備ができていません。データを復元する準備ができるように、もう1つのステップがあります。データを復元できるように、「準備段階」が必要です。
オプション--apply-logを指定してinnobackupexを使用してバックアップを準備します バックアップディレクトリに'/data / backups / my_backup ':
innobackupex --apply-log /data/backups/my_backup
続行する前に、プロセスがエラーなしで完了していることを確認してください。
十分なメモリと大規模なデータベースがある場合は、オプション-use-memory =memorynumberを使用できます。 innobackupexに使用できるメモリ量を通知するには:
innobackupex --apply-log --use-memory=4G /data/backups/my_backup
これで、データを復元する準備が整いました。同じサーバーまたはMariaDBを実行している別のサーバーに復元できます。
このステップでは、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で正常に復元されました。