机房管理接口
添加机房
| 存储过程 | mysql.greatdb_add_zone |
|---|---|
| 作用 | 集群中添加一个新的机房信息 |
| 参数1 | zone_name:机房名称 |
| 参数2 | zone_id:机房 id 值,范围0-8 |
| 参数3 | city:机房所属城市 |
| 参数4 | elect_weight:机房选举权重值,范围0-9 |
| 版本 | 5.0.8 |
需要注意的是,机房属性将影响添加新的sqlnode和datanode。添加sqlnode或者datanode时,需要保证待添加节点的 gdb_zone_name 参数和 group_replication_zone_id 参数和已经添加的某个机房匹配,否则会执行失败。(当然,如果添加的NODE_SINGLE的datanode节点,不需要配置group_replication_zone_id 参数。)
关于机房的说明:
- 添加机房时,需要指定elect_weight选举权重参数,该参数用于更新datanode节点的group_replication_member_weight系统变量值。通过集群的统一管理,保证机房elect_weight权重更大的datanode节点,其对应的group_replication_member_weight系统变量值也更大。同时,通过数据节点的group_replication_member_weight,影响主节点故障后的选主优先级。
- 添加机房时,指定的zone_name和zone_id需要匹配实际的配置。
- 添加机房时,对于elect_weight参数值,建议主机房给定更大的数值;相应的,备机房给定一个小于主机房的参数值;如此,当主机房单一主节点故障时,新主还能落在主机房的节点中。也可以根据elect_weight权重,判别主备机房。
- 但本质上,集群不严格区分主备机房。不同的shard中的写入,以实际的主节点为准。在故障场景中,存在部分shard,主节点在A机房中,另一部分shard,主节点在B机房中的可能性。
- 关于zone_id,对应的是group_replication_zone_id参数,该参数是greatdb序列产品中引入的系统变量。在group_replication复制组中,当存在多个zone_id的情况下,在满足多数派协议的基础上,还要求每个zone_id最少有一个节点同步到了数据。利用这种特性,通过多机房部署指定不同的zone_id,可以确保备机房包含最新数据。
删除机房
| 存储过程 | mysql.greatdb_drop_zone |
|---|---|
| 作用 | 从集群中删除一个机房信息 |
| 参数 | zone_name:待删除的机房名称 |
| 版本 | 5.0.8 |
如果该机房中还存在任何一个sqlnode或者datanode节点,将无法删除机房。
修改机房属性
| 存储过程 | mysql.greatdb_set_zone_var |
|---|---|
| 作用 | 修改机房的属性值 |
| 参数1 | zone_name:机房名称 |
| 参数2 | var_name:待修改的属性名 |
| 参数3 | var_value:修改后的属性值 |
| 版本 | 5.0.8 |
该存储过程接口提供一个通用接口,用于修改机房的不同属性值。
当前,允许修改的属性包括(区分大小写):
- zone_name:修改机房名称。修改机房名称后,需要更新相应节点的gdb_zone_name系统变量值,其中,sqlnode会在更新机房名称的同时同步修改节点的gdb_zone_name;而对于datanode,会通过后台任务异步修改gdb_zone_name。
- city:修改机房所属城市信息。
- elect_weight:修改机房的选举权重, 范围为[0, 9]。对于NODE_MGR类型的datanode节点,会通过后台线程修改节点的group_replication_member_weight的系统变量值。新的变量值为
elect_weight * 10 + (old_member_weight % 10)。
不允许修改的属性包括:
- zone_id,机房id。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




