当前位置:首页 > 问答 > 正文

SQL Server复灾那些事儿,真搞懂了没?别光听说要会用才行啊

行,咱就不整那些虚头巴脑的理论了,直接唠点干的,SQL Server的复灾,说白了就是“万一数据库服务器趴窝了,咱怎么能让业务最快爬起来,数据还尽量不丢”,这事儿不能光听个概念,关键时候得真能上手操作。

核心就俩事儿:备份与还原、高可用

别想太复杂,复灾的根基就是备份,这跟你电脑上重要文件得多存几个地方是一个道理,SQL Server的备份主要分三种,你得知道它们分别是干啥的:

SQL Server复灾那些事儿,真搞懂了没?别光听说要会用才行啊

  1. 完整备份(来源:SQL Server官方文档):这就像是你给数据库拍一张完整的“全身照”,把某个时间点上数据库里所有的数据、对象、结构都存下来,这是所有恢复的基础,没它什么都白搭,咱会定期做,比如每天深夜业务不忙的时候来一次。
  2. 差异备份(来源:SQL Server官方文档):这个可以理解为“增量自拍”,它只备份自从上一次完整备份之后,有哪些数据变化了,所以它比完整备份快,文件也小,比如你每天凌晨做完整备份,然后每隔几个小时做一次差异备份,这样万一白天出问题,恢复起来比只靠完整备份要快。
  3. 事务日志备份(来源:SQL Server官方文档):这个最细,它记录的是每个小时、每一分钟甚至更短时间内的每一个“操作”(比如张三下单、李四改了个价格),它的核心价值在于可以实现点时间还原,比如说,你的数据库在下午2点05分被误操作删了重要数据,但你在2点04分刚做过日志备份,那你就可以先恢复今天凌晨的完整备份,再恢复之后最新的差异备份,最后把今天所有的日志备份按顺序恢复过来,但只恢复到2点04分那个时间点,这样就能“跳过”那个该死的误删除操作。

光有备份还不够,因为从备份里恢复数据需要时间,业务可能等不起,这时候就需要高可用技术了,目标是让服务中断的时间尽可能短,甚至用户感觉不到。

  1. 故障转移群集(来源:微软技术文档):这个有点像“备用发动机”,它需要多台服务器(节点)共享一套存储(比如一个SAN盘柜),平时只有一台主服务器在干活,其他节点待命,一旦主服务器宕机了,系统会自动或者手动快速切换到另一个节点上,因为数据都在共享存储里,所以新节点能接着用原来的数据继续提供服务,缺点是共享存储本身可能是个单点故障。
  2. Always On 可用性组(来源:SQL Server 2012及以后版本核心功能):这是现在更主流、更强大的方案,它可以理解成“实时数据同步镜像”,你搭建一个主数据库(主副本),然后可以配置一个或多个备用数据库(辅助副本),这些副本可以在同一机房,也可以在不同城市,主数据库上的任何数据变化,都会几乎实时地同步到这些辅助副本上,好处太多了:
    • 自动故障转移:主库挂了,辅助副本能自动顶上,业务中断时间非常短。
    • 副本可读:辅助副本平时可以用于跑报表、查询等只读操作,分担主库的压力。
    • 跨地域容灾:把辅助副本放在另一个机房或城市,就算整个机房火灾地震了,远端的副本还能用。

光有技术不行,得有流程和演练

SQL Server复灾那些事儿,真搞懂了没?别光听说要会用才行啊

这才是最关键的!很多人以为配置好了高可用就高枕无忧了,结果真出事儿的时候手忙脚乱。

  • 恢复时间目标(RTO)和恢复点目标(RPO)(来源:业务连续性管理概念):你得跟业务部门拍板儿,RTO是“业务最多能停多久”?是一分钟不能停,还是允许停半小时?RPO是“最多能丢多少数据”?是能丢一分钟的数据,还是一秒钟都不能丢?这两个指标直接决定了你该用哪种技术方案,要是RPO要求为零,那你必须用Always On这类实时同步的方案,并且频繁做日志备份。
  • 定期恢复演练(来源:血淋淋的教训):这是检验你那一套复灾配置是不是纸老虎的唯一标准,你不能等到数据库真瘫了才第一次去点“故障转移”按钮,必须定期(比如每季度)找个夜深人静的时候,主动模拟故障:
    1. 把主服务器关机或者把网络断掉。
    2. 看看辅助副本是不是真的能自动或手动成功接管。
    3. 接管后,业务程序能不能连上来正常访问。
    4. 等原主服务器修好后,再把它加回集群,看看数据同步是否正常。
    5. 把整个流程、遇到的问题、解决步骤都详细记录下来,写成应急预案。

SQL Server复灾,你别光听人说“我们有备份”、“我们做了集群”,你得自己心里有数:

  • 备份策略合理吗?完整备份、差异备份、日志备份的频率设对了吗?备份文件放的地方安全吗?有没有定期验证备份文件是好的(能成功还原)?
  • 如果用了高可用技术,你清楚故障转移的手动和自动流程吗?你亲自演练过吗?
  • 真出了大事,你知道第一步该找谁,第二步该干什么吗?应急预案是不是还躺在电脑里吃灰?

这些东西,听一遍觉得懂了没用,非得自己动手配置一遍,再模拟演练几次,才能算“真搞懂了,也会用了”,不然,复灾方案就永远只是个听起来很美的摆设。