设为首页 收藏本站
查看: 754|回复: 0

[经验分享] SQL SERVER 运维日记-数据库备份

[复制链接]

尚未签到

发表于 2017-7-12 19:43:51 | 显示全部楼层 |阅读模式
概述
  昨天下午突然看到,《炉石传说》游戏数据库发生宕机并引发数据丢失事故的新闻。刚看到时,满满的不可思议。暴雪啊,网易啊。
  都是很牛叉的公司。他们出的游戏我都是很喜欢的。
DSC0000.png

  当我看到,第一时间着手抢修,重启服务器,并尝试数据恢复时,我的想法是他们的高可用方案呢?为什么不马上切换?
  当我看到相关备份数据库也出现故障时,就更无语了。其实这样的事情在我们的客户每年都会遇到很多。前不久就有一个医院, 数据库和备份都同时损坏,而且没有高可用的方案。
  虽然最终帮他们修复了好数据库,但还是丢失部分数据,而且中间1天时间,业务都是手动操作,严重影响业务。
  对于炉石这样的大公司,对应的方案应该是做得很全的,本次事故也可能是有其他的原因。
分析
  这个原因暂且不论,当遇到同样的问题时,相关的运维和DBA都是很绝望的。总结下上面的问题:
  1.缺乏高可用方案
  2.制定更好的备份的策略
解决
  有小伙伴提到高可用性,这里没有写。主要高可用 方案太多,在一篇文章难以说清楚,所以本文先给出备份的解决方案。
  下面给出我之前给某外企制定的备份策略,可以解决上面提到的备份的问题。小伙伴们可以参考下:
备份的位置
  1.本地的备份,放置于和数据库文件不同的物理磁盘
  2.异机备份。使用自动同步软件实时把备份同步到专门的NAS
  3.异地备份(可选)
备份方式
  首先,恢复模式强烈建议使用完整模式。为了保证数据库损坏时,能最快速度恢复业务。
  1.每周全备  
  2.每天差异
  3.每半小时日志
  备份的频率根据具体的业务情况可自行调整。
备份的选项
  到目前为止我们的备份策略看上去很完美了。可事实是这样的吗?答案是否定的。
  我们做好了看似完美的备份。但是如果我们的数据库本身已经存在页损坏,那么我们的做再多备份也是徒劳。因为备份的文件也是损坏的。
  那我们如何解决呢?最好的方法就是定期还原备份,然后立即运行DBCC CHECKDB。如果当时条件不允许持续还原和检查,那么使用RESTORE VERIFYONLY命令就是你另一个最好的选择了。但是RESTORE VERIFYONLY并不是单独使用的。它必须配合WITH CHECKSUM.意思就是,在BACKUP 的使用使用WITH CHECKSUM 参数,然后定期对备份的文件运行RESTORE VERIFYONLY 来验证备份文件的有效性。如果数据库中的某些页面损坏,使用WITH CHECKSUM 去备份的作业会马上失败。这可以让我们第一时间发现数据库页损坏的问题。
  举个栗子:
  BACKUP DATABASE AdventureWorks TO DISK = 'G:/backups/AdventureWorks_full.bak' WITH CHECKSUM
  假如你更改文件数据备份文件,然后在那个文件上运行RESTORE VERIFYONLY的话,会产生如下提示:
  Server: Msg 3189, Level 16, State 1, Line 1
Damage to the backup set was detected.
  Server: Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.
  设备 'd:\tttttt.bak' 上的介质簇的结构不正确。SQL Server 无法处理此介质簇。
报警
  备份有可能因为各种原因而失败,比如备份磁盘的空间满了,等数据库损坏的时候,突然发现备份任务失败了,再完美备份策略 百搭。所以对备份任务,增加邮件报警机制,如果备份失败了,可以第一时间知道并解决。
总结
  不好的备份策略,可能导致灾难性的后果。 相反好的备份策略可以让我们高枕无忧。看到这里的小伙伴们赶紧去检查下,自家的备份做好了吗?否则请自习下面武功秘籍:
DSC0001.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393275-1-1.html 上篇帖子: 探讨SQL Server并发处理队列数据不阻塞解决方案 下篇帖子: EXPERT FOR SQL SERVER诊断系列--索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表