1.6. MariaDB データのバックアップ
MariaDB データベースからデータのバックアップを取得するには、以下の 2 つの方法があります。
- 論理バックアップ
論理バックアップは、データの復元に必要な SQL ステートメントで構成されます。この種類のバックアップは、情報およびレコードをプレーンテキストファイルにエクスポートします。
物理バックアップに対する論理バックアップの主な利点は、移植性と柔軟性です。データは、物理バックアップではできない他のハードウェア設定である MariaDB バージョンまたはデータベース管理システム (DBMS) で復元できます。
論理バックアップは、
mariadb.service
が実行されている場合にのみ実行できることに注意してください。論理バックアップには、ログと設定ファイルが含まれません。- 物理バックアップ
物理バックアップは、コンテンツを格納するファイルおよびディレクトリーのコピーで構成されます。
物理バックアップは、論理バックアップと比較して、以下の利点があります。
- 出力が少なくなる。
- バックアップのサイズが小さくなる。
- バックアップおよび復元が速くなる。
バックアップには、ログファイルと設定ファイルが含まれる。
mariadb.service
が実行していない場合や、データベースのすべてのテーブルがロックされていて、バックアップ中に変更しないようにする場合は、物理バックアップを実行する必要があります。
MariaDB データベースからデータをバックアップするには、次のいずれかの MariaDB バックアップ方法を使用できます。
-
mariadb-dump
を使用した論理バックアップ -
Mariabackup
ユーティリティーを使用した物理的なオンラインバックアップ - ファイルシステムのバックアップ
- バックアップソリューションとしてレプリケーションを使用
1.6.1. mariadb-dump を使用した論理バックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
mariadb-dump
クライアントはバックアップユーティリティーで、バックアップ目的でデータベースまたはデータベースの集合をダンプしたり、別のデータベースサーバーに転送したりできます。mariadb-dump
の出力は通常、サーバーテーブル構造を再作成したり、そこにデータを入力したり、またはその両方を行う SQL ステートメントで構成されます。mariadb-dump
は、XML および (CSV などの) コンマ区切りテキスト形式など、他の形式でファイルを生成することもできます。
mariadb-dump
バックアップを実行するには、以下のいずれかのオプションを使用できます。
- 選択したデータベースを 1 つまたは複数バックアップ
- すべてのデータベースをバックアップする。
- あるデータベースのテーブルのサブセットのバックアップを作成する。
手順
単一のデータベースをダンプするには、以下を実行します。
mariadb-dump [options] --databases db_name > backup-file.sql
# mariadb-dump [options] --databases db_name > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のデータベースを一度にダンプするには、次のコマンドを実行します。
mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
# mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのデータベースをダンプするには、以下を実行します。
mariadb-dump [options] --all-databases > backup-file.sql
# mariadb-dump [options] --all-databases > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つ以上のダンプされたフルデータベースをサーバーにロードし直すには、以下を実行します。
mariadb < backup-file.sql
# mariadb < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースをリモート MariaDB サーバーにロードするには、以下を実行します。
mariadb --host=remote_host < backup-file.sql
# mariadb --host=remote_host < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow あるデータベースでテーブルのサブセットをダンプするには、
mariadb-dump
コマンドの末尾に、選択したテーブルのリストを追加します。mariadb-dump [options] db_name [tbl_name ...] > backup-file.sql
# mariadb-dump [options] db_name [tbl_name ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つのデータベースからダンプされたテーブルのサブセットをロードするには、以下を実行します。
mariadb db_name < backup-file.sql
# mariadb db_name < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この時点で、db_name データベースが存在している必要があります。
mariadb-dump がサポートするオプションのリストを表示するには、以下のコマンドを実行します。
mariadb-dump --help
$ mariadb-dump --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.2. mariabackup ユーティリティーを使用した物理的なオンラインバックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
mariabackup
ユーティリティーは、InnoDB、Aria、および MyISAM テーブルの物理的なオンラインバックアップを実行できる Percona XtraBackup テクノロジーに基づいています。このユーティリティーは、暗号化および圧縮されたデータを含む MariaDB サーバーの完全バックアップ機能をサポートします。
前提条件
-
mariadb-backup
パッケージがシステムにインストールされている。 -
バックアップを実行するユーザーの認証情報を
mariabackup
に提供する必要がある。認証情報はコマンドラインまたは設定ファイルで指定できます。 -
mariabackup
のユーザーには、RELOAD
、LOCK TABLES
、およびREPLICATION CLIENT
特権が必要です。
手順
バックアップを作成するには、次のいずれかのオプションを使用します。
コマンドラインで認証情報を提供しながらバックアップを作成するには、次のように入力します。
mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow target-dir
オプションは、バックアップファイルを格納するディレクトリーを定義します。完全バックアップを実行する場合は、ターゲットディレクトリーが空であるか、存在しない必要があります。user
およびpassword
オプションにより、ユーザー名とパスワードを設定できます。設定ファイルに認証情報を設定してバックアップを作成するには、次のコマンドを実行します。
-
/etc/my.cnf.d/
ディレクトリーに設定ファイルを作成します (例:/etc/my.cnf.d/mariabackup.cnf
)。 以下の内容をファイルに追加します。
[mysqld] user=<backup_username> password=<password>
[mysqld] user=<backup_username> password=<password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップを実行します。
mariabackup --backup --target-dir <backup_directory>
$ mariabackup --backup --target-dir <backup_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
1.6.3. mariabackup ユーティリティーを使用してデータを復元する リンクのコピーリンクがクリップボードにコピーされました!
mariabackup
ユーティリティーによって作成された MariaDB バックアップがある場合は、同じユーティリティーを使用してデータを復元できます。
前提条件
-
mariadb
サービスが停止しています。 - データディレクトリーが空です。
-
mariabackup
のユーザーには、RELOAD
、LOCK TABLES
、およびREPLICATION CLIENT
特権が必要です。
手順
データを復元するには、次のいずれかのオプションを使用します。
/var/mariadb/backup/
ディレクトリー内のバックアップからデータを復元し、元のバックアップファイルを保持するには、次のように入力します。mariabackup --copy-back --target-dir=/var/mariadb/backup/
$ mariabackup --copy-back --target-dir=/var/mariadb/backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/mariadb/backup/
ディレクトリー内のバックアップからデータを復元し、元のバックアップファイルを削除するには、次のように入力します。mariabackup --move-back --target-dir=/var/mariadb/backup/
$ mariabackup --move-back --target-dir=/var/mariadb/backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ファイルのパーミッションを修正します。たとえば、ファイルの所有権を
mysql
ユーザーおよびグループに再帰的に変更するには、次のコマンドを実行します。chown -R mysql:mysql /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースを復元する際、
mariabackup
は、バックアップのファイルおよびディレクトリー特権を保持します。ただし、mariabackup
は、ユーザーおよびグループがデータベースを復元する際にファイルをディスクに書き込みます。したがって、バックアップを復元した後、MariaDB サーバーのユーザーとグループに合わせてデータディレクトリーの所有者を調整する必要があります。mariadb
サービスを起動します。systemctl start mariadb.service
# systemctl start mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.4. MariaDB サーバーでファイルシステムのバックアップを実行する リンクのコピーリンクがクリップボードにコピーされました!
MariaDB データファイルのファイルシステムバックアップを作成するには、MariaDB データディレクトリーの内容をバックアップの場所にコピーします。
現在の設定またはログファイルのバックアップも作成するには、以下の手順の中から任意の手順を選択します。
手順
mariadb
サービスを停止します。systemctl stop mariadb.service
# systemctl stop mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データファイルをコピーします。
cp -rp /var/lib/mysql/ /backup-location/data/
# cp -rp /var/lib/mysql/ /backup-location/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルをコピーします。
cp -rp /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
# cp -rp /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: ログファイルをコピーします。
cp -p /var/log/mariadb/* /backup-location/logs/
# cp -p /var/log/mariadb/* /backup-location/logs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mariadb
サービスを起動します。systemctl start mariadb.service
# systemctl start mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップされたデータをバックアップ場所から
/var/lib/mysql
ディレクトリーにロードする際は、mysql:mysql
が/var/lib/mysql/
内のすべてのデータの所有者であることを確認してください。chown -R mysql:mysql /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.5. バックアップソリューションとしてレプリケーションを使用 リンクのコピーリンクがクリップボードにコピーされました!
ソースサーバーの複製となるレプリカサーバーを作成すると、ソースに影響を与えずにレプリカでバックアップを実行できます。ソースは、レプリカをシャットダウンする間に依然として実行でき、レプリカからデータのバックアップを作成できます。
レプリケーション自体は、バックアップソリューションとしては十分ではありません。レプリケーションは、ハードウェア障害からソースサーバーを保護しますが、データ損失に対する保護は保証していません。