Tips

MySQL データベースへのバックアップ 【初級編 第4回】

MySQL データベースへのバックアップ 【初級編 第4回】

MySQLでのデータベースのバックアップ

MySQLでのデータベースのバックアップ用のコマンドが用意されているので
それを使用したバックアップ方法

mysqldumpコマンド

バックアップの実行

以下のようにすると sampleという名のデータベースを丸ごとバックアップできる (拡張子は分かりやすくdbにしてるが何でもよい)
[root@localhost ~]# mysqldump -u root -p sample > sample.db
Enter password: rootのパスワードを入力

すると同じディレクトリに sample.dbという名のバックアップファイルが作成される。
[root@localhost ~]# ls
file02 file33 nohup.out sample.db

バックアップ内容を見てみる

この sample.dbは SQL文の create文でテーブルを作成して、insert文でテーブルの内容を格納してという SQLの命令文になっている
テキストになっているので、less などで確認してみると内容が読み取れる
[root@localhost ~]# less sample.db

データの復元方法

確認のための削除

復活できるか確認のため、一度データベースの内容を削除してみる
mysql> show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| catalyst |
| cisco |
| members |
| router |
| sales |
+——————+
5 rows in set (0.00 sec)

mysql> drop tables sample.catalyst;
mysql> drop tables sample.cisco
mysql> drop tables sample.members

mysql> show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| router |
| sales |
+——————+
2 rows in set (0.00 sec)

復元の実行

復元する際には下記のようにコマンドを入力すると、先ほどバックアップをとった sample.dbからデータを復元できる
[root@localhost ~]# mysql -u root -p sample show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| catalyst |
| cisco |
| members |
| router |
| sales |
+——————+
5 rows in set (0.00 sec)

ちなみに復元する際に、もし復元する内容が古かったりすると、更新したくなかったテーブルの内容までバックアップをとった時点の内容で上書きされるので注意すること

また復元する際に、そのデータベース名が存在していなければエラーになり、復元できない。
復元する際にもしデータベースが無ければ下記のようにして作成する必要がある。
mysql> create database sample;

復元以外にもデータベースの内容を少し変えたデータベースを新たに作成したい場合などに、
sample.dbの中身を少し書き換えて、そこに流し込んでやればよい。

データベースを一括でバックアップ・復元する方法

すべてのデータベースを一括でバックアップをとりたい場合は下記のようにすることで可能
-Aオプションを指定するとすべてのデータベースを対象になる。
[root@localhost ~]# mysqldump -A -u root -p > all.db

復元もコマンドを1行で可能である。
すべてのデータベースを保存した all.db からデータの内容を復元する場合は以下のようにする。
[root@localhost ~]# mysql -u root -p < all.db
この場合は、該当のデータベース名が存在しなくても、データベース自体を作成してくれるので作成する必要はない。

MySQL

MySQLでのデータベースのバックアップ

MySQLでのデータベースのバックアップ用のコマンドが用意されているので
それを使用したバックアップ方法

mysqldumpコマンド

バックアップの実行

以下のようにすると sampleという名のデータベースを丸ごとバックアップできる (拡張子は分かりやすくdbにしてるが何でもよい)
[root@localhost ~]# mysqldump -u root -p sample > sample.db
Enter password: rootのパスワードを入力

すると同じディレクトリに sample.dbという名のバックアップファイルが作成される。
[root@localhost ~]# ls
file02 file33 nohup.out sample.db

バックアップ内容を見てみる

この sample.dbは SQL文の create文でテーブルを作成して、insert文でテーブルの内容を格納してという SQLの命令文になっている
テキストになっているので、less などで確認してみると内容が読み取れる
[root@localhost ~]# less sample.db

データの復元方法

確認のための削除

復活できるか確認のため、一度データベースの内容を削除してみる
mysql> show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| catalyst |
| cisco |
| members |
| router |
| sales |
+——————+
5 rows in set (0.00 sec)

mysql> drop tables sample.catalyst;
mysql> drop tables sample.cisco
mysql> drop tables sample.members

mysql> show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| router |
| sales |
+——————+
2 rows in set (0.00 sec)

復元の実行

復元する際には下記のようにコマンドを入力すると、先ほどバックアップをとった sample.dbからデータを復元できる
[root@localhost ~]# mysql -u root -p sample show tables from sample;
+——————+
| Tables_in_sample |
+——————+
| catalyst |
| cisco |
| members |
| router |
| sales |
+——————+
5 rows in set (0.00 sec)

ちなみに復元する際に、もし復元する内容が古かったりすると、更新したくなかったテーブルの内容までバックアップをとった時点の内容で上書きされるので注意すること

また復元する際に、そのデータベース名が存在していなければエラーになり、復元できない。
復元する際にもしデータベースが無ければ下記のようにして作成する必要がある。
mysql> create database sample;

復元以外にもデータベースの内容を少し変えたデータベースを新たに作成したい場合などに、
sample.dbの中身を少し書き換えて、そこに流し込んでやればよい。

データベースを一括でバックアップ・復元する方法

すべてのデータベースを一括でバックアップをとりたい場合は下記のようにすることで可能
-Aオプションを指定するとすべてのデータベースを対象になる。
[root@localhost ~]# mysqldump -A -u root -p > all.db

復元もコマンドを1行で可能である。
すべてのデータベースを保存した all.db からデータの内容を復元する場合は以下のようにする。
[root@localhost ~]# mysql -u root -p < all.db
この場合は、該当のデータベース名が存在しなくても、データベース自体を作成してくれるので作成する必要はない。

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search