RDS提供数据库独享代理服务,基于独享代理提供更多高级功能,例如读写分离、连接池、事务拆分等。

前提条件

  • 实例版本如下:
    • MySQL 8.0三节点企业版(内核小版本20191204或以上)
    • MySQL 8.0高可用版(内核小版本20190915或以上)
    • MySQL 5.7三节点企业版(内核小版本20191128或以上)
    • MySQL 5.7高可用版(内核小版本20190925或以上)
    • MySQL 5.6高可用版(内核小版本20200229或以上)
    说明 您可以在 基本信息页面的 配置信息区域查看是否有 升级内核小版本按钮。如果有按钮,您可以单击按钮查看当前版本;如果没有按钮,表示已经是最新版。详情请参见升级内核小版本
    内核小版本
  • 实例不处于华东1(杭州)可用区D、华南1(深圳)金融可用区B。
    说明 如果实例处于不支持的可用区,可以迁移可用区后再开通独享代理。详情请参见迁移可用区

背景信息

RDS数据库独享代理服务是使用独立代理计算资源为当前实例提供代理服务,优势如下:

  • 使用代理连接地址后可以不用反复变更应用内的连接地址,减少维护成本,只要不释放代理,代理连接地址可以永远使用。例如您在大促时期开启读写分离,大促结束后释放只读实例,关闭读写分离,也不用变更应用内的连接地址。
  • 避免了共享实例代理时多用户争抢资源导致访问服务不稳定。
  • 使用独立实例代理,资源可扩展,可承载更高流量。

计费

数据库独享代理在2020年1月15日至2020年8月31日期间,使用第一个代理仍然免费,增加代理会收取额外费用。

自2020年9月1日起,数据库独享代理将取消第一个代理的免费优惠,同时提供更加强大的处理能力,一般情况下每个代理实例每秒可以处理2万请求。

说明 原共享代理升级至独享代理的优惠不变,详情请参见共享代理升级为独享代理

独享代理暂时仅支持按量付费,详细价格如下。

地域 独享代理
名称 代码 元/小时/代理
华东1(杭州) cn-hangzhou 1.170
华东2(上海) cn-shanghai 1.170
华北1(青岛) cn-qingdao 1.170
华北2(北京) cn-beijing 1.170
华北3(张家口) cn-zhangjiakou 0.810
华北5(呼和浩特) cn-huhehaote 1.170
华南1(深圳) cn-shenzhen 1.170
华南2(河源) cn-heyuan 1.170
西南1(成都) cn-chengdu 1.170
中国(香港) cn-hongkong 2.010
日本(东京) ap-northeast-1 1.950
印度(孟买) ap-south-1 1.560
新加坡 ap-southeast-1 1.830
澳大利亚(悉尼) ap-southeast-2 1.848
马来西亚(吉隆坡) ap-southeast-3 1.710
印度尼西亚(雅加达) ap-southeast-5 1.830
德国(法兰克福) eu-central-1 1.644
英国(伦敦) eu-west-1 1.890
阿联酋(迪拜) me-east-1 2.550
美国(弗吉尼亚) us-east-1 1.605
美国(硅谷) us-west-1 1.920
地域 独享代理
名称 代码 USD/小时
华东1(杭州) cn-hangzhou 0.173
华东2(上海) cn-shanghai 0.173
华北1(青岛) cn-qingdao 0.173
华北2(北京) cn-beijing 0.173
华北3(张家口) cn-zhangjiakou 0.120
华北5(呼和浩特) cn-huhehaote 0.173
华南1(深圳) cn-shenzhen 0.173
华南2(河源) cn-heyuan 0.173
西南1(成都) cn-chengdu 0.173
中国(香港) cn-hongkong 0.297
日本(东京) ap-northeast-1 0.288
印度(孟买) ap-south-1 0.231
新加坡 ap-southeast-1 0.271
澳大利亚(悉尼) ap-southeast-2 0.273
马来西亚(吉隆坡) ap-southeast-3 0.253
印度尼西亚(雅加达) ap-southeast-5 0.271
德国(法兰克福) eu-central-1 0.243
英国(伦敦) eu-west-1 0.280
阿联酋(迪拜) me-east-1 0.377
美国(弗吉尼亚) us-east-1 0.237
美国(硅谷) us-west-1 0.284

功能限制

  • 数据库独享代理暂不支持SSL加密。
  • 数据库独享代理暂不支持压缩协议。
  • 数据库独享代理暂不支持切换交换机。

