云数据库 PostgreSQL 支持用户创建多个只读实例并组成只读实例 RO 组,适用于读写分离和一主多从应用场景,可显著提高用户数据库的读负载能力。
前提条件
已创建主实例,请参见 创建 PostgreSQL 实例。
已创建只读实例,请参见 创建只读实例。
创建只读实例 RO 组
创建只读实例 RO 组
1. 登录 PostgreSQL控制台,在实例列表对应实例的操作列,选择更多 > 新建只读实例,进入只读实例购买页。
说明:
您也可单击实例 ID 或操作列的管理,进入实例管理页面。
在实例详情页,单击实例架构图中的添加只读实例,进入只读实例购买页。
或在只读实例页,单击新建,进入只读实例购买页。
2. 在购买页,选择只读实例的相应配置,确认无误后,单击立即购买。
指定 RO 组:选择新建RO组,若一次购买多个实例,将都分配至这个 RO 组。RO 组仅支持系统自动分配读权重,RO 组中的所有只读实例流量分配将根据读权重值来自动分配。
设置RO组名称:RO 组名称不要求唯一。支持长度小于60的中文、英文、数字、
-
、_
。延时超限剔除:是否启动剔除策略。被剔除的实例权重自动设置为0,且实例状态为剔除中、权重为0,当只读实例延迟时间小于阈值时会重新加入到 RO 组。若只读实例被剔除会向用户发出告警,配置只读实例剔除告警和接收对象请参见 告警功能。
不管实例是否启用延时超限剔除功能,只读实例故障都会被剔除,待实例修复也会重新加入到 RO 组。
延迟时间:为只读实例设置延迟的时间,超过阈值的只读实例会被剔除 RO 组。
延迟大小:为只读实例设置延迟的日志大小阈值,超过阈值的只读实例会被剔除 RO 组。
最少保留实例数:组内需要保证的实例下限数,若现有只读实例数小于等于此下限且延迟时间超过阈值,现有只读实例均不被剔除。
3. 返回实例列表,创建的实例状态为发货中,待状态切换成运行中,则表示只读实例创建成功。
配置只读实例 RO 组
在只读实例 RO 组的配置界面,可以配置只读实例 RO 组的名称、延时超限策略、延时阈值、最少保留实例等基本信息。
说明:
RO 组内只读实例可使用不同规格,读写权重由系统根据实例规格进行自动分配。
1. 登录 PostgreSQL控制台,在实例列表,单击主实例 ID,进入实例管理页面。
2. 在实例管理页面,选择只读实例页,在 RO 组列单击配置,进入 RO 组配置页。
3. 在 RO 组配置页,配置 RO 组信息,单击提交。
读权重分配:只读实例 RO 组中的所有只读实例流量分配将根据读权重值来自动分配,可实现负载均衡能力,避免因管理多个只读实例地址而增加 IP 地址的管理难度。RO 组仅支持系统自动分配权重。关于不同规格的只读实例的读权重值列表如下:
实例规格 | 权重 |
内存2GB | 1 |
内存4GB | 2 |
内存8GB | 2 |
内存12GB | 4 |
内存16GB | 4 |
内存24GB | 8 |
内存32GB | 8 |
内存48GB | 10 |
内存64GB | 12 |
内存96GB | 14 |
内存128GB | 16 |
内存240GB | 26 |
内存480GB | 50 |
重新负载均衡:
关闭重新负载均衡时,修改权重时仅对新增负载生效,不改变原长连接所访问的只读实例,不会引起数据库闪断。
开启重新负载均衡时,当 RO 组中的只读实例进行了变更配置操作,RO 组会自动闪断所有连接,所有新建连接会按照 RO 组中的实例权重重新分配连接。
删除只读实例 RO 组
RO 组随着组内最后一个只读实例被销毁后,即可删除。
1. 登录 PostgreSQL控制台,在实例列表,单击主实例 ID,进入实例管理页面。
2. 在实例管理页面,选择只读实例页,可查看所有 RO 组列表,当 RO 组中无任何 RO 实例后即可删除。
当 PostgreSQL 数据库主实例上关联一个只读实例时,必须在只读实例上设置某些参数等于或大于主节点上的参数值。否则,只读实例无法正常启动。例如参数 max_connections、max_worker_processes、max_wal_senders。若在创建只读实例时,创建只读实例时选择的规格无法选择满足只读实例参数值等于或大于主实例的要求时,则会给出相应的提示,如下图所示: