架构
随着用户业务发展,数据库的读扩展往往成为必然需求。CDB for MySQL支持只读实例,并且添加了RO组的概念,以实现读写分离和读能力的扩展。整体架构如下所示:
RO组是只读实例的集合,一个RO组共享一个地址,通过VIP:VPORT进行访问。同时还可以设置其中的只读实例的权重,从而进行流量负载均衡。用户根据需要部署RO组和只读实例,并将相应的读请求按一定规则发送到只读实例。
只读实例和主实例之间通过通过Binlog进行数据同步;只读实例的规格可以和主实例不同,但一般建议大于等于主实例规格。
产品特点
- 读写地址分离
主实例地址和只读实例地址分离,主实例可以进行读写,只读实例只能用于读操作。 - 按需扩展
RO组以及RO实例可以水平扩展,应用可根据需要部署以实现读能力扩展。 - 自动负载均衡
读地址以RO组为基本单位对外提供,每个RO组有一个读地址。同一个RO组的只读实例根据权重自动分配流量。如果RO组内某个只读实例宕机,流量会根据权重配置自动重新均衡,对应用完全透明。 - 健康检查
CDB为主实例和只读实例都提供了拨测、监控和报警功能。拨测以用户侧视角,探测实例是否可达、可用;监控提供详细的实例运行信息,最低至分钟级(秒级监控即将上线)的采集频率。当实例出现不可用,或者被隔离时,用户会收到相应报警。对于只读实例,CDB还提供了自动剔除功能。 - 独立设置RO组参数
每个RO组可以分别配置如下参数:- RO组名称:区别每个RO组单元
- 是否开启自动剔除功能:开启后会自动剔除高延迟实例
- 延迟阈值:超过此阈值后触发剔除动作
- 最少保留实例数:RO组内最少保留的只读实例个数,到达此下限后不再剔除
- 自动剔除高延迟实例
CDB会自动检测只读实例的延迟。在开启了自动剔除功能的情况下,如果有只读实例的主从差距超过设置的阈值,那么只读实例会被隔离,不会再有流量分配到此只读实例上;如果只读实例主从差距恢复,那么只读实例会被自动加回RO组,继续服务读请求。 - 重新负载均衡
在进行了权重配置之后,会立即对新的流量请求生效,不会影响原有连接。如果有立即生效的需求,可以在设置权重时,选择重新负载均衡。重新负载均衡功能会kill原有连接,并根据新的权重进行流量分配。
已知限制
只读实例和主实例之间可能存在主从差距,不能保证在只读实例上的一致性读。如果有一致性读的需求,需要从主实例读取数据。
使用说明
如果希望了解如何使用只读实例和RO组功能,可参考下列腾讯云文档,欢迎试用!
- 只读实例 (https://cloud.tencent.com/document/product/236/7270)
- RO Group (https://cloud.tencent.com/document/product/236/11361)