场景描述
在业务使用过程中,经常遇到写入量突然增大的场景。在这时,可以考虑经通过配置RDS SQL Server镜像同步模式,而又能承担少量数据丢失的风险,可以将镜像模式配置为高性能模式,来临时缓解降低写入压力。
适用SQL Server版本范围
支持RDS SQL Server高可用(企业)版本(不包含本地盘版本)
SQL Server镜像技术
数据库镜像是一种提高SQL Server数据库可用性的解决方案。镜像是在每个数据库的基础上实现的,并且只适用于使用完全恢复模型的数据库。
镜像技术概述
- 数据库镜像维护在两个不服务器维护两数据一样的副本,在数据库启动通过镜像会话来保护数据同步。
- 主实例提供给客户端服务,备实例充当热备,当需要切换角色时,可以通过故障转移,快速将备实例切换成主实例。
- 数据库镜像涉及尽可能快地将主数据库上发生的每个插入、更新和删除操作重做到镜像数据库。重做是通过向镜像服务器发送活动事务日志记录流来完成的,镜像服务器会按顺序尽快地将日志记录应用到镜像数据库。
数据库镜像的优点
- 提高了数据库高可用性
在灾难发生时,在具有自动故障转移的高安全模式下,故障转移将快速使数据库的备用副本联机(不会丢失数据)。在其他操作模式中,数据库管理员可以选择将服务强制转移到数据库的备用副本(可能导致数据丢失)。
- 提高了数据库高安全性
数据库镜像提供完全或几乎完全的数据冗余,这取决于操作模式是高安全的还是高性能的。
- 在升级期间提高生产数据库的可用性
要尽量减少镜像数据库的停机时间,可以依次升级承载故障转移合作伙伴的SQL Server实例。这将只导致单个故障转移的停机时间。这种升级形式称为滚动升级。
什么是高性能模式和高安全模式
- 高性能模式(异步运行):事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交,而此操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
- 高安全模式(同步运行):当会话开始时,镜像服务器使镜像数据库尽快与主体数据库同步。一旦同步了数据库,事务将在双方提交,这会延长事务滞后时间。
如何配置高安全模式
- 查看数据库版本
select @@version;# 结果中包含如下信息为企业版本 # "Enterprise Edition"
- 查看当前数据镜像模式
select db_name(database_id),mirroring_safety_level,mirroring_safety_level_desc from sys.database_mirroring;# 字段:mirroring_safety_level_desc 值:OFF 为高性能 # 字段:mirroring_safety_level_desc 值:FULL 为高安全 # 字段:mirroring_safety_level_desc 值:NULL 没有镜像
- 配置高性能模式
alter database db01 set partner safety off;
- 关闭高性能,配置高安全模式
alter database db01 set partner safety full;
- 简单模拟写入测试
create database db01;use db01;createtable t1(id int, name varchar(50));DECLARE @num INT;DECLARE @count INT;SET @count =1;SET @total_count =100000;WHILE @count <= @total_count BEGINinsertinto t1(id, name)values(@count,'abc');SET @count = @count +1;END;
结果:高性能模式写入10万条记录为34秒,高安全模式写入性能为91秒;大概提升3倍左右。