3.6. 論理ダンプを使用した MySQL データのバックアップと復元
MySQL データの論理バックアップは、データの復元に必要な SQL ステートメントで構成されます。物理バックアップに対する論理バックアップの利点は、異なるハードウェア構成や MySQL バージョンでもデータを復元できることです。
3.6.1. mysqldump を使用した論理バックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
mysqldump ユーティリティーを使用すると、データベースサーバーが稼働中でも MySQL データベースをバックアップし、エクスポートしたデータを SQL ファイルに保存できます。データが失われた場合に回復できるように、バックアップをセキュアな場所に保存してください。
mysqldump でよく見られるシナリオは以下のとおりです。
- 単一のデータベースのバックアップ
- 複数のデータベースのバックアップ
- すべてのデータベースのバックアップ
mysqldump ユーティリティーは、出力を単一のファイルに保存します。複数のデータベースをバックアップする際に、データベースごとに 1 つのファイルが必要な場合は、各データベースを個別にバックアップしてください。
mysqldump ユーティリティーはデータベースのみをバックアップできます。これには、mysql データベースに格納されているサーバー設定も含まれます。ただし、このユーティリティーは /etc/my.cnf などの設定ファイルはバックアップしません。
前提条件
-
mysqldサービスが実行されている。 -
rootアカウントなど、データベースをバックアップする権限を持つ認証情報を持っている。
手順
一貫性のある包括的なデータベースの論理バックアップを作成します。
# mysqldump -u <username> -p --routines --events --triggers --single-transaction --result-file=backup.sql --databases <database_1> <database_2>各項目の説明:
-u <username>- ユーティリティーがデータベースサーバーに接続するために使用するユーザー名を設定します。
-p- パスワードの入力を求めます。
--routines- バックアップにストアドプロシージャーと関数を含めます。
--events- スケジュールされたイベントをバックアップに含めます。
--triggers- バックアップにトリガーを含めます。
--single-transactionInnoDB などのトランザクションストレージエンジンを使用するデータベースに対して、整合性の取れたスナップショットの作成を開始します。単一のトランザクションを使用すると、すべての読み取り操作が、ダンプ開始時点のデータベースの状態を反映したものになります。
MyISAM などの非トランザクションストレージエンジンをまだ使用している場合は、整合性のあるバックアップを確保するために、
--single-transactionではなく--lock-tablesオプションを使用してください。--result-file=<output_file>-
mysqldump が出力を保存するファイルを指定します。 --databases <list_of_databases>バックアップするデータベースを定義します。または、すべてのデータベースを一度にバックアップするには、
--all-databasesオプションを使用します。重要データベースのバックアップには、そのデータベースのデータのみが含まれます。ユーザーアカウントやその他のサーバー設定は含まれません。サーバーは、この重要なセキュリティー情報とシステム情報を、別の
MySQLシステムデータベースに保存します。したがって、これらの設定を保持する必要がある場合は、mysqlもバックアップする必要があります。
検証
- サンドボックス環境でバックアップを復元し、データが正しいことを確認します。
データベースをリモート MySQL サーバーにロードするには、以下を実行します。
# mysql --host=remote_host < backup-file.sql1 つのデータベースからテーブルのサブセットをダンプするには、
mysqldumpコマンドの末尾に、選択したテーブルのリストを追加します。# mysqldump [options] db_name [tbl_name ...] > backup-file.sql1 つのデータベースからダンプされたリテラルなテーブルのサブセットをロードするには、次のコマンドを実行します。
# mysql db_name < backup-file.sql注記この時点で、db_name データベースが存在している必要があります。
mysqldump が サポートするオプションのリストを表示するには、以下を実行してください。
$ mysqldump --help