SQL Server 高可用方案

简介:

方案一:Asynchronous Mirror + Alias

方案介绍

数据库服务器配置异步镜像关系,程序客户端连接串配置别名连接。

1. 在SQL Server客户端配置中创建别名,在客户端的连接串设置中用别名代替服务器名或IP地址。

2. 写一个实用程序,在镜像角色切换的时候,更新别名。

3. 更新别名可通过修改相应的注册表字符串来完成,位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo

方案优缺点

优点:对于实现计划中的数据库迁移安全、快捷、简单。仅需修改别名对应IP地址。

缺点:对于少量业务应用管理较实用。

 

方案二:Asynchronous Mirror + Hosts

方案介绍

数据库服务器配置异步镜像关系,程序客户端配置域名连接,Hosts文件配置IP和域名的对应关系。

1. 在客户端机器中修改Hosts文件,创建域名和主数据库服务器IP的对应关系。

2. 写一个实用程序,在镜像角色切换的时候,更新Hosts文件中的IP地址。Hosts文件位于Hosts文件位于C:\Windows\System32\drivers\etc\Hosts

3. 清空客户端机器的DNS缓存。

方案优缺点

优点:仅需修改客户端Hosts文件中的IP和域名对应关系后,清空DNS缓存,重新获取新的主服务器信息。

缺点:相较方案一,有一定延时。

 

方案三:Asynchronous Mirror + DNS

方案介绍

数据库服务器配置异步镜像关系,程序客户端配置域名连接,DNS服务器配置IP和域名的对应关系。

1. 创建DNS CNAME / A 记录指向活动的数据库服务器。

2. 在客户端连接串设置中,使用一个虚拟的名称。

3. 写一个实用程序完成以下工作:

a) 更新DNS记录

b) 在镜像角色切换的时候,清空客户端机器的DNS缓存

方案优缺点

优点:对于实现大批量业务应用平台化管理较实用。

缺点:需要修改DNS服务器端记录配置信息,再清理客户端DNS缓存,重新获取新的主服务器信息。过程相对繁琐;需要考虑DNS服务器的高可用;相较方案一、二,有一定延时。

 

方案四:AlwaysOn

方案介绍

AlwaysOn是一项集合了故障转移群集、数据库镜像和日志传送的优点于一身的、功能强大的“高可用性+灾难恢复”技术。

AlwaysOn利用了Windows故障转移群集的健康监测和自动故障转移的特性,因此它必须建立在Windows故障转移群集之上。但是和SQLServer群集不同的是,可用性组里的数据库并不是一定要求存放在共享存储(SharedDisk)上的,它们也可以存储在本地磁盘上。另外,可用性组是以用户数据库的集合为单位进行健康检测和故障转移的,而不像SQLServer群集那样是以整个实例为单位。

方案优缺点

优点:AlwaysOn可用性组,每个可用性组是一个包含了一个或数个用户数据库的容器,可用性组里的所有数据库作为一个整体发生故障转移;辅助服务器可用于只读的访问请求;辅助服务器可以执行备份和DBCC命令。

缺点:AlwaysOn的SQLServer实例,最好使用同样的固定端口;基于Windows群集。

 

方案五:Synchronous Mirror

方案介绍

当事务安全设置为 FULL 时,数据库镜像会话便会在初始同步阶段后以高安全性模式同步运行。又细分为:

1. 不带自动故障转移功能的高安全性模式

当伙伴连接在一起并且数据库已同步时,支持手动故障转移。如果镜像服务器实例出现故障,则主体服务器实例不会受到影响并且公开运行(即,未镜像数据)。如果主体服务器丢失,则镜像会挂起,但可以将服务强制到镜像服务器(可能造成数据丢失)。

2. 带自动鼓掌转移功能的高安全性模式

自动故障转移通过确保在丢失一个服务器之后仍向数据库提供服务来提供高可用性。自动故障转移要求会话具有第三个服务器实例(“见证服务器”),理想情况是见证服务器驻留在第三台计算机上。

方案优缺点

优点:无数据损失。

缺点:对业务性能要求较高的业务一定影响;需要部署一台见证服务器。

 

