1.7. 物理コピーを使用した MariaDB データのバックアップと復元
MariaDB データの物理バックアップには、コンテンツを格納しているファイルとディレクトリーが含まれます。通常、この方法はより高速で、サイズが小さくなります。
1.7.1. mariabackup を使用した物理的なオンラインバックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
サーバーの実行中に、mariabackup ユーティリティーを使用して InnoDB、Aria、および MyISAM テーブルをバックアップすることにより、MariaDB サーバーの物理的なオンラインバックアップを作成できます。このユーティリティーは、暗号化および圧縮されたデータを含む MariaDB サーバーの完全バックアップ機能をサポートします。
前提条件
-
mariadb-backupパッケージがシステムにインストールされている。 -
バックアップを実行するユーザーの認証情報を
mariabackupに提供する必要がある。認証情報はコマンドラインまたは設定ファイルで指定できます。 -
mariabackupのユーザーには、RELOAD、LOCK TABLES、およびREPLICATION CLIENT特権が必要です。
手順
バックアップを作成するには、次のいずれかのオプションを使用します。
コマンドラインで認証情報を提供しながらバックアップを作成するには、次のように入力します。
$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>target-dirオプションは、バックアップファイルを格納するディレクトリーを定義します。完全バックアップを実行する場合は、ターゲットディレクトリーが空であるか、存在しない必要があります。userおよびpasswordオプションにより、ユーザー名とパスワードを設定できます。設定ファイルに認証情報を設定してバックアップを作成するには、次のコマンドを実行します。
-
/etc/my.cnf.d/ディレクトリーに設定ファイルを作成します (例:/etc/my.cnf.d/mariabackup.cnf)。 以下の内容をファイルに追加します。
[mysqld] user=<backup_username> password=<password>バックアップを実行します。
$ mariabackup --backup --target-dir <backup_directory>
-
1.7.2. mariabackup を使用したデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
mariabackup ユーティリティーによって作成された MariaDB バックアップがある場合は、同じユーティリティーを使用してデータを復元できます。
前提条件
-
mariadbサービスが停止しています。 - データディレクトリーが空です。
-
mariabackupのユーザーには、RELOAD、LOCK TABLES、およびREPLICATION CLIENT特権が必要です。
手順
データを復元するには、次のいずれかのオプションを使用します。
/var/mariadb/backup/ディレクトリー内のバックアップからデータを復元し、元のバックアップファイルを保持するには、次のように入力します。$ mariabackup --copy-back --target-dir=/var/mariadb/backup//var/mariadb/backup/ディレクトリー内のバックアップからデータを復元し、元のバックアップファイルを削除するには、次のように入力します。$ mariabackup --move-back --target-dir=/var/mariadb/backup/
ファイルのパーミッションを修正します。たとえば、ファイルの所有権を
mysqlユーザーおよびグループに再帰的に変更するには、次のコマンドを実行します。# chown -R mysql:mysql /var/lib/mysql/データベースを復元する際、
mariabackupは、バックアップのファイルおよびディレクトリー特権を保持します。ただし、mariabackupは、ユーザーおよびグループがデータベースを復元する際にファイルをディスクに書き込みます。したがって、バックアップを復元した後、MariaDB サーバーのユーザーとグループに合わせてデータディレクトリーの所有者を調整する必要があります。mariadbサービスを起動します。# systemctl start mariadb.service
1.7.3. MariaDB サーバーでのファイルシステムバックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
ファイルシステムレベルのバックアップは、MariaDB インスタンス全体をバックアップする高速な方法です。この方法では、データの整合性を保つために mariadb サービスをシャットダウンする必要があります。
ファイルシステムレベルのバックアップは、アーキテクチャーと MariaDB バージョンに固有のものです。この方法でバックアップしたデータを、異なるアーキテクチャーまたは MariaDB バージョンで復元することはできません。
手順
mariadbサービスを停止します。# systemctl stop mariadb.serviceバックアップディレクトリーを作成します。次に例を示します。
# mkdir -p /root/mariadb-backup/{data,config}/データディレクトリーをバックアップします。
# cp -rp /var/lib/mysql/ /root/mariadb-backup/data/設定ファイルをバックアップします。
# cp -rp /etc/my.cnf /etc/my.cnf.d/ /root/mariadb-backup/config/mariadbサービスを起動します。# systemctl start mariadb.service
1.7.4. MariaDB サーバーでのファイルシステムバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
MariaDB インスタンスが破損した場合は、以前にデータディレクトリーと設定ファイルを含むファイルシステムバックアップを実行済みであれば、このバックアップからインスタンスを復元できます。
前提条件
- MariaDB サーバーでファイルシステムバックアップを実行した。
ターゲットサーバーが、以下に示すバックアップソースの条件を満たしている必要があります。
- MariaDB のバージョンが同じかそれ以降である必要があります。
- システムアーキテクチャーが同じである必要があります。
手順
mariadbサービスを停止します。# systemctl stop mariadb.service現在の
/var/lib/mysql/ディレクトリーを削除します。# rm -rf /var/lib/mysql/バックアップからデータディレクトリーを復元します。
# cp -rp /root/mariadb-backup/data/mysql/ /var/lib//var/lib/mysql/ディレクトリーの所有権を正しく設定します。# chown -R mysql:mysql /var/lib/mysql//var/lib/mysql/ディレクトリーの SELinux コンテキストを復元します。# restorecon -Rv /var/lib/mysql/現在の設定ファイルを削除します。
# rm -rf /etc/my.cnf /etc/my.cnf.d/バックアップから設定ファイルを復元します。
# cp -rp /root/mariadb-backup/config/my.cnf /root/mariadb-backup/config/my.cnf.d/ /etc/設定ファイルの所有権を正しく設定します。
# chown -R root:root /etc/my.cnf /etc/my.cnf.d/設定ファイルの SELinux コンテキストを復元します。
# restorecon -Rv /etc/my.cnf /etc/my.cnf.d/mariadbサービスを起動します。# systemctl start mariadb.service
検証
MariaDB データベースに接続してデータを照会します。次に例を示します。
# mariadb -u root -p <database> -e "*SELECT * FROM <table>;"