3.6. MySQL データのバックアップ
MySQL データベースからデータをバックアップするには、主に 2 つの方法があります。
- 論理バックアップ
論理バックアップは、データの復元に必要な SQL ステートメントで構成されます。この種類のバックアップは、情報およびレコードをプレーンテキストファイルにエクスポートします。
物理バックアップに対する論理バックアップの主な利点は、移植性と柔軟性です。データは、物理バックアップではできない他のハードウェア設定である MySQL バージョンまたはデータベース管理システム (DBMS) で復元できます。
論理バックアップは、
mysqld.serviceが実行している場合にのみ実行できることに注意してください。論理バックアップには、ログと設定ファイルが含まれません。- 物理バックアップ
物理バックアップは、コンテンツを格納するファイルおよびディレクトリーのコピーで構成されます。
物理バックアップは、論理バックアップと比較して、以下の利点があります。
- 出力が少なくなる。
- バックアップのサイズが小さくなる。
- バックアップおよび復元が速くなる。
バックアップには、ログファイルと設定ファイルが含まれる。
mysqld.serviceが実行されていない場合、またはバックアップ中の変更を防ぐためにデータベース内のすべてのテーブルがロックされている場合は、物理バックアップを実行する必要があることに注意してください。
以下の MySQL バックアップアプローチのいずれかを使用して、MySQL データベースからデータをバックアップできます。
-
mysqldumpを使用した論理バックアップ - ファイルシステムのバックアップ
- バックアップソリューションとしてレプリケーションを使用
3.6.1. mysqldump を使用した論理バックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
mysqldump クライアントはバックアップユーティリティーで、バックアップ目的でデータベースまたはデータベースの集合をダンプしたり、別のデータベースサーバーに転送したりできます。通常、mysqldump の出力は、サーバーテーブル構造を再作成する、それにデータを取り込む、またはその両方の SQL ステートメントで構成されます。mysqldump は、XML および (CSV などの) コンマ区切りテキスト形式など、他の形式でファイルを生成することもできます。
mysqldump バックアップを実行するには、以下のいずれかのオプションを使用できます。
- 選択したデータベースを 1 つまたは複数バックアップ
- すべてのデータベースをバックアップする。
- あるデータベースのテーブルのサブセットのバックアップを作成する。
手順
単一のデータベースをダンプするには、以下を実行します。
# mysqldump [options] --databases db_name > backup-file.sql複数のデータベースを一度にダンプするには、次のコマンドを実行します。
# mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sqlすべてのデータベースをダンプするには、以下を実行します。
# mysqldump [options] --all-databases > backup-file.sql1 つ以上のダンプされたフルデータベースをサーバーにロードし直すには、以下を実行します。
# mysql < backup-file.sqlデータベースをリモート MySQL サーバーにロードするには、以下を実行します。
# mysql --host=remote_host < backup-file.sqlあるデータベースでリテラルなテーブルのサブセットをダンプするには、
mysqldumpコマンドの末尾に、選択したテーブルのリストを追加します。# mysqldump [options] db_name [tbl_name ...] > backup-file.sql1 つのデータベースからダンプされたリテラルなテーブルのサブセットをロードするには、次のコマンドを実行します。
# mysql db_name < backup-file.sql注記この時点で、db_name データベースが存在している必要があります。
mysqldump がサポートするオプションのリストを表示するには、以下を実行します。
$ mysqldump --help
3.6.2. ファイルシステムのバックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
MySQL データファイルのファイルシステムバックアップを作成するには、MySQL データディレクトリーの内容をバックアップ場所にコピーします。
現在の設定またはログファイルのバックアップも作成するには、以下の手順の中から任意の手順を選択します。
手順
mysqldサービスを停止します。# systemctl stop mysqld.serviceデータファイルを必要な場所にコピーします。
# cp -r /var/lib/mysql /backup-locationオプション: 設定ファイルを必要な場所にコピーします。
# cp -r /etc/my.cnf /etc/my.cnf.d /backup-location/configurationオプション: ログファイルを必要な場所にコピーします。
# cp /var/log/mysql/* /backup-location/logsmysqldサービスを開始します。# systemctl start mysqld.serviceバックアップされたデータをバックアップ場所から
/var/lib/mysqlディレクトリーに読み込む際は、mysql:mysqlが/var/lib/mysql内のすべてのデータの所有者であることを確認してください。# chown -R mysql:mysql /var/lib/mysql
3.6.3. バックアップソリューションとしてレプリケーションを使用 リンクのコピーリンクがクリップボードにコピーされました!
レプリケーションは、ソースサーバー用の代替バックアップソリューションです。ソースサーバーの複製となるレプリカサーバーを作成すると、ソースに影響を与えずにレプリカでバックアップを実行できます。ソースは、レプリカをシャットダウンする間に依然として実行でき、レプリカからデータのバックアップを作成できます。
MySQLデータベースを複製する方法の手順は、MySQL の複製 を参照してください。
レプリケーション自体は、バックアップソリューションとしては十分ではありません。レプリケーションは、ハードウェア障害からソースサーバーを保護しますが、データ損失に対する保護は保証していません。この方法とともに、レプリカでその他のバックアップソリューションを使用することが推奨されます。