focus on linux, c/c++, lua

Mysql 数据备份与恢复初探

      先假设有以下几个变量:
      1,DB_A:提供服务的database,也就是master
      2,DB_B:它是DB_A的一个slave
      3,DB_C:安全起见,异地的一个备份中心,跨局域网(不是一个机房的)
     方案也不是很复杂,基本上是通过一些shell脚本实现的,没有用第三方的工具,这里的备份都是做的逻辑备份,没有做物理备份,数据量前期不大,不打算物理备份。
切入主题,首先做A与B的一个master->slave的单向同步,由于A和B是在同一个局域网,所以速度应该很快,没有问题。接下来,我就有一个疑惑了,就是本地备份在哪台机器上做,是A还是B,如果在A上做,那么肯定会影响服务的性能,如果在B上做,那么B万一和A不小心失去连接了怎么办,尽管你会说这是维护的问题,但从直觉上讲,我更相信A上的数据,把你的想法告诉我,谢谢。假定是在A上做逻辑备份,24小时做一个全备份,3小时做一次增量备份,注意在做备份的时候,可以把备份日志发送到维护人员的邮箱,这样就省去了登陆服务器看日志了。在本地做好备份后,还要把备份数据用ssh发到C,(这么看来,还是B来做这些比较妥当)。这里又多出一个问题,由于用脚本维护,必会让A无须密码验证就可以ssh C了,是否存在安全隐患呢?
      恢复数据的工作,做起来量要比备份少很多,但是要求精度要高更多。这里要提醒下各位官人就是要定期的检查自己的备份方案,测试自己的备份数据是否生效。否则灾难发生的时候,只能看着脚本发呆,一切都是个悲剧。恢复的流程为:先恢复全备份数据,然后针对logbin做基于时间点,或是基于位置的恢复。梗概也就如是,欢迎大家交流!


      方案修订后记:
      A对B&C做实时集群同步,不用B再向C做同步了。B所作的事情,C一样都可以做,包括全备份和增量备份。http://hi.baidu.com/litaosmile/blog/item/280823135f250e29dc540151.html这篇文章详细说明了同步的原理,mysql的同步是异步的,所以不管如何同步,都不会影响Master的性能,感谢文刀兄的特别提醒!

posted on 2010-03-24 11:47 zuhd 阅读(1613) 评论(1)  编辑 收藏 引用 所属分类: my tips

评论

# re: Mysql 数据备份与恢复初探 2010-03-25 17:03 99读书人

来学习一下!  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理