在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,增加应用的吞吐量。
简介
创建只读实例时会从备实例复制数据,数据与主实例一致,主实例的数据更新也会自动同步到所有只读实例。 只读实例拓扑图如下图所示。
说明
- 目前仅RDS SQL Server 2017企业集群版和2019企业集群版支持创建只读实例。
- 只读实例为单节点的架构(没有备节点)。

应用场景
- 单个实例负载过大时,可以创建只读实例,将读请求转发至只读实例,用于缓解主实例负载。
- 主实例因备份或维护等原因暂不可用时,可将读请求转发至只读实例,保证部分业务。
- 面对报表分析等场景,使用只读实例查询分析大量数据,不影响主实例。
- 面对紧急容灾场景,使用只读实例作为主实例的容灾备份,但切勿直接切换。
计费
支持包年包月和按量付费两种方式计费。具体费用请参见只读实例规格列表。
功能特点
- 计费方式:按量付费,使用更灵活。长期使用也可以包年包月,费用更便宜。
- 地域和可用区:与主实例在同一地域,可以在不同的可用区。
- 规格:可以与主实例不一致,并且可以随时更改。建议只读实例规格不小于主实例规格,否则易导致只读实例延迟高、负载高等现象。
- 网络类型可以与主实例不一致。
- 账号与数据库管理:不需要维护账号与数据库,全部通过主实例同步。
- 白名单:只读实例创建时会自动复制其主实例的白名单信息,但只读实例和主实例的白名单是相互独立的。若您需要修改只读实例的白名单,请参见设置白名单。
- 监控与报警:提供近20个系统性能指标的监控视图,如磁盘容量、IOPS、连接数、CPU使用率、网络流量等。
功能限制
- 最多创建7个只读实例。
- 因主实例已有备份,只读实例暂不支持备份设置以及手动发起备份。
- 不支持通过备份文件或任意时间点创建临时实例,不支持通过备份集覆盖实例。
- 创建只读实例后,主实例将不支持通过备份集直接覆盖实例来恢复数据。
- 不支持将数据迁移至只读实例。
- 不支持创建和删除数据库。
- 不支持创建和删除账号,不支持为账号授权以及修改账号密码功能。
常见问题
- Q:只读实例的计费方式可以转化吗?
- Q:变更只读实例的配置、释放只读实例、转化只读实例计费方式会影响主实例吗?
A:不会。
- Q:主实例上创建的账号在只读实例上可以用吗?
A:主实例创建的账号会同步到只读实例,只读实例无法管理账号。账号在只读实例上只能进行读操作,不能进行写操作。
- Q:如果主实例出现故障,是否支持把只读实例转变为常规实例?
A:不支持。
- Q:只读实例上的数据支持手动备份或自动备份吗?
A:由于备份在主实例中进行,只读实例暂不支持备份设置以及手动发起备份。
- Q:只读实例是否支持并行复制?
A:支持,RDS SQL Server默认为并行复制。
- Q:事务日志的清除机制是怎样的?A:RDS SQL Server事务日志分为两个阶段:
- 日志截断:通常每次的日志备份会自动做日志截断。但如果出现长事务、同步等待或内核相关问题时,截断会无法生效。
- 日志收缩:每日的常规备份包括日志收缩,您也可以通过控制台进行日志收缩,具体操作,请参见收缩事务日志。
- Q:如何理解只读实例的复制原理?若出现复制延迟,一般出现原因以及解决方法是什么?如何查看复制延迟?
A:创建只读实例时会从备实例复制数据,数据与主实例一致,主实例的数据更新也会自动同步到所有只读实例。
通常出现复制延迟原因如下:您可通过SQL Server 自治服务进行诊断查看或通过如下SQL查看:SELECT ag.name AS [availability_group_name] , d.name AS [database_name] , ar.replica_server_name AS [replica_instance_name] , drs.truncation_lsn , drs.log_send_queue_size , drs.redo_queue_size FROM sys.availability_groups ag INNER JOIN sys.availability_replicas ar ON ar.group_id = ag.group_id INNER JOIN sys.dm_hadr_database_replica_states drs ON drs.replica_id = ar.replica_id INNER JOIN sys.databases d ON d.database_id = drs.database_id WHERE drs.is_local=0 ORDER BY ag.name ASC, d.name ASC, drs.truncation_lsn ASC, ar.replica_server_name ASC