在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现弹性扩展的读取能力,并分担数据库压力,RDS SQL Server支持通过创建一个或多个只读实例来实现读写分离,通过只读实例满足大量的数据库读取需求,可以增加应用程序的吞吐量。
简介
RDS SQL Server基于源生AlwaysOn技术,通过物理复制方式复制主实例生成只读实例,实现数据的同步。只读实例的数据与主实例保持一致,并且主实例的数据更新会自动同步到所有只读实例。
您需要开通读写分离(只读地址),并在应用程序中配置主实例地址和只读地址,系统会将写请求转发到主实例,将读请求转发到只读地址,只读地址会根据权重将读请求自动转发给备节点和所有配置的只读实例中。
RDS SQL Server和RDS MySQL的读写分离功能略有不同:
RDS SQL Server:需要在应用程序中分别配置主实例地址和只读地址,实现读写分离。
RDS MySQL:只需要在应用程序中配置一个读写分离地址,实现读写分离。
RDS SQL Server集群系列实例支持备库可读功能。集群系列的主实例创建完成后,备节点默认只读。更多详情,请参见备库可读。
只读地址和内外网地址区别
开通只读地址后,您将获得一个额外的只读地址,将其配置在应用程序中,当客户端发出的读请求到达只读地址时,请求会根据实例的权重自动分配给备节点和所有配置的只读实例进行处理。
如果应用程序中只配置了主实例的内网或外网地址,那么请求只会被发送给主实例,而不会被分配给只读实例进行处理。
因此,为了实现读写分离,必须在应用程序中添加主实例地址和只读地址,并配置只读地址的权重。
读写分离优势
统一只读地址,方便维护。
通过连接只读地址,即可方便地对只读实例进行读操作,降低了维护成本。同时,应用程序无需进行任何修改,只需添加只读实例的个数,即可不断扩展系统的处理能力。
高安全链路原生支持,提升性能。
如果您在云上自行搭建代理层实现读写分离,在数据到达数据库之前需要经历多个组件的语句解析和转发,对响应延迟有较大的影响。而RDS内置于已有的高安全链路,没有任何额外的组件来消耗时间,可以有效降低延迟并提升处理速度。
可自定义设权重,符合多场景使用。
您可以自定义设置只读实例的读请求权重,以适应不同的场景需求。
实例健康检查,提升数据库系统的可用性。
读写分离模块会自动对只读实例进行健康检查,当发现某个实例发生宕机或延迟超过阈值时,系统将不再向该实例分配读请求,而是在剩余的健康实例间进行分配,以此确保单个只读实例发生故障时,不会影响应用的正常访问。当实例被修复后,RDS会自动将该实例纳回请求分配体系内。
说明为避免单点故障,建议您为一个主实例创建至少两个只读实例。
只读地址免费使用,降低资源及维护成本。
RDS用户可以免费使用只读地址,无需支付额外费用。但只读实例需要按量付费。
注意事项
请参见创建SQL Server只读实例和开通读写分离(只读地址)文中的注意事项部分。
费用说明
创建只读实例会产生费用,支持包年包月和按量付费两种方式计费。包年包月费用请以实际购买页为准,按量付费具体费用请参见只读实例价格。
使用方法
开始创建只读实例,详情请参见创建SQL Server只读实例。
开通读写分离连接,并配置只读地址的权重比,系统将根据已配置的权重比例处理读请求,详情请参见开通读写分离(只读地址)。