读写分离是指通过一个读写分离地址实现读写请求的自动转发。通过RDS的读写分离地址,可以使写请求自动转发到主实例,读请求按照设置的权重自动转发到各个只读实例。本文将介绍如何开通读写分离功能。

前提条件

  • 实例是主实例(不是只读实例或灾备实例)。
  • 实例为如下实例类型:
    • MySQL 5.7高可用版(本地SSD盘)
    • MySQL 5.6
    • SQL Server 2017
  • 地域为:华东1、华东2、华北1、华北2、华北3、华北5、华南1、香港、美西、美东、亚太东南1(新加坡)、亚太东南2(悉尼)
  • 实例下有至少一个只读实例。关于如何创建只读实例,请参见创建只读实例
  • 实例下的只读实例没有设置只读实例延时复制时间。
  • 如果是MySQL实例,需要已打开数据库代理。关于如何打开数据库代理,请参见数据库代理简介

注意事项

  • 第一次开通读写分离功能时,为保证服务的正常使用,系统会自动将开通该功能的主实例及其所关联的所有只读实例都升级到后端管控系统的最新版本。主实例会有1次30秒内的闪断,而只读实例在整个重启过程中都无法访问。建议在业务低峰期开通读写分离功能,并确保您的应用有自动重连机制,以避免闪断影响。
  • 若您在2017年3月8日后,对要开通读写分离功能的主实例和只读实例都自行做过至少1次的重启或者规格变更操作,则这些实例的后端管控系统已经自动升级到最新版本,开通读写分离功能时,系统不会再对实例进行重启,也不会产生闪断,您无需重启实例即可正常使用。
  • 开通读写分离生成的读写分离地址是固定的,不会因为多次关闭/开启读写分离而变化,不用多次更改应用程序,降低维护成本。
    说明 读写分离地址暂不支持手动修改。


  • 开通及使用读写分离功能是免费的,当前仅收取只读实例的费用。

MySQL实例操作步骤

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库连接数据库代理
  5. 选择读写分离标签页,单击立即开启
    说明
    • 如果没有显示立即开启,请先打开数据库代理以及创建至少一个只读实例。
    • 若实例是在2017年3月8日前创建的,且在3月8日后没有进行过重启或规格变更操作,开启读写分离功能将会对主实例和只读实例进行一次重启。在系统弹出的提示框中,单击确定以开启读写分离。


  6. 填写设置信息,如下图所示。

    参数 说明
    地址类型 读写分离地址的类型。
    • 内网地址
      • 若主实例的内网类型是VPC,则读写分离地址的内网类型也是VPC。
      • 若主实例的内网类型是经典网络,则读写分离地址的内网类型也是经典网络。
    • 外网地址
    延迟阈值 只读实例同步主实例数据时允许的最长延迟时间。若一个只读实例的延迟时间超过该阈值,则不论该只读实例的权重是多少,读请求都不会转发至该只读实例。

    取值范围为0秒到7200秒。受限于SQL的执行情况,只读实例有一定的几率会出现延迟,建议该值不小于30秒。

    读权重分配 实例的读权重越高,处理的读请求越多。例如,假设主实例有3个只读实例,读权重分别为0、100、200和200,则表示主实例不处理读请求(写请求仍然自动发往主实例),3个只读实例按照1:2:2的比例处理读请求。
    • 系统分配:系统根据实例规格自动分配各个实例的读权重。后续该主实例下新增的只读实例也会自动按照系统分配的权重加入到读写分离链路中,无需手动设置。更多信息请参见系统权重分配规则
    • 自定义:手动设置各个实例的读权重,范围为0至10000。后续该主实例下新增只读实例的读权重默认为0,需要您手动修改。
    说明 不支持为已经设置只读实例延时复制时间的实例设置权重。
  7. 单击确定

    实例会进入创建网络连接中的状态,请您耐心等待一段时间,等实例变成运行中的状态后,再进入读写分离页面。

SQL Server实例操作步骤

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击集群管理
  5. 单击右侧立即开启

  6. 填写设置信息,如下图所示。

    参数 说明
    地址类型 读写分离地址的类型。
    • 内网地址:因为SQL Server只支持专有网络,因此内网地址的类型也是专有网络。
    • 外网地址
    读权重分配 实例的读权重越高,处理的读请求越多。例如,假设主实例有3个只读实例,读权重分别为100、200和200,则表示3个只读实例按照1:2:2的比例处理读请求。
    • 系统分配:系统根据实例规格自动分配各个实例的读权重。后续该主实例下新增的只读实例也会自动按照系统分配的权重加入到读写分离链路中,无需手动设置。更多信息请参见系统权重分配规则
    • 自定义:手动设置各个实例的读权重,范围为0至10000。后续该主实例下新增只读实例的读权重默认为0,需要您手动修改。
    说明 主实例默认不处理读请求(写请求仍然自动发往主实例)。