SQL SERVER 中常见的高可用方案

388 阅读4分钟

数据库环境

SQL SERVER 2005 +

四种模式

一、复制模式(Replication),也被称为发布-订阅模式

我们常用的是Transactional Replication。可以支持单向和双向的数据同步。工作在Table Level。由于基于transaction,(内部使用了类似Snapshot链出改变页的方法),他的同步单位较小,在实践中,往往只需要几分钟的时间就可以得到最新的数据。缺点,虽然允许Replication  Schema Change,但是对于真正的DDL修改的时候有时需要手动的进行修改。容易出现数据同步问题,而且复杂的查询可能导致Replication的性能并导致数据同步问题

二、日志传输模式(Log Shipping)

基于Backup/Restore。换而言之,它实际是自动的log backup传输到远程,然后恢复的。正如Restore备份数据库的时候数据库会处于单用户状态,在restore的时候,所有的当前用户链接会被断开,当然可以配置等待所有操作完成。没有数据不同步的问题。

三、镜像传输模式(Databaes Mirroring)

只是在考MSITS的时候涉及过这个技术,没有实际用过。同步的数据库处于不可用状态,但是可以通过snapshot进行访问。snapshot的数目不被限制,但是不得不选择不同的名字。这对于数据库查询比较麻烦。没有数据不同步的问题。

四、故障转移集群(Failover Clustering)

集群技术是微软提供的,可用性最高的主备方案。它是将多台服务器通过一个共享的外部存储区域(SAN),连接成一个资源共享的服务器群体,数据库文件和实例,都存放并运行在该共享区域节点上,每台服务器相当于一个节点,共同访问共享的节点实例。服务器只有一个节点处于活动状态,当活动节点出现故障,会有其他节点主动启动,取代当前故障点,整个过程只需要几秒钟,用户无法感知。

不同模式的特点

  • 复制模式:最大的优点在于数据同步的迅速,用户不会感觉到变化,用户查询不会被数据的更新影响。
  • 日志传输模式 的优点则在于简单易用,容错性高。但用户被经常打断。
  • 镜像传输模式:数据库镜像对可用性的提高程度远远大于先前使用 Microsoft SQL Server 对可用性的提高,并为故障转移群集或日志传送提供了易于管理的替代或补充。同步数据库镜像会话时,数据库镜像提供了热备用服务器,可支持在已提交事务不丢 失数据的情况下进行快速故障转移。在一般的镜像会话期间,如果生产服务器出现故障,客户端应用程序可以通过重新连接到备用服务器来快速进行恢复。
  • 故障转移集群:有很多优点,是目前最高效的高可用技术,但是他也有很明显的缺点,所有的节点,都依赖于共享节点实例,如果共享节点出现故障,将会导致整个集群失去作用,且很难恢复。

下面借一个图来说明各个特点:

 复制(Replication)日志传送(Log Shipping)镜像(Mirroring)故障转移集群(Failover Clustering)
标准版/企业版YESYES标准版仅支持同步模式标准版仅2节点
节点数1:N1:N1:1取决于操作系统节点数上限
粒度数据库数据库实例
恢复模式Full/SimpleFull/Bulk_loggedFullALL
是否监视主库故障NO     监视器只监视同步状态,     不监视publication server failureNO     monitor server只监视backup/retore status     不监视primary server failureWitness,可监视主库故障YES
是否自动故障转移NO(warm standby)NO(warm standby)YES(hot standby),     如果没有witness则不能自动,为warm standbyYES
延迟取决于Log Reader Agent & Distribution Agent取决于Log backup/restore频率同步/异步模式只有一份数据
同步方式从distributor分发,可推送,可读取通过数据库备份文件的copy/restoreLog stream只有一份数据
从库是否可以访问subscription可读写,     但默认写不会被回传到Publication可设置secondary server为standby模式,只读mirrored db可通过snapshot只读只有一份数据
应用场景读写分离读写分离,温备读写分离,温备/热备服务器/操作系统/应用软件的备份