开通数据库代理读写分离

最后更新时间:2021-08-31 14:34:17

    本文为您介绍如何通过云数据库 MySQL 控制台开通数据库代理读写分离。

    通过 数据库代理读写分离 功能,在应用程序中配置数据库代理地址,就可以使写请求自动转发到主实例,读请求自动转发到各个只读实例。

    前提条件

    操作步骤

    1. 登录 MySQL 控制台,在实例列表,选择已开启代理的主实例,单击实例 ID 或“操作”列的【管理】,进入实例管理页面。
    2. 在实例管理页面,选择【数据库代理】>【读写分离】页,单击【立即开启】。
    3. 在弹出的对话框,设置延迟剔除、权重等后,单击【确定】。
      注意:

      • 仅状态为“运行中”的主实例和只读实例,才能加入数据库代理中。
      • 目前异地 RO 和延迟 RO 不允许挂载到数据库代理下。
      • 只读实例剔除:是否启动剔除策略。当只读实例发生复制异常(复制延迟、复制中断)时,数据库代理会将只读实例暂时移出读写分离。延迟剔除阈值默认为10秒、只读实例最小保留数为1个。
        说明:

        只读实例剔除设置阈值和实例最小保留数后,仅对新连接生效。

        • 若只读实例延迟超过阈值时,则会被剔除,被剔除的实例权重自动设置为0,且系统会向用户发出告警(须先订阅“数据库代理挂载节点剔除”告警,配置请参见 告警功能)。
        • 当只读实例延迟小于阈值时,会重新加入到数据库代理中。同时,不管是否启用延迟剔除功能,只读实例故障被剔除后,待实例修复也会重新加入到数据库代理中。
        • 通过设置只读最小保留数,数据库代理发现当前路由中的只读实例小于设定的值时,将会把异常的只读实例加回读写分离,直至参与读写分离的只读实例个数满足最小保留数。
          注意:当只读库发生致命故障(如宕机)时,最小保留数无法作用于致命故障的实例。
      • 读权重分配:支持系统自动分配权重和自定义权重两种方式,来配置主实例和只读实例的读权重。权重输入范围为0 - 100,且必须是整数。
        说明:

        读权重分配配置后,会立即对所有连接生效。

        • 数据库代理将按照权重设置分配读请求的流量,如,两个只读库的权重分别为10和20,那么他们的读请求流量将按照1:2的比例分配。
        • 权重仅为读请求权重,写请求会直接路由到主库,不参与权重的计算。如,客户端发送了10条写语句和10条读语句,主库和只读库的权重比为1:1,这时主库会收到10条写语句和5条读语句,只读库收到5条读语句。
        • 选择系统自动分配权重时,系统会根据实例的 CPU 和内存规格来自动分配权重,此时仅能设置主实例的权重。
        • 如果只读实例的权重为0,则数据库代理不会对该只读实例建连,如果只读实例的权重从0改为非0,权重无法立即生效,只能对新连接生效。
      • 故障转移:推荐开启,当只读实例异常时,数据库代理会将读请求发送至主实例。
        说明:

        故障转移配置后,仅对新连接生效。

        如果关闭这个参数,只读实例异常时,读请求将不会发送到主实例(防止过大读负载影响主实例)。但是所有读请求都会失败,当读请求失败后数据库代理会主动断开与客户端的连接。
      • 自动添加只读实例:开启后,主实例后续新建的只读实例会自动添加到数据库代理中。
    4. 开启成功后,可在读写分离页面查看基本信息、读写分离架构图和修改读写分离配置。
      • 单击右上角的【修改配置】,可重新配置延迟剔除、权重分配等。
      • 单击右上角的【关闭读写分离】,可关闭数据库代理的读写分离。