方案六:SQL Server Cluster

方案介绍

SQL Server 故障转移群集构建于 Windows Server 故障转移群集之上。Windows服务器故障转移集群旨在提供高可用性服务或应用程序集群内运行故障转移。它包含一组独立运行的服务器来提高应用程序和服务的可用性。故障转移集群可以防止硬件和软件故障, 将故障资源从一个服务器 (或集群节点) 转移到另一个的节点。故障转移是一个过程, 以一个集群服务或应用程序在一个节点上离线,并将它重新联机在另一个节点。整个过程对用户是透明的。

方案优缺点

优点:有性能的影响小。

缺点:基于Windows群集;停机时间约等于SQL Server服务重启的时间+数据库恢复时间;无法抵御共享存储磁盘故障。

 

方案七:Hyper-V + SQL Server Cluster

方案介绍

很多用户在Hyper-V虚拟机中用到了MS SQL Server。但是单独(standalone)的SQL Server 不能提供高可用性和灾难恢复的功能。在对可用性有较高要求的Hyper-V用户面前,故障转移群集(Failover cluster)是必然用到的功能。当虚拟的生产服务器宕机时,热备份中的虚拟的服务器可以很快投入工作中。

方案优缺点

优点:减少计划中的业务停机时间,可利用Hpyer-V的动态迁移功能。

缺点:需要虚拟化,应用于压力小的业务。

 

方案八:Log Shipping

方案介绍

可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库)。不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使辅助数据库与主数据库基本保持同步。目标服务器充当备份服务器,并可以将查询处理从主服务器重新分配到一个或多个只读的辅助服务器。日志传送可与使用完整或大容量日志恢复模式的数据库一起使用。

方案优缺点

优点:支持多副本。

缺点:故障转移后不可逆;对客户端不透明;停机时间较长。

 

方案九:Transactional Replication

方案介绍

事务复制通常从发布数据库对象和数据的快照开始。 创建了初始快照后,接着在发布服务器上所做的数据更改和架构修改通常在修改发生时(几乎实时)便传递给订阅服务器。 数据更改将按照其在发布服务器上发生的顺序和事务边界应用于订阅服务器,因此,在发布内部可以保证事务的一致性。

方案优缺点

优点:数据库对象级别。

缺点:对性能的影响较高。

 

方案十:以上方案的混合使用

方案介绍

如镜像结合日志传送等。

方案优缺点

优点:叠加多种方案的优点。

缺点:增加对性能的影响和管理的复杂度。

 

方案十一:NLB集群

方案介绍

NLB集群

方案优缺点

优点:透明

缺点:系统层技术复杂。

 

附表1:SQL Server高可用方案对比

功能

故障转移群集

日志传送

数据库镜像

事务复制

AlwaysOn

保护级别

实例级

数据库级

数据库级

数据库对象级

数据库级

是否有数据损失

/

可能有少量数据损失

无数据损失(同步模式)

可能有少量数据损失

无数据损失(同步提交模式)

自动故障转移

是(高可用操作模式)

是(自动故障转移模式)

故障转移后是否可逆

对客户端是否透明

是,自动重连接到相同IP的另一个节点

是,自动重定向(需要驱动程序支持)

停机时间

约等于SQL Server服务重启的时间+数据库恢复时间

较长

约等于数据库恢复时间

较长

约等于数据库恢复时间

多个备用数据副本

是(最大4个)

备用数据副本可读

/

能抵御用户误操作

能抵御磁盘故障

是否有特定硬件要求

windows群集

要求有较好的磁盘和网络

Windows群集

对性能的影响

其他功能

/

自动页面修复

/

冲突解决,双向数据同步等

自动页面修复,只读路由,辅助数据库备份,辅助数据库执行DBCC命令

版本支持

SQL Server 2000及以后

SQL Server 2000及以后

SQL Server 2005及以后

SQL Server 2000及以后

SQL Server 2012

































本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1579613,如需转载请自行联系原作者



相关文章
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
813 9
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
670 9
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
2083 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
849 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
579 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
366 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1410 3
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1409 1
|
SQL 存储 测试技术