【MySQL】バックアップの作成(mysqldump)

【MySQL】バックアップの作成(mysqldump)

MySQLのバックアップを解説します。

バックアップ

バックアップでデータベースの状態をファイルに記録することができます。

開発障害や一時的に状態を戻したい時にバックアップファイルから状態を復元できます。

次のデータベースを元にバックアップについて確認していきましょう。

mysql> SELECT * FROM mydb.items;
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
|  3 | Pineapple |  1100 |     1 |
|  4 | Grapes    |  3500 |     1 |
+----+-----------+-------+-------+
4 rows in set (0.00 sec)

作成

バックアップの作成はmysqldumpコマンドを使います。

基本構文

$ mysqldump --single-transaction -u ユーザー -p データベース > ファイルパス

サンプル

$ mysqldump --single-transaction -u root -p mydb > mydb.dump

全てのデータベースのバックアップを作成するにはデータベースに-x --all-databasesを記述します。

$ mysqldump --single-transaction -u root -p -x --all-databases > mydb.dump

復元

バックアップからのデータ復元はmysqlコマンドを使います。

基本構文

$ mysql -u ユーザー -p データベース < ファイルパス

サンプル

動作を確認するため、itemsテーブルを削除しておきます。

mysql> USE mydb;
Database changed

mysql> DROP TABLE items;
Query OK, 0 rows affected (0.02 sec)

mysql> SHOW TABLES;
Empty set (0.00 sec)

バックアップファイルから復元します。

$ mysql -u root -p mydb < mydb.dump
Enter password:

データベースを確認するとデータが復元されています。

mysql> use mydb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| items          |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
|  3 | Pineapple |  1100 |     1 |
|  4 | Grapes    |  3500 |     1 |
+----+-----------+-------+-------+
4 rows in set (0.00 sec)