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
この場合は、該当のデータベース名が存在しなくても、データベース自体を作成してくれるので作成する必要はない。
PHP 入門編
MySQLコマンド
MySQL文字コード
MySQLバックアップ
MySQLセキュリティ
MySQLデータベースへの接続
MySQLインストール・初期設定
SQLが学べる 関連連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集