暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

南大通用Gbase8a MPP Cluster 管理-02分布信息管理

原创 飞天 2024-06-25
289

Gbase8a MPP Cluster产品介绍以及安装部署

南大通用GBase8a MPP Cluster介绍以及安装部署

南大通用Gbase8a MPP Cluster 管理-01集群状态管理

南大通用Gbase8a MPP Cluster 管理-01集群状态管理

分布信息管理

即对distribution分布信息表的管理。gcadmin工具提供对distribution表的创建、删除和导出等操作。

distribution分布信息表

是用于记录VC、节点和分片对应关系的表。用户数据参照distribution分布信息表存放在集群的gnode节点上。分片的数据和存放规则是在创建distribution分布信息表时指定的。
通过指定不同的分片备份规则,distribution表可协助集群实现节点数据的高可用及数据访问的负载均衡。

负载均衡模式(pattern 1)

节点分片以单分片为备份主体,按照rack(机架)布局将分片均衡备份于多个不同节点。优点是避免单一节点出故障时的木桶效应,缺点是分片越多,寻址越复杂,对性能影响越大。
备分片存放规则:
多rack:单节点的第一个主分片备份到下一个rack内的下一个节点上,第二个主分片备份到下一个rack内的下下个节点上,依此类推。此规则也可称为“rack高可用”模式。
单rack:所有数据节点放在1个rack内。单节点的第一个主分片备份到本rack内的下一个节点上,第二个主分片备份到本rack内的下下个节点上,依此类推。
image.png

高可用模式(pattern 2)

分片备份以节点为主体,将节点内的所有主分片完整备份到下一个节点,实现节点之间的高可用。优点是最多承受集群一半节点的故障而且操作简单,缺点是一旦某一节点发生故障,接替它的节点将承受双倍的任务压力,集群产生瓶颈,形成木桶效应。
该模式忽略了rack概念,完全是针对节点进行的备份。
image.png

自定义模式

自定义模式是管理员手动指定分片备份位置的模式,该模式增加了分布表分片布局的灵活性,但操作复杂度较高。可以将分布信息表导出为xml文件,修改xml文件。
image.png
可以看出,分片3只有一个备份分片。而分片1和分片2有两个备份分片。

创建分布信息表

语法:
gcadmin distribution <gcChangeInfo.xml> <p num> [d num] [extension] [pattern 1|2] [db_user user_name] [db_pwd password] [dba_os_password password]                                  [vc vc_name]                                                   
参数说明:
gcChangeInfo.xml: 分布信息表的配置模版文件,是描述集群内节点和rack(机柜)对应关系的文件。默认存放在gcinstall目录下。
p:每个数据节点存放的主分片数量。注:pattern 1模式下,p的取值范围为:1<=p<rack内节点数。
d:每个主分片的备份数量,取值为0,1 或2。默认值为1。
pattern:描述分片备份规则的模板。1 为负载均衡/rack高可用,2 为节点高可用。默认为 1。
db_user :数据库用户名。db_pwd:数据库用户密码。dba_os_password:DBA密码。
VC:VC名称。用于指定为那个VC创建分布信息表。

示例一: 负载均衡模式—多rack

创建distribution表
$ gcadmin distribution gcChangeInfo.xml p 1 d 1 pattern 1
说明:每个节点1个主分片,每个主分片1个备份分片

过程如下:
[gbase@node1 ~]$ cat gcChangeInfo.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
    <rack>
        <node ip="192.168.100.10"/>
    </rack>
    <rack>
        <node ip="192.168.100.12"/>
    </rack>
    <rack>
        <node ip="192.168.100.14"/>
    </rack>
</servers>
[gbase@node1 ~]$ gcadmin distribution gcChangeInfo.xml p 1 d 1 pattern 1
gcadmin generate distribution ...

gcadmin generate distribution successful
[gbase@node1 ~]$ gcadmin showdistribution node
                                      Distribution ID: 5 | State: new | Total segment num: 3

====================================================================================================================================
|  nodes   |            192.168.100.10             |            192.168.100.12             |            192.168.100.14             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                                       |                                       |                                       |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  3                    |                  1                    |                  2                    |
|segments 1|                                       |                                       |                                       |
====================================================================================================================================
[gbase@node1 ~]$ gcadmin showdistribution

                                 Distribution ID: 5 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.100.10                 |         1          |                 192.168.100.12                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.12                 |         2          |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         3          |                 192.168.100.10                 |
========================================================================================================================

由于实验机器有限,每个rack内只有1个节点,每个节点上也只能创建1个主分片,所以显示的分片效果不是很好。下图示例展示的是多rack下的分片部署情况,供参考:
image.png

示例二:负载均衡模式—单rack

