📅  最后修改于: 2023-12-03 15:17:44.453000             🧑  作者: Mango
MS SQL Server 高可用性(HA,High Availability)技术是为保证企业核心数据的高可用性而研发的一种技术,能够提供数据的冗余备份和自动容错等功能,以保证系统的数据持久性和连续可用性。
MS SQL Server 2012 开始,支持 Always On 高可用组合功能,主要包括以下三种模式:
Always On 可用性组:将一台或多台 SQL Server 实例打包成一个单一的组,该组作为完整的实例在网络上显示,并且可以使用 Windows 故障转移群集或者自行使用 DNS 解析或负载均衡器来目标 IP 地址。
Always On 多个节点群集:使用 Windows Server 故障转移群集服务(WSFC)组建一个群集,再将 SQL Server 的实例加入到节点群集上,实现多个节点之间的自动容错转移。在此模式下,所有成为 Windows Server 故障转移群集成员的 SQL Server 实例都是可被决策器管理的。
Always On 可读辅助副本:为 SQL Server 添加一个运行“只读”查询的辅助副本,在主副本间进行数据同步,方便查询。
数据库镜像是一种高可用的解决方案,将一个数据库的更改实时复制到另一个数据库中,并使其保持协调。数据库镜像从理论上来讲是一种在两个位置中的一个数据库的拷贝。其中主数据库为主要的写入数据库,而辅助数据库(即镜像数据库)则为只读。
一项有效且用户友好的数据库高可用性解决方案——始于 SQL Server 2012。此解决方案提供了更简便的方法来保障 SQL Server 数据库,使其仅有最少的数据丢失,同时不会导致停机时间的延长。
-- 源服务器创建可用性组
CREATE AVAILABILITY GROUP <ag_name>
WITH (
AUTOMATED_BACKUP_PREFERENCE = SECONDARY, -- 自动备份偏移方向设置为从数据库,这样会将自动备份作用于辅助副本
FAILURE_CONDITION_LEVEL = 3, -- 对副本不健康站分别不同级别的触发值
HEALTH_CHECK_TIMEOUT = 30000 -- 设置健康检查超时时间,单位毫秒
)
FOR
<database_name>
REPLICA
ON
<server_name>,
<server_name>;
GO
-- 将数据库加入到可用性组
ALTER DATABASE <database_name>
SET HADR AVAILABILITY GROUP = <ag_name>;
GO
-- 手动failover 触发故障转移,需使用 sys.sp_server_diagnostics 诊断故障
ALTER AVAILABILITY GROUP <ag_name>
FAILOVER;
GO
-- 设置代替同步副本,解决异步可用性组的数据漂序
ALTER AVAILABILITY GROUP <ag_name>
MODIFY REPLICA ON '<server_name>'
WITH
(
PRIMARY_ROLE ( ALLOW_CONNECTIONS = <ALL|READ_ONLY|NONE> ), -- 设置同步模式
SECONDARY_ROLE ( ALLOW_CONNECTIONS = <ALL|READ_ONLY|NONE> ), -- 设置异步模式
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, -- 条件级别设置
FAILOVER_MODE = <MANUAL|AUTOMATIC>, -- 自动/手动故障转移
SEEDING_MODE = <AUTOMATIC|MANUAL>, -- 是否自动进行数据同步
SECONDARY_ONLY = <0|1>, -- 缺省值为0,表示副本是可读还是只有支持次要角色
SESSION_TIMEOUT = 10, -- 设置保持活动连接的时间,若此期间没有数据来往,则关闭连接
ENDPOINT_URL = '<endpoint_url>') -- 在计算机中添加复制端点,并将副本添加到可用性组时指定
WITH NO_WAIT
Log Shipping 是 SQL Server 2000 中开始就有的一种非常经典的高可用技术,本质上是通过将一个数据库日志实时传送到另一个数据库,来保障可用性和可靠性。
日志传送有三个核心组件:主数据库、辅助数据库和日志传送作业。
MS SQL Server 高可用性技术是 SQL Server 非常重要的特色功能之一,随着企业信息化程度的提高,对于数据库的高可用性和稳定性的要求也越来越高,而 MS SQL Server 高可用性技术能够很好地满足这一需求。常用的技术有 Always On 高可用组合,数据库镜像和日志传送等。