为了将数据库代理应用于读写分离、高并发读等场景中,您可以为数据库代理连接地址配置不同的访问策略,不同的业务使用具有对应访问策略的连接地址访问RDS PostgreSQL实例,满足您的业务需求。
前提条件
已开通数据库代理服务,具体请参见开通数据库代理。
注意事项
请确保已创建只读实例。没有只读时,可以开启数据库代理功能,但无法配置代理连接地址访问策略。创建方法,请参见创建PostgreSQL只读实例。
操作步骤
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击数据库代理。
在连接信息区域,找到目标代理连接地址(终端)ID,单击目标代理连接地址右侧操作列的修改配置。
在弹出的对话框内,根据业务需要修改代理连接地址的相关配置。
参数
说明
连接描述
自定义代理连接地址的描述,最多支持30个字符。
读写属性
设置当前代理连接地址的读写属性。
读写(读写分离)(默认):同时连接主实例和只读实例,可以接收写请求。
只读(不连接主实例,无法接收写请求):仅连接只读实例,不接收写请求。
说明修改读写属性后,只对新建连接生效,已有的连接依旧保持原来的模式,更多信息,请参见什么是读写分离、设置读写属性和读权重。
您需要已经创建PostgreSQL只读实例,才可以设置读写属性,使用读写分离功能。
延迟阈值
设置只读实例同步主实例数据时允许的最长延迟时间,取值范围为0秒到3600秒。
受限于SQL的执行情况,只读实例有一定的几率会出现延迟,建议该值不小于30秒。
说明仅在读写属性为读写(读写分离)时可选。
若一个只读实例的延迟时间超过该阈值,则不论该只读实例的权重是多少,读请求都不会转发至该只读实例。
事务拆分
事务拆分功能,固定为开启。事务拆分能够将事务内写操作之前的读请求转发到只读实例,降低主实例负载。
说明该功能暂不支持关闭。更多信息,请参见事务拆分。
读权重分配
设置数据库各个实例的读请求权重:
系统分配:系统根据实例规格自动分配各个实例的读权重。后续该主实例下新增的只读实例也会自动按照系统分配的权重加入到读写分离链路中,无需手动设置。更多信息,请参见系统默认读权重分配规则。
自定义:手动设置各个实例的读权重,范围为0~10000。后续该主实例下新增只读实例的读权重默认为0,需要您手动修改。
说明实例的读权重越高,处理的读请求越多。例如,假设主实例有3个只读实例,主实例读权重为0,只读实例读权重分别为100、200和200,则表示主实例不处理读请求(写请求仍然自动发往主实例),3个只读实例按照
1:2:2
的比例处理读请求。修改本参数实时生效,不会造成业务闪断。修改完成后,已存在的连接不会断开重连且读权重不变,只有新连接才会根据新权重进行分配。
只读实例释放后将自动移除权重。
实例宕机或者延迟超时将自动移除权重,实例恢复后权重也将自动恢复。
您可以在读请求的SQL中加入
/*FORCE_MASTER*/
,指定该请求被转发到主实例。如果需要转发到只读实例,则使用/*FORCE_SLAVE*/
。示例:
/*FORCE_MASTER*/ SELECT * FROM table_name;
单击确定。
相关文档
相关API
API | 描述 |
查询数据库代理详情。 | |
查询数据库代理的连接地址信息。 | |
修改数据库代理的连接地址访问策略。 |