本文介绍云数据库 MySQL 数据库代理的注意事项。
使用代理连接地址时,如果没有启用事务拆分,事务请求都会路由到主实例。
数据库代理配置支持跨可用区,可选择的可用区数量与当前地域可选可用区数量相关,最多支持选择三个可用区,当可选可用区数量为一个时,表示当前地域可选可用区数量仅有一个。
可创建多个数据库代理访问地址,其数量与数据库代理节点相同,即有多少个节点,则支持创建多少个数据库代理访问地址。
使用代理连接地址进行读写分离时,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中,或者使用 Hint 语法。
使用代理连接地址时,show processlist 会将所有节点的结果合并后返回。
对于 prepare 语句,数据库代理会先将 prepare 发送到所有节点,当后续的 execute 请求到来时,根据 prepare 的语句类型来决定 execute 的路由。如 prepare 了一个写语句,execute 时会发到主库,而如果 prepare 的是事务外的读语句,则会发送到只读实例。
业务连接到达数据库代理后,代理会连接到主实例和所有配置的只读实例,数据库代理本身并没有最大连接数的限制,连接数的限制主要由后端数据库实例的最大连接数决定(主实例和只读实例最大连接数的最小值会影响业务性能)。
开启数据库代理后,新增只读实例或只读实例重启,只有新的连接的请求才会路由到新的只读实例或重启的只读实例,可以通过概览或 性能监控 查看各代理节点的性能指标,若发现各代理节点连接数不均衡的现象,可通过重新负载均衡打散连接。 数据库代理各能力支持版本:
跨可用区能力请确保代理版本为1.3.1或更高版本。
连接保留阈值请确保代理版本为1.2.1或更高版本。
连接池能力请确保代理版本为1.3.12或更高版本。
事务拆分能力请确保代理版本为1.3.1或更高版本。
新增连接地址能力请确保代理版本为1.3.1或更高版本。
本页内容是否解决了您的问题?