注意事项

  • 当主实例或只读实例变更配置时可能会出现连接闪断。
  • 使用代理连接地址时,如果没有启用事务拆分,事务请求都会路由到主实例。
  • 使用代理连接地址进行读写分离时,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。
  • 使用代理连接地址时,show processlist会将所有节点的结果合并后返回。
  • 如果执行了Multi-Statements或存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
  • 支持Hint语法/*FORCE_MASTER*//*FORCE_SLAVE*/,但是因为Hint的路由优先级最高,例如Hint不受一致性、事务的约束,需要您评估是否可以用于业务。另外Hint语句里不能包含改变环境变量的语句,例如/*FORCE_SLAVE*/ set names utf8; ,可能导致后续业务出错。
  • 独享代理的连接模型是1:N(即您的一个连接会后端连接到主实例和所有只读实例),建议开通独享代理后,主实例和只读实例的连接数规格尽量一致,否则业务的连接数会受限于最小规格的实例连接数限制。
  • 开启独享代理后,新增只读实例或只读实例重启,只有新的连接的请求才会路由到新的只读实例或重启的只读实例,老的连接请求不会路由过去。
  • 主实例与只读实例的参数max_prepared_stmt_count需要一致。

开通代理服务

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库代理
  5. 单击立即开启
    开启数据库代理
  6. 选择网络类型并填写代理个数,然后单击立即开启
    说明
    • 云盘版实例不支持外网地址。
    • 推荐的代理个数为主实例及只读实例CPU核数的1/8 (向上取整),最多60个。

      例如主实例为8核CPU,只读实例为4核CPU,则推荐代理数量=⌈(8+4)/8⌉ = 2。

    开通数据库代理

页面介绍

开启数据库独享代理后,您可以使用代理连接地址开通读写分离、连接池、事务拆分。

数据库独享代理页面
类别 参数 说明
代理地址 实例ID 代理实例ID。
关联代理实例数量 代理连接地址关联的代理数量,可以通过增加代理数量提升代理处理请求的能力。
读写分离功能 代理连接地址是否开通了读写分离功能。详情请参见读写分离
连接池 代理连接地址设置的连接池类型:
  • 事务级连接池(默认):适用于总连接数比较多(如连接数上万)的场景。
  • 会话级连接池:适用于PHP短连接场景。
  • 关闭:不使用连接池。

详情请参见连接池

事务拆分 代理连接地址是否开通了事务拆分功能。详情请参见事务拆分
说明 您可以单击右侧的 开通关闭按钮开关事务拆分功能。
连接地址 代理连接地址,独享代理目前提供一个代理地址,读写分离功能绑定该地址。
说明 您可以单击右侧的 修改地址按钮修改代理连接地址,要求如下:
  • 以小写字母开头。
  • 支持字母、数字和连字符(-)。
  • 1~40个字符。
端口 代理连接地址的端口。
说明 您可以单击右侧的 修改端口按钮修改代理连接端口,取值:1000~5999。
网络地址类型 代理地址的网络地址类型。暂不支持切换网络地址类型。
代理实例 代理类型 当前仅支持独享代理
代理规格 代理的规格,当前仅支持2核CPU、4GB内存的规格。
开通个数(个) 代理的数量。最多60个。
说明 推荐的代理个数为主实例及只读实例CPU核数的1/8 (向上取整)。

例如主实例为8核CPU,只读实例为4核CPU,则推荐代理数量=⌈(8+4)/8⌉ = 2。

调整代理数量

说明 调整代理数量会导致应用闪断,请确保系统具备重连机制。
  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库代理
  5. 调整实例数列修改数量,然后单击应用
    调整实例数量
  6. 设置应用时间,单击确定
    设置代理服务资源

查看监控数据

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库代理
  5. 选择监控数据页签。
  6. 设置查询时间段,即可查看CPU使用率
    说明 这里展示是的代理实例的CPU使用率。
    监控数据

升级代理服务内核小版本

说明 升级代理服务内核小版本会重启代理实例,出现一次30秒的闪断。重启的具体时间取决于您设置的 升级时间立即升级可维护时间内进行升级)。请您尽量在业务低峰期执行升级操作,或确保您的应用有自动重连机制。
  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库代理
  5. 在右上角单击升级内核小版本
    升级代理小版本
  6. 选择升级时间,然后单击确定

关闭代理服务

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
    选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库代理
  5. 在右上角单击关闭代理服务器
    关闭代理服务器
  6. 单击确定

常见问题

  • 5.7版本实例已经升级小版本了,为什么还是只有读写分离,没有独享代理功能?

    升级后您需要关闭原有的读写分离,才能看到独享代理的开启页面。

  • 想实现读写分离,是使用独享代理地址还是读写分离地址?

    独享代理地址和读写分离地址相同,后端是基于独享代理地址实现读写分离。

相关API

API 描述
ModifyDBProxyInstance 修改RDS数据库独享代理设置。
ModifyDBProxy 开启或者关闭RDS实例的数据库独享代理功能。
DescribeDBProxy 查询RDS实例的数据库独享代理详情。
DescribeDBProxyEndpoint 查询RDS实例独享代理的连接地址信息。
ModifyDBProxyEndpoint 修改RDS实例数据库独享代理的连接地址信息。
DescribeDBProxyPerformance 查询独享代理的性能数据。