2013年5月9日星期四

mysql数据库逻辑备份与完全恢复


在mysql里面,逻辑备份最大的优点就是对于各种存储引擎,都可以使用同样的方法。而物理备份则不同,不同的存储引擎有着不同的备份方法。
确保mysql打开log-bin 选项,有了binlog,mysql才可以在必要的时候做完整恢复,或基于时间点的恢复,或基于位置的恢复。
Mysqldump 的完全恢复很简单,将备份作为输入执行即可。具体语法如下:
mysql –uroot –p dbname < bakfile
注意,将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做,语法如下:
mysqlbinlog binlog-file|mysql –u root –p ***
以下是一个完整的mysqldump备份与恢复的例子。
(1) 上午9点,备份数据库:
#mysqldump –uroot –p -l –F test>test.dmp
其中-l参数表示给所有表加读锁,-F表示生成一个新的日志文件,此时,test中emp表的数据如下:
mysql>select * from emp order by id;
id name
1 z1
2 z2
3 z3
4 z4
(2)9点半备份完毕,然后插入新的数据:
mysql>insert into emp values(5,”z5”);
Query OK,1 row affected(0.04sec)
(3)10点,数据库突然故障,数据无法访问,需要恢复备份:
#mysql –uroot –p test<test.dmp
回复后的数据如下:
mysql>select * from emp order by id;
id name
1 z1
2 z2
3 z3
4 z4
(4)使用mysqlbinlog 恢复在mysqldump备份以来的BINLOG。
#msqlbinlog localhost-bin.000015|mysql –u root –p test
enter passwd:
查询完全恢复的数据如下:
mysql>select * from emp order by id;
id name
1 z1
2 z2
3 z3
4 z4
5 z5
至此,数据库全部恢复。

没有评论:

发表评论