05-完全恢复
mysqldump的恢复也很简单,将备份作为输入执行即可,具体语法如下:
mysql –uroot –p dbname < bakfile
注意,将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做,语法如下:
mysqlbinlog binlog-file | mysql -u root –p***
以下是一个完整的mysqldump备份与恢复的例子。
(1)上午9点,备份数据库:
[root@localhost mysql]# mysqldump -uroot –p –l –F test >test.dmp
Enter password:
其中-l参数表示给所有表加读锁,-F表示生成一个新的日志文件,此时,test中emp表的数据如下:
mysql> select * from emp order by id;
+------+------+
| id | name |
+------+------+
| 1 | z1 |
| 2 | z2 |
| 3 | z3 |
| 4 | z4 |
+------+------+
4 rows in set (0.00 sec)
(2)9点半备份完毕,然后,插入新的数据:
mysql> insert into emp values(5,'z5');
Query OK, 1 row affected (0.04 sec)
mysql> insert into emp values(6,'z6');
Query OK, 1 row affected (0.04 sec)
(3)10点,数据库突然故障,数据无法访问。需要恢复备份:
[root@localhost mysql]# mysql -uroot -p test < test.dmp
Enter password:
恢复后的数据如下:
mysql> select * from emp order by id;
+------+------+
| id | name |
+------+------+
| 1 | z1 |
| 2 | z2 |
| 3 | z3 |
| 4 | z4 |
+------+------+
4 rows in set (0.00 sec)
(4)使用mysqlbinlog恢复自mysqldump备份以来的BINLOG。
[root@localhost mysql]# mysqlbinlog localhost-bin.000015 | mysql -u root –p test
Enter password:
查询完全恢复的数据如下:
mysql> select * from emp order by id;
+------+------+
| id | name |
+------+------+
| 1 | z1 |
| 2 | z2 |
| 3 | z3 |
| 4 | z4 |
| 5 | z5 |
| 6 | z6 |
+------+------+
6 rows in set (0.00 sec)
至此,数据库完全恢复。