本文将为您介绍在Hologres中Shard级别的Replication使用。
功能概述
从Hologres V1.1版本开始,支持通过设置Table Group副本数的方式来提高某个Table Group查询并发能力和可用性。您可以在创建Table Group的时候通过显示指定的replica count或者修改已有的replica count来打开Replication的功能。新增的副本属于内存级别的运行时副本,不会增加额外存储成本。
关于replica count的说明具体如下:
- 数据是按Shard分布的,不同Shard管理不同的数据,不同Shard之间的数据没有重复,所有的Shard在一起是一份完整的数据。
- 默认情况下每一个Shard只有一个副本,即
replica count = 1
,其对应的属性为leader。您可以通过调整replica count的值,使相同的数据有多个副本,其他副本的属性为follower。 - 写请求由leader shard负责,读请求会均衡由多个follower shard(也包含leader shard)共同服务。当使用follower shard查询时,数据可能会出现10~20ms级别延迟。
- replica count默认值是1,表示不启用Replication。大于1表示开启Replication,建议设置为2,replica count数字越大,对资源的消耗也越大,最多可以有3个Replication,即replica count数为4。由于Replica布局具有反亲和特性,即多个replica不可以布局在同一个计算节点上,因此replica count参数应小于等于计算节点数。有关不同规格拥有的计算节点数,参考实例规格概述。
- 考虑到计算节点计算力的均衡性,在增加Replication时,应该同步缩小shard_count,保持
shard_count * replica count = 默认实例推荐shard数
时,具备最好的性能。
使用限制
在Hologres中使用Shard级别的Replication时,仅Hologres V1.1及以上版本支持,请在Hologres管控台的实例详情页查看当前实例版本,如果您的实例是V0.10以下版本,请您提交工单或加入在线支持钉钉群申请升级实例。
语法说明
- 查询当前DB的Table Group您可以使用如下语法查看当前DB有哪些Table Group。
select * from hologres.hg_table_group_properties ;
- 查询已有Table Group的replica count
- 语法示例
select property_value from hologres.hg_table_group_properties where tablegroup_name = 'table_group_name' and property_key = 'replica_count';
- 参数说明
参数 说明 table_group_name 请输入您需要查询的Table Group名称。 replica_count 此处为固定参数名称,无需修改。
- 语法示例
- 开启Replication通过以下命令开启Replication功能,开启是数据库或者session级别的操作,开启完成后,还需要通过指定replica count为Table Group开启Replication功能。请务必先完成replica_count的调整,再开启读Replication功能,否则在副本复制的过程中,系统开销高,可能引起读操作的超时。建议新建空Table Group的方式,开启Replication,减少对已有业务的调整。用户查询端无需修改。
参数说明如下。-- 为Table Group 开启replication call hg_set_table_group_property ('table_group_name', 'replica_count', '2'); -- 为database开启read replica功能 alter database <database_name> set hg_experimental_enable_read_replica = on;
参数 说明 database_name 数据库名称。 hg_experimental_enable_read_replica 是否开启read replica功能,每个DB执行一次即可。 - on:开启read replica功能。
- off:关闭read replica功能。
hg_set_table_group_property 修改Table Group的replica_count。 - table_group_name:请输入您需要修改的Table Group名称。
- replica_count:设置目标Table Group的副本数量,replica_count应小于计算节点数,一般是2。
- 设置是否开启Replication:1为默认值,表示不启用Replication功能。大于1的数值表示启用Replication功能。
- 关闭Replication
- 语法示例
-- 修改replica_count,关闭replication call hg_set_table_group_property ('table_group_name', 'replica_count', '1');
- 参数说明
参数 说明 hg_set_table_group_property 修改Table Group的replica_count。 - table_group_name:请输入您需要修改的Table Group名称。
- replica_count:设置目标Table Group的副本数量。
- 设置是否开启Replication:1为默认值,表示不启用read replica功能。大于1的数值表示启用read replica功能。
- 语法示例