参考文档
- https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-2017
- https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/getting-started-with-always-on-availability-groups-sql-server?view=sql-server-2017
- ALTER AVAILABILITY GROUP (Transact-SQL): https://docs.microsoft.com/zh-cn/sql/t-sql/statements/alter-availability-group-transact-sql?view=sql-server-ver15
1.高可用性技术
1. 复制Replication(快照、事务、合并)
应用场景: 负载均衡、提供副本读,写操作。
分区将历史数据复制到其它表中。
授权,将数据提供它人使用。
数据合并。
故障转移。
优点:
实现简单。
数据同时同步,几乎达到镜像。
可以实现对某些表,或表数据过滤进行复制。
缺点:
不适合做高可用,因为整个库复制影响性能。
不支持故障自动切换。
要求:
必须有主键的表才能做复制
2.日志传送log shipping(备份-->复制-->恢复)
应用场景: 多台主从服务器定时备份同步。
负载均衡、提供副本只读。 优点: 实现简单。
要求: 必须是完整备份模式。
主服务器、辅助服务器、监视服务器的备份文件夹必须有读写权限。
sql agent代理必须启动
3.镜像
应用场景:
要求高服务可用性。
要求实现自动故障转移。
确保数据的完整。
优点:
根据业务可实现同步和异步镜像。
快速的故障转移恢复。低硬件成本。
要求:
主体服务器。
镜像服务器。
见证服务器
4.故障转移群集
应用场景:
硬件故障转移。
服务故障转移。
人工故障或各种其它原因等。
优点:
根据业务进行灵活的群集拓扑结构
快速且自动故障转移
缺点:
群集非活跃节点浪费硬件资源
群集节点间共用的共享存储,仍然存在潜在的单点故障隐患。
没有负载能力,不是提升性能的技术。
要求
基于windows故障转移
5.alway on 优点
支持最多5个可用性副本
支持替代可用性模式(同步,异步)
支持集中形式的可用性组故障转移:自动故障转移、手动故障转移、强制故障转移
支持2种辅助功能,只读副本访问/辅助副本执行备份操作
支持每个可用性组的可用性侦听器
支持灵活的故障转移策略以便更好地控制可用性故障转移
支持用于避免页损坏的自动页修复
支持加密和压缩
提供了一组集成的工具来简化部署和管理可用性组
5.1故障转移灵活设置
副本 | 可用性模式和故障转移模式设置 |
---|---|
A | 同步提交模式(自动故障转移) |
B | 同步提交模式(自动故障转移) |
C | 同步提交模式(仅限计划的手动故障转移) |
D | 异步提交模式(仅限强制故障转移) |
6.选择alway on原因
7.节点
7.1两个节点
7.3三个节点
8.多网
小结:
单实例激活alwaysOn是为了以后扩张节点时不造成停机的预留手段
4个节点、5个节点的情况都属于以上两种基础解决方案
如果准备多节点情况下,需要明确是否有使用MSSQL的其他服务如:Analysis Service、Intergration Service等,如果有且需要共享这些服务器,则将这部分Feature独立出alwaysOn所在实例,新建其他实例使用MSSQL Cluster同时为这些服务提供Failover能力
建议不在Hyper-V Host构建Live Migration 的VM中部署AlwaysOn,至少不使用该Host Cluster作为AlwaysOn Cluster,当Host Cluster 发生Failover时,可能导致VM中AlwaysOn漂移