DBを誤って削除してしまった時の為に。。。
リストア方法は幾つかありますが、今回はあえてSOURCEコマンドにて
リストアしてみます。
mysql> show tables;
+—————-+
| Tables_in_test |
+—————-+
| T1 |
| T2 |
+—————-+
2 rows in set (0.01 sec)
mysql> exit
[root@colinux tmp]# pwd
/tmp
[root@colinux tmp]# ls -l
total 0
srwxrwxrwx 1 mysql mysql 0 2009-02-06 10:52 mysql.sock
[root@colinux tmp]# mysqldump test --tab=/tmp -u root -p
Enter password:
[root@colinux tmp]# ls -l
total 16
srwxrwxrwx 1 mysql mysql 0 2009-02-06 10:52 mysql.sock
-rw-r–r– 1 root root 1375 2009-02-06 11:46 T1.sql
-rw-rw-rw- 1 mysql mysql 239 2009-02-06 11:46 T1.txt
-rw-r–r– 1 root root 1374 2009-02-06 11:46 T2.sql
-rw-rw-rw- 1 mysql mysql 14 2009-02-06 11:46 T2.txt
[root@colinux tmp]#
■削除してしまったDBの再作成
mysql> create database `TEST` /*!40100 default character set UTF8 */;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| DATABASE |
| DB01 |
| DB02 |
| TEST |
| client_test_db |
| mysql |
+——————–+
7 rows in set (0.00 sec)
■テーブルのリストア
mysql>SOURCE /tmp/T1.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>SOURCE /tmp/T2.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
mysql>
■テーブルが戻っていることを確認。
mysql> show tables;
+—————-+
| Tables_in_TEST |
+—————-+
| T1 |
| T2 |
+—————-+
2 rows in set (0.00 sec)
mysql>
■データのリスストア
mysql> select * from T1;
Empty set (0.00 sec)
mysql> select * from T2;
Empty set (0.00 sec)
mysql> LOAD DATA INFILE ‘/tmp/T1.txt’ INTO TABLE T1;
Query OK, 9 rows affected (0.01 sec)
Records: 9 Deleted: 0 Skipped: 0 Warnings: 0
mysql> LOAD DATA INFILE ‘/tmp/T2.txt’ INTO TABLE T2;
Query OK, 1 row affected (0.01 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
mysql>
無事にリストアできていることを確認。
mysqldumpコマンドでフルバックアップして、mysqlコマンドでいつもは
リストアしてますが、特定のテーブルの特定のデータをひとつひとつ
確認しながらリストア出来るので、特定のテーブルのリストアをしたり
するのに適しているかも知れません。