创建distribution表
$ gcadmin distribution gcChangeInfo.xml p 1 d 1 pattern 1
说明:每个节点1个主分片,每个主分片1个备份分片

过程如下:
[gbase@node1 ~]$ cat gcChangeInfo.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
    <rack>
        <node ip="192.168.100.10"/>
        <node ip="192.168.100.12"/>
        <node ip="192.168.100.14"/>
    </rack>
</servers>
[gbase@node1 ~]$ gcadmin distribution gcChangeInfo.xml p 1 d 1 pattern 1
gcadmin generate distribution ...

NOTE: node [192.168.100.10] is coordinator node, it shall be data node too
NOTE: node [192.168.100.12] is coordinator node, it shall be data node too
NOTE: node [192.168.100.14] is coordinator node, it shall be data node too
gcadmin generate distribution successful

[gbase@node1 ~]$ gcadmin showdistribution

                                 Distribution ID: 3 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.100.10                 |         1          |                 192.168.100.12                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.12                 |         2          |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         3          |                 192.168.100.10                 |
========================================================================================================================
[gbase@node1 ~]$ gcadmin showdistribution node
                                      Distribution ID: 3 | State: new | Total segment num: 3

====================================================================================================================================
|  nodes   |            192.168.100.10             |            192.168.100.12             |            192.168.100.14             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                                       |                                       |                                       |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  3                    |                  1                    |                  2                    |
|segments 1|                                       |                                       |                                       |
====================================================================================================================================

可以看到,在单rack下,所有数据节点放在1个rack内。单节点的第一个主分片备份到本rack内的下一个节点上。如果有第二个主分片的话,会备份到本rack内的下下个节点上。

示例三:高可用模式

$ gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2
说明:每个节点2个主分片,每个主分片1个备份分片
过程如下:
[gbase@node1 ~]$ cat gcChangeInfo.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
    <rack>
        <node ip="192.168.100.10"/>
        <node ip="192.168.100.12"/>
        <node ip="192.168.100.14"/>
    </rack>
</servers>
[gbase@node1 ~]$ gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2
gcadmin generate distribution ...

NOTE: node [192.168.100.10] is coordinator node, it shall be data node too
NOTE: node [192.168.100.12] is coordinator node, it shall be data node too
NOTE: node [192.168.100.14] is coordinator node, it shall be data node too
gcadmin generate distribution successful

[gbase@node1 ~]$ gcadmin showdistribution node
                                      Distribution ID: 7 | State: new | Total segment num: 6

====================================================================================================================================
|  nodes   |            192.168.100.10             |            192.168.100.12             |            192.168.100.14             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                  4                    |                  5                    |                  6                    |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  3                    |                  1                    |                  2                    |
|segments 1|                  6                    |                  4                    |                  5                    |
====================================================================================================================================
[gbase@node1 ~]$ gcadmin showdistribution 

                                 Distribution ID: 7 | State: new | Total segment num: 6

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.100.10                 |         1          |                 192.168.100.12                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.12                 |         2          |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         3          |                 192.168.100.10                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.10                 |         4          |                 192.168.100.12                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.12                 |         5          |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         6          |                 192.168.100.10                 |
========================================================================================================================
[gbase@node1 ~]$ 

可以看到,每个节点2个主分片,节点内的所有主分片完整备份到下一个节点。

示例四:自定义模式

$ gcadmin distribution gcChangeInfo.xml

过程如下:
[gbase@node1 ~]$ gcadmin distribution gcChangeInfo.xml
gcadmin generate distribution ...

gcadmin generate distribution successful

[gbase@node1 ~]$ gcadmin showdistribution

                                 Distribution ID: 9 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.100.10                 |         1          |                 192.168.100.12                 |
|                                                |                    |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.12                 |         2          |                 192.168.100.10                 |
|                                                |                    |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         3          |                 192.168.100.10                 |
========================================================================================================================
[gbase@node1 ~]$ gcadmin showdistribution node
                                      Distribution ID: 9 | State: new | Total segment num: 3

====================================================================================================================================
|  nodes   |            192.168.100.10             |            192.168.100.12             |            192.168.100.14             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                                       |                                       |                                       |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  2                    |                  1                    |                                       |
|segments 1|                  3                    |                                       |                                       |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                                       |                                       |                  1                    |
|segments 2|                                       |                                       |                  2                    |
====================================================================================================================================

节点信息文件gcChangeInfo.xml:指向分片规则文件example.xml。

[gbase@node1 ~]$ cat gcChangeInfo.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
   <cfgFile file="example.xml"/>
</servers>

