为避免共享代理的稳定性、可扩展性和性能问题,阿里云RDS MySQL推出独享代理功能,已开启共享代理的实例可以升级为独享代理。
前提条件
背景信息
RDS MySQL的读写分离功能基于代理实现。部分存量MySQL 5.6、5.7实例的读写分离功能基于共享代理实现,存在稳定性风险,建议升级为独享代理。相比共享代理,独享代理有以下优势:
- 稳定性和隔离性更好。
- 性能更高。例如在数据库不是瓶颈时,使用SysBench在OLTP场景测试,一个独享代理能够提供20,000 QPS。
- 独享代理数量可扩展,方便扩容业务。
- 独享代理的性能可监控,您可以根据监控及业务规划调整相应的独享代理个数,实时生效。
- 提供独享代理连接地址,应用使用该地址后不用反复变更应用内的地址,减少维护成本,只要不释放代理,代理连接地址可以永远使用。例如您在大促时期开启读写分离,大促结束后释放只读实例,关闭读写分离,也不用变更应用内的连接地址。
- 基于独享代理连接地址可以实现读写分离、短连接优化、事务拆分等功能。
独享代理的详情请参见什么是数据库代理。

下文将介绍如何将存量的共享代理升级为独享代理。
费用
升级为独享代理时,系统会根据RDS实例(主实例及其只读实例)总规格,计算出独享代理个数。系统提供优惠,优惠以外的独享代理按小时付费。具体价格请参见独享代理费用说明。
- 如果您的实例是按量付费实例:
所有独享代理都需付费。
例如:系统计算出独享代理数量为6个,那么需为6个代理付费。
- 如果您的实例为包年包月实例:
- 系统计算出的所有独享代理在实例到期前免费。实例到期后,所有独享代理需付费。
例如:RDS实例在2021.03.01升级为独享代理,当时的到期时间为2021.03.30,系统计算出6个独享代理,那么这6个在2021.03.01-2021.03.30期间免费。
说明 如果升级独享代理后通过续费延长了实例到期时间,仍然以升级时的实例到期时间为准。 - 如果在实例到期前,您调整了独享代理数量,那么只有超过优惠数量的独享代理才需要付费。
例如:RDS实例在2021.03.01升级为独享代理,当时的到期时间为2021.03.30,系统计算出6个独享代理,您在2021.03.30前调整为5个,然后再调整为6个,也不需要支付额外费用,如果调整为8个,那么需为其中2个付费。
- 如果在实例到期前,您关闭了独享代理,那么再次开启独享代理需为所有独享代理付费。
例如:RDS实例在2021.03.01升级为独享代理,当时的到期时间为2021.03.30。您在2021.03.15关闭独享代理,在2021.03.20再次开通独享代理,系统计算出8个独享代理,那么需要从2021.03.20起为8个独享代理付费。
- 系统计算出的所有独享代理在实例到期前免费。实例到期后,所有独享代理需付费。
注意事项
- 独享代理的连接模型是1:N(即您的一个连接会后端连接到主实例和所有只读实例),建议开通独享代理后,主实例和只读实例的连接数规格尽量一致,否则业务的连接数会受限于最小规格的实例连接数限制。
- 切换到独享代理后,新增只读实例或只读实例重启,只有新的连接的请求才会路由到新的只读实例或重启的只读实例,老的连接请求不会路由过去。
- 主实例与只读实例的参数max_prepared_stmt_count需要一致。
- 更多注意事项请参见独享代理使用注意事项。
影响
升级过程会影响主实例连接地址、只读实例连接地址和读写分离连接地址的可用性,其中主实例连接地址、只读实例连接地址会出现30秒的闪断,读写分离连接地址会出现30秒的不可用。