この記事は、エアークローゼットアドベントカレンダー2024の11日目の記事です。
はじめに
この記事では、Linux環境でMySQLデータベースをバックアップおよびリストアするためのコマンドをご紹介します。
Linuxでは、バックアップにはmysqldumpコマンドを使用し、リストアにはmysqlまたはmysqlimportコマンドを使用します。この2つのコマンドはMySQL管理において欠かせない存在です。
それでは早速、バックアップ方法から見ていきましょう!
I. MySQLデータベースをバックアップする方法
mysqldumpコマンドは、ローカルまたはリモートでデータベースをバックアップするために使用されます。このコマンドの実行結果はSQL形式の1つのファイルとして出力されます。
ただし、バックアップするには以下の条件が必要です:
- バックアップ対象のデータベースがサーバー上に存在すること
- 使用するユーザーアカウントがデータベースにアクセスできる権限を持っていること
バックアップの基本的なコマンド構文は以下の通りです:
# mysqldump -u [ユーザー名] -p [パスワード] [データベース名] > [バックアップファイル.sql]
説明:
[ユーザー名]:MySQLにアクセスするためのユーザー名
[パスワード]:そのユーザーのパスワード
[データベース名]:バックアップ対象のデータベース名
[バックアップファイル.sql]:バックアップとして保存するファイル名
1. 単一のデータベースをバックアップする
以下のようにコマンドを実行します。
# mysqldump -u root -p databaseName > databaseFile.sql
この場合、databaseNameというデータベースがバックアップ対象で、出力されるファイルはdatabaseFile.sqlです。
2. 複数のデータベースをまとめてバックアップする
複数のデータベースを1つのファイルにバックアップする場合は、--databasesオプションを使用します。
# mysqldump -u root -p --databases databaseName1 databaseName2 > databaseFile.sql
上記の例では、databaseName1とdatabaseName2の2つのデータベースを1つのファイルdatabaseFile.sqlにバックアップしています。
3. すべてのデータベースをバックアップする
すべてのデータベースをバックアップするには、--all-databasesオプションを使用します。
# mysqldump -u root -p --all-databases > allDatabasesFile.sql
4. テーブル構造だけをバックアップする
データは不要で、テーブル構造だけをバックアップしたい場合は、--no-dataオプションを使用します。
# mysqldump -u root -p --no-data databaseName > databaseNameStructureFile.sql
5. データだけをバックアップする
テーブル構造は不要で、データだけをバックアップするには、--no-create-dbと--no-create-infoオプションを使用します。
# mysqldump -u root -p --no-create-db --no-create-info databaseName > databaseFile.sql
6. 特定のテーブルをバックアップする
特定のテーブルだけをバックアップする場合は、以下のように指定します。
# mysqldump -u root -p databaseName tableName > TableFile.sql
7. 複数のテーブルをバックアップする
複数のテーブルをバックアップするには、テーブル名をスペースで区切ります。
# mysqldump -u root -p databaseName tableName1 tableName2 > TablesFile.sql
8. リモートサーバーのデータベースをバックアップする
リモートサーバーのデータベースをバックアップする場合は、サーバーのIPアドレスを指定します。
# mysqldump -h 192.168.1.100 -u root -p databaseName tableName > TableFile.sql
リモートサーバーのパスワードを入力すると、バックアップが実行されます。
II. MySQLデータベースをリストアする方法
バックアップファイル(.sql)をリストアするには、mysqlまたはmysqlimportコマンドを使用します。
基本構文:
# mysql -u [ユーザー名] -p[パスワード] [データベース名] < [バックアップファイル.sql]
例:
- データベースが空でない場合
このコマンドで、databaseName.sqlファイルをdatabaseNameデータベースにリストアします。
# mysql -u root -p databaseName < databaseName.sql
- データベースが既に存在しており、空でない場合はmysqlimportを使用します。
# mysqlimport -u root -p databaseName < databaseName.sql
まとめ
この記事では、LinuxでMySQLデータベースをバックアップおよびリストアする方法を解説しました。mysqldumpやmysqlimportを使いこなせば、データベース管理がぐっと楽になります!
困った時はこの記事を参考にしてみてくださいね。😉
おまけ
本番環境のデータをマスクしてステージング環境に自動同期する仕組みをやりたい時は、
こちらの記事を参考してみてください。