为避免共享代理的稳定性、可扩展性和性能问题,阿里云RDS MySQL推出独享型代理功能,已开启共享代理的实例可以升级为独享型代理。
关于RDS数据库代理的使用问题和更多相关信息,欢迎加入用户钉钉群(106730000316)进行咨询、反馈和交流 。
2021年04月01日起,RDS MySQL共享代理功能将停止更新维护,仅提供产品服务技术支持,建议您尽快升级到独享型代理。详细通知,请参见【通知】2021年04月01日起共享代理功能停止更新维护。
共享代理暂不支持直接升级至通用型代理,您可以先升级至独享型代理后,再变更代理类型至通用型代理。更多信息,请参见变更代理配置、通用型代理和独享型代理。
升级特惠
现在升级独享型代理,可在一定期限内免费使用独享型代理(额外新增代理个数需要收费)。不同付费类型的主实例优惠内容如下:
按量付费:自升级日起,免费使用独享型代理一年。
包年包月:自升级日起,免费使用独享型代理至少一年,取决于主实例的到期时间。
主实例到期时间距离升级日大于一年,则您可免费使用独享型代理直到实例到期。
说明如果您通过续费延长了主实例到期时间,仍然以续费前的主实例到期时间为准。
主实例到期时间距离升级日小于一年,则您可免费使用独享型代理一年。
注意事项
优惠期限内调整独享型代理数量,只有超过默认数量的独享型代理才需要额外付费。例如系统默认创建6个独享型代理,无论您如何调整,只要代理数量不超过6个就无需额外付费。但如果您一共创建了7个独享型代理,则需要为多出的1个独享型代理单独付费。
优惠期限内关闭独享型代理则优惠即时结束,再次开启需要正常付费。
前提条件
费用
升级为独享型代理时,系统会根据RDS实例(主实例及其只读实例)总规格,计算出独享型代理个数,按小时付费。具体价格请参见数据库独享型代理费用说明。
背景信息
RDS MySQL的读写分离功能基于代理实现。部分存量MySQL 5.6、5.7实例的读写分离功能基于共享代理实现,存在稳定性风险,建议升级为独享型代理。相比共享代理,独享型代理有以下优势:
稳定性和隔离性更好。
性能更高。例如在数据库不是瓶颈时,使用SysBench在OLTP场景测试,一个独享型代理能够提供20,000 QPS。
独享型代理数量可扩展,方便扩容业务。
独享型代理的性能可监控,您可以根据监控及业务规划调整相应的独享型代理个数,实时生效。
提供独享型代理连接地址,应用使用该地址后不用反复变更应用内的地址,减少维护成本,只要不释放代理,代理连接地址可以永远使用。例如您在大促时期开启读写分离,大促结束后释放只读实例,关闭读写分离,也不用变更应用内的连接地址。
基于独享型代理连接地址可以实现读写分离、短连接优化、事务拆分等功能。
独享型代理的详情请参见什么是数据库代理。
下文将介绍如何将存量的共享代理升级为独享型代理。
注意事项
独享型代理的连接模型是1:N(即您的一个连接会后端连接到主实例和所有只读实例),建议开通独享型代理后,主实例和只读实例的连接数规格尽量一致,否则业务的连接数会受限于最小规格的实例连接数限制。
切换到独享型代理后,新增只读实例或重启只读实例时,只有新的连接的请求才会路由到新的只读实例或重启的只读实例,老的连接请求不会路由过去。
主实例与只读实例的参数max_prepared_stmt_count需要保持一致。
数据库代理升级前后的连接地址均不会发生改变,但会造成虚拟IP(VIP)的变更,请尽量保证在您的应用程序中使用连接地址进行连接,而不使用IP地址。
请及时清理客户端DNS缓存。客户端采用JVM的应用,建议将JVM配置中的TTL设置为不超过60秒,可确保在连接地址的VIP地址发生变更时,应用程序可以通过重新查询DNS来接收和使用资源的新VIP地址。
说明JVM中设置TTL的方法请参见JDK官方文档:Class InetAddress。
独享型代理协议层默认启用多语句(multi-statement)功能。若应用层未开启此功能且使用了多语句,则会导致SQL错误。请预先检查并设置相应的连接参数,如在JDBC中添加
allowMultiQueries=true
。更多注意事项,请参见数据库代理注意事项。
影响
升级过程会影响主实例连接地址、只读实例连接地址和读写分离连接地址的可用性,其中主实例连接地址、只读实例连接地址会出现30~120秒的服务不可用,读写分离连接地址会出现30秒的不可用。
操作步骤
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击数据库代理。
在右侧单击升级到独享代理。
说明请耐心等待升级完成。