概要
MySQLのデータベースのバックアップ、リストアは mysqldump コマンドで行います。
テーブル単位やデータベース単位、全データベースを一気に処理するなど、用途に応じて使い分けが可能です。
一般的にはデータベース単位でバックアップを取得することが多いですが、大量のログデータやユーザーデータなどが格納されている場合は、バックアップに時間がかかりタイムアウト等で取得が失敗した際のリスクになるため、テーブル単位で行う事もあります。
構築環境
- CentOS Linux release 8.2.2004 (Core)
- mysql Ver 8.0.21
DB→ファイル へバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME > OUTPUT_FILE_NAME
ファイル→DB にリストア
command $ mysql -u USER_NAME -p -h HOST_NAME DB_NAME < OUTPUT_FILE_NAME
バックアップ取得方法一覧
▼全データベースdumpデータをバックアップ
command $ mysqldump -u USER_NAME -p --all-databases > OUTPUT_FILE_NAME
▼複数のデータベースをバックアップする場合
command $ mysqldump -u root -p --databases DB1 DB2 DB3
▼全てのデータベース・テーブルの定義をバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME -A -d > OUTPUT_FILE_NAME
▼全てのデータベースの定義をバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME -A -d -t > OUTPUT_FILE_NAME
▼全てのテーブルの定義をバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME -A -d -n > OUTPUT_FILE_NAME
▼特定のデータベースのdumpデータをバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME > OUTPUT_FILE_NAME
▼特定のテーブルのdumpデータをバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME TABLE_NAME > OUTPUT_FILE_NAME
▼特定のテーブルの定義とデータをバックアップ
command $ mysqldump -u USER_NAME -p -h HOST_NAME -A -n > OUTPUT_FILE_NAME