首页 > 其他 > 详细

关于不完全恢复的一些思考

时间:2015-06-09 02:15:01      阅读:323      评论:0      收藏:0      [点我收藏+]
还是有感于ITPUB上次丢失一天数据的问题.
记得当时是一片冷嘲热讽
我也很奇怪,一个关于数据库的论坛,为什么没有进行不完全恢复.

直到今天我在集中备份服务器上测试了一下恢复.
我发现当时itpub的dba可能也有相当的苦衷.
如果这种事情发生在我们公司,如何恢复还确实是需要权衡的一件事情.

我先恢复了一个凌晨3点生产数据库的备份.
然后通过binlog将数据库推至早晨9点
mysqlbinlog --start-position=374720715 --stop-datetime=‘2015-06-07 09:00:00‘ mysql-bin.004989 mysql-bin.004990> /data/tmp/test.sql
这个test.sql文件有1.7G
执行这个binlog从09:26至10:06结束,共计花费30分钟

然后修改了参数innodb_flush_log_at_trx_commit=0
再将9点至10点的binlog导出
mysqlbinlog --start-datetime=‘2015-06-07 09:00:00‘ --stop-datetime=‘2015-06-07 10:00:00‘ mysql-bin.004989 mysql-bin.004990> /data/tmp/test2.sql
test2.sql有962M
执行test2.sql,从10:15开始至10:29结束,大致用时15分钟.

假设下午4点半出现误操作,需要恢复至4点的数据
仅仅是使用binlog进行不完全恢复的时间,大致就是
135分钟(30+7*15,从凌晨3点到9点需要30分钟,假设9点以后每个小时需要15分钟恢复)
也就是2小时零15分钟!!
而实际时间应该比这个还要长些.估计3小时以内能恢复就不错了.中间还不能出现任何差错

这时候,估计已经里三层外三层的把dba包的水泄不通了..
每分钟的停机,都是真金白银的损失(携程..)
是损失一些数据先把系统拉起来,还是尽量保一些数据,确实是一个值得权衡的事情.
(不过这种权衡已经不是dba能做的了..都是领导决定的..不过领导肯定会狠狠的给你一个白眼..)

有几个思考

1.为什么会有这么多binlog数据?
在我们单位日志是记录在生产库的,甚至都不是单独的schema
大量的日志确实给恢复造成了极大的压力.
如果我设计系统,一定会将日志放在单独的数据库,最起码也是单独的schema

2.不同于mysqldump,不完全恢复调整innodb_flush_log_at_trx_commit参数似乎作用不大.

3.异地恢复之前一定要调整的参数
innodb_buffer_pool_size
max_allowed_packet(要恢复的目标服务器配置低于源服务器的配置,可能报错,导致恢复失败!!)

4.增加force参数
mysql -uroot -p --force -S mysql.sock < /data/test.sql 

5.备份本质上是防止人为的错误,而下午又是高发期.
考虑是否在下午1点,增加一个全备份.

bubuko.com,布布扣

关于不完全恢复的一些思考

原文:http://blog.itpub.net/29254281/viewspace-1690247/

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!