[gbase@node1 ~]$ cat example.xml 
<?xml version="1.0" encoding="utf-8"?>
<distributions>
    <distribution>
       <segments>
              <segment>
             <primarynode ip ="192.168.100.10"/>
             <duplicatenodes>
             <duplicatenode ip ="192.168.100.12"/>
             <duplicatenode ip ="192.168.100.14"/>
             </duplicatenodes>
             </segment>
           <segment>
              <primarynode ip ="192.168.100.12"/>
              <duplicatenodes>
              <duplicatenode ip ="192.168.100.10"/>
              <duplicatenode ip ="192.168.100.14"/>
              </duplicatenodes>
           </segment>
                <segment>
              <primarynode ip ="192.168.100.14"/>
              <duplicatenodes>
              <duplicatenode ip ="192.168.100.10"/>
              </duplicatenodes>
           </segment>
           </segments>
        </distribution> 
</distributions>

可以看出,分片3只有一个备份分片,,分片1和分片2有两个备份分片。

查看distribution

$ gcadmin showdistribution [node | f]  [vc vc_name] 
参数说明: 
node:按节点为单位,显示各节点分片
f:以xml文件格式显示

示例:

# 按照分片顺序显示分布信息表,适用于与分布信息表进行比对
[gbase@node1 ~]$ gcadmin showdistribution

                                 Distribution ID: 1 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.100.12                 |         1          |                 192.168.100.10                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.10                 |         2          |                 192.168.100.14                 |
------------------------------------------------------------------------------------------------------------------------
|                 192.168.100.14                 |         3          |                 192.168.100.12                 |
========================================================================================================================
#按照节点顺序显示分布信息表
[gbase@node1 ~]$ gcadmin showdistribution node
                                      Distribution ID: 1 | State: new | Total segment num: 3

====================================================================================================================================
|  nodes   |            192.168.100.12             |            192.168.100.10             |            192.168.100.14             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                                       |                                       |                                       |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  3                    |                  1                    |                  2                    |
|segments 1|                                       |                                       |                                       |
====================================================================================================================================

gbase8a最多允许有两张分布信息表,先创建的分布信息表其状态是“old”,后创建的分布信息表其状态是“new”。

导出distribution

功能:
将指定 ID 的 distribution 信息保存在指定的文件中,生成的文件为 xml 文件,用户可修改文件中的分片信息,然后使用该文件重新生成 distribution。

语法: gcadmin getdistribution <ID> <distribution_info.xml> [vc vc_name] 
参数说明: ID:要获取的distribution id。
distribution_info.xml:保存 distribution 信息的文件名。

示例:

[gbase@node1 ~]$ gcadmin getdistribution 1 distribution_info.xml
gcadmin getdistribution 1 distribution_info.xml ...

NOTE:file [distribution_info.xml] was exist, the content will be cleared
get segments information
write segments information to file [distribution_info.xml]

gcadmin getdistribution information successful
[gbase@node1 ~]$ cat distribution_info.xml 
<?xml version='1.0' encoding="utf-8"?>
<distributions>
    <distribution>
        <segments>
            <segment>
                <primarynode ip="192.168.100.12"/>

                <duplicatenodes>
                    <duplicatenode ip="192.168.100.10"/>
                </duplicatenodes>
            </segment>

            <segment>
                <primarynode ip="192.168.100.10"/>

                <duplicatenodes>
                    <duplicatenode ip="192.168.100.14"/>
                </duplicatenodes>
            </segment>

            <segment>
                <primarynode ip="192.168.100.14"/>

                <duplicatenodes>
                    <duplicatenode ip="192.168.100.12"/>
                </duplicatenodes>
            </segment>
        </segments>
    </distribution>
</distributions>
[gbase@node1 ~]$ 

删除distribution

从集群中删除指定 id 的 distribution。若不输入 distribution id,则默认删除旧的 distribution,集群中只有一个 distribution 时则默认删除该 distribution。

$ gcadmin rmdistribution [ID] [vc vc_name] 
• 若distribution 为正在使用,则会先在数据库中执行refreshnodedatamap drop  <ID>,然后删除该 distribution。
• 若待删除的 distribution 有 ddl event,dml event 或 dmlstorage event,需先清除 fevent log
后才可删除该 distribution,否则 gcadmin 将报错退出;
• 删除 distribution 时,需要先确认所有的 GCluster 节点服务正常,若有 GCluster 节点服务不正常,会导致删除 distribution 后产生无法恢复的 fevent l

示例:

示例:
[gbase@node1 ~]$  gcadmin rmdistribution 1
distribution: id [1] is current distribution
it will be removed now
please ensure this is ok, input [Y,y] or [N,n]: y
select count(*) from gbase.nodedatamap where data_distribution_id=1 result is not 0
refreshnodedatamap drop 1 success
gcadmin remove distribution [1] success

总结

本文主要介绍了distribution分布信息表的管理,希望对大家有所帮助。同时也希望能和大家一起学习,共同进步~~~

最后修改时间:2024-06-27 20:34:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论