下载中心 | 网站地图 | 站内搜索 | 加入收藏

安恒公司 / 技术文章 / 安恒公司网管员手记 / mysql数据库的2次灾难恢复实战

2007-04-14 刘世伟  阅:    下页:
mysql数据库的2次灾难恢复实战
最近2次遇到数据库崩溃.
第一次是因为ups到服务器之间的电源碰掉,造成mysql数据库一个表丢失1000行数据.
第二次是因为机箱散热风扇停转,造成系统死机, mysql丢失了一部分数据.

2次灾难恢复的问题不同, 恢复步骤也不同.

第一次:
  本来每天有数据库的dump备份的,但是由于服务器硬件升级.并没有恢复这个每日定时任务.
当灾难发生时,只能找到15天以前的数据.丢失了整整2个星期的数据. 最后能够想到的办法,
只有通过apache 的http日志去提取同事们的真实的操作,然后现这些操作.好在程序也是我
编的,实现起来虽然相当费劲,但也是可行的.
早在开始建立应用系统的时候, 就定下了一个原则,所有的http操作都只使用GET方式,不使用
POST方式,因为POST方式,在http日志中是没法挽救数据的.这一编程原则,成了我最后的救命
稻草,先写程序,从http log中提取数据,提取出2000条对损坏表有影响的操作记录.然后分类
为20种操作. 对这20种操作单独编写模拟写库程序, 整个一个双修日的白天和晚上就这么搭上
了. 出问题的那天是周5下午, 当同事们周一来上班的时候, 没有发觉业务系统有什么问题.
完成修复后,恢复了每日定时备份,并且通过调整,让mysql服务输出binlog,并保留100天.这也为
以后部署数据库镜像做好准备.

第二次:从binlog
  还没有来得及进行数据库镜像部署,第二次故障发生了,哈哈.由于有了binlog以及每日备份,
恢复数据就简单多了.其实就是一个从数据库镜像的配置过程.
  mysqldump导出的备份数据在最后一行会有时间标志, 记下这个时间标志, "2007-05-14 18:39:06"
然后找到这个时间标志在binlog中的偏移值, binlog一般在/var/lib/mysql/mysql-binlog.0000xx
根据文件日期找包含这个时间段的文件. 记下这个文件名. 然后还要找到当时备份的时间在这个log
文件的偏移值. 要找到这个偏移值.

下页:   

相关文章
qmail错误: CNAME_lookup_failed_temporarily._ #4.4.3 - 16-02-26 - 阅读: 82446
快速得到mysql的历史数据状态 - 09-01-02 - 阅读: 111347
ezmlm邮件列表使用mysql方式管理帐号 - 08-11-20 - 阅读: 141771
mysql的relay-bin - 07-10-16 - 阅读: 144963
mysql优化[转贴] - 07-10-02 - 阅读: 140653
利用内存磁盘加速mysql --安恒网管员手记 - 06-06-26 - 阅读: 243464
mysql 4.1+ 汉字乱码问题研究 --安恒网管员手记 - 05-09-15 - 阅读: 297219
mysql 双机热备实战 --安恒网管员手记 - 05-04-20 - 阅读: 203513
mysql的备份,备份,备份 --安恒网管员手记 - 05-01-12 - 阅读: 169205
安恒网管员手记:mysql的自动备份 - 03-11-02 - 阅读: 169112
安恒网管员手记: mysql密码忘记的修改 - 03-05-05 - 阅读: 203344
mysql双机热备份 - 03-02-12 - 阅读: 149842

Email给朋友 打印本文
版权所有·安恒公司 Copyright © 2004   gentoo.anheng.com.cn   All Rights Reserved    
北京市海淀区首体南路9号 主语国际商务中心4号楼8层 (邮编100048) 电话:010-88018877