2.6. MySQL データのバックアップ
MySQL データベースからデータをバックアップするには、主に 2 つの方法があります。
- 論理バックアップ
論理バックアップは、データの復元に必要な SQL ステートメントで構成されます。この種類のバックアップは、情報およびレコードをプレーンテキストファイルにエクスポートします。
物理バックアップに対する論理バックアップの主な利点は、移植性と柔軟性です。データは、物理バックアップではできない他のハードウェア設定である MySQL バージョンまたはデータベース管理システム (DBMS) で復元できます。
論理バックアップは、
mysqld.service
が実行している場合にのみ実行できることに注意してください。論理バックアップには、ログと設定ファイルが含まれません。- 物理バックアップ
物理バックアップは、コンテンツを格納するファイルおよびディレクトリーのコピーで構成されます。
物理バックアップは、論理バックアップと比較して、以下の利点があります。
- 出力が少なくなる。
- バックアップのサイズが小さくなる。
- バックアップおよび復元が速くなる。
バックアップには、ログファイルと設定ファイルが含まれる。
mysqld.service
が実行されていない場合、またはバックアップ中の変更を防ぐためにデータベース内のすべてのテーブルがロックされている場合は、物理バックアップを実行する必要があることに注意してください。
以下の MySQL バックアップアプローチのいずれかを使用して、MySQL データベースからデータをバックアップできます。
-
mysqldump
を使用した論理バックアップ - ファイルシステムのバックアップ
- バックアップソリューションとしてレプリケーションを使用
2.6.1. mysqldump を使用した論理バックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
mysqldump
クライアントはバックアップユーティリティーで、バックアップ目的でデータベースまたはデータベースの集合をダンプしたり、別のデータベースサーバーに転送したりできます。mysqldump
の出力は通常、サーバーテーブル構造を再作成したり、そこにデータを入力したり、またはその両方を行う SQL ステートメントで構成されます。mysqldump
は、XML および (CSV などの) コンマ区切りテキスト形式など、他の形式でファイルを生成することもできます。
mysqldump
バックアップを実行するには、以下のいずれかのオプションを使用できます。
- 選択したデータベースを 1 つまたは複数バックアップ
- すべてのデータベースをバックアップする。
- あるデータベースのテーブルのサブセットのバックアップを作成する。
手順
単一のデータベースをダンプするには、以下を実行します。
mysqldump [options] --databases db_name > backup-file.sql
# mysqldump [options] --databases db_name > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のデータベースを一度にダンプするには、次のコマンドを実行します。
mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
# mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのデータベースをダンプするには、以下を実行します。
mysqldump [options] --all-databases > backup-file.sql
# mysqldump [options] --all-databases > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つ以上のダンプされたフルデータベースをサーバーにロードし直すには、以下を実行します。
mysql < backup-file.sql
# mysql < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースをリモート MySQL サーバーにロードするには、以下を実行します。
mysql --host=remote_host < backup-file.sql
# mysql --host=remote_host < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つのデータベースからテーブルのサブセットをダンプするには、
mysqldump
コマンドの末尾に、選択したテーブルのリストを追加します。mysqldump [options] db_name [tbl_name ...] > backup-file.sql
# mysqldump [options] db_name [tbl_name ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つのデータベースからダンプされたテーブルのサブセットをロードするには、以下を実行します。
mysql db_name < backup-file.sql
# mysql db_name < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この時点で、db_name データベースが存在している必要があります。
mysqldump
がサポートするオプションのリストを表示するには、以下を実行します。mysqldump --help
$ mysqldump --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.2. MySQL サーバー上でファイルシステムのバックアップを実行する リンクのコピーリンクがクリップボードにコピーされました!
MySQL データファイルのファイルシステムバックアップを作成するには、MySQL データディレクトリーの内容をバックアップ場所にコピーします。
現在の設定またはログファイルのバックアップも作成するには、以下の手順の中から任意の手順を選択します。
手順
mysqld
サービスを停止します。systemctl stop mysqld.service
# systemctl stop mysqld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データファイルを必要な場所にコピーします。
cp -r /var/lib/mysql/ /backup-location/data/
# cp -r /var/lib/mysql/ /backup-location/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 設定ファイルを必要な場所にコピーします。
cp -r /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
# cp -r /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: ログファイルを必要な場所にコピーします。
cp /var/log/mysql/* /backup-location/logs/
# cp /var/log/mysql/* /backup-location/logs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysqld
サービスを開始します。systemctl start mysqld.service
# systemctl start mysqld.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