南大通用GBase 8a多实例版本9.5.3变动介绍

GBase 8a数据库集群,在新的版本里提供了充分利用CPU,内存的多实例版本。本文只介绍个人使用中发现的变动内容,如需完整的请索要官方产品文档。

对应版本

9.5.3.22

gcware服务集群单独部署

该版本支持将gcware服务单独部署,最终管理服务gcware,调度服务gcluster和数据服务gnode,都可以各自独立组成集群。

扩容

Gcware 分离后 gcware 不支持扩容! 建议前期集群规模不低于3个,这样能有3-5个gcware作为管理集群,允许任意2台服务器故障,可以满足绝大部分场景要求。

节点替换

gcware单独做节点替换。

$GCWARE_BASE/gcware_server/gcserver.py --prefix=/opt --host=192.168.146.21 --dbaUser=gbase --dbaPwd=gbase --overwrite

gcware服务启停

对应的gcware服务的启停,也是单独的命令 gcware_services ,参数和gcluster_services一样,但只支持gcware服务。

[gbase@gbase_rh7_003 ~]$ gcware_services all start
Starting gcware :                                          [  OK  ]
Starting GCWareMonit success!
[gbase@gbase_rh7_003 ~]$ gcware_services
Usage:
        gcware_services <gcware|all>  <start|stop [--force]|restart [--force]|info>
        gcware_services help
[gbase@gbase_rh7_003 ~]$

gcware节点替换

gcware单独部署,提供了单独的XX/gcware/gcware_server/gcserver.py 做节点替换。 gcluster和gbase服务继续用replace.py

多实例

支持一个物理节点(虚拟也算),通过不同的IP,运行多个数据计算节点实例(gnode)。

数据节点数量

一个物理节点,可以安装多个数据节点实例,当然需要配置多个IP。在之前版本里,最多有1个数据节点。

与gnode配套的syncServer也匹配启动。

数据节点环境变量

因为存在多个数据节点,其环境变量配置,不再.gbase_profile里,而是放到了其IP下的gbase_profile内部。注意没有了前置的点,多个gnode,其环境变量部署到了各自IP的目录下,有各自的gbase_profile。连接gnode时,需要先 source各自的gbase_profile文件,才可以或者直接指定-h IP。

source /opt/192.168.0.1/gbase_profile
gncli

source /opt/192.168.0.2/gbase_profile
gncli

配置文件

IP信息

在服务配置文件里,通过bind_address指定IP,所以不同的实例配置文件,【不再相同】,【不能】再通过复制的方式进行配置文件分发。
包括如下几个参数
bind_addr
basedir
datadir
pid_file
socket

gbase> show variables like '%dir%';
+-------------------------+----------------------------------------------------------+
| Variable_name           | Value                                                    |
+-------------------------+----------------------------------------------------------+
| basedir                 | /opt/gbase/10.0.2.104/gnode/server/                      |
| character_sets_dir      | /opt/gbase/10.0.2.104/gnode/server/share/gbase/charsets/ |
| datadir                 | /opt/gbase/10.0.2.104/gnode/userdata/gbase/              |
| gbase_cache_data_dir    | /opt/gbase/10.0.2.104/gnode/tmpdata/cache_gbase          |
| gbase_export_directory  | ON                                                       |
| gbase_krb5cc_tmpdir     | /opt/gbase/10.0.2.104/gnode/tmpdata/krb5cc_gbase         |
| gbase_loader_logs_dir   | /opt/gbase/10.0.2.104/gnode/log/gbase/loader_logs/       |
| gbase_mmap_hugefile_dir |                                                          |
| gbase_tx_log_dir        | /opt/gbase/10.0.2.104/gnode/translog/                    |
| load_dirty_data_size    | 0                                                        |
| plugin_dir              | /opt/gbase/10.0.2.104/gnode/server/lib/gbase/plugin      |
| slave_load_tmpdir       | /tmp                                                     |
| tmpdir                  | /tmp                                                     |
+-------------------------+----------------------------------------------------------+
13 rows in set (Elapsed: 00:00:00.00)

内存参数

各个节点的服务内存配置参数,需要人工设置,包括pct参数,_gbase_express_table_metadata_limit等。
否则多个实例都将按照全部内存进行默认计算,将内存不足。

gbase> show variables like '%heap%';
+---------------------------+--------------+
| Variable_name             | Value        |
+---------------------------+--------------+
| _gbase_enable_system_heap | OFF          |
| gbase_heap_data           | 4793040896   |
| gbase_heap_large          | 2395996160   |
| gbase_heap_temp           | 797966336    |
| max_heap_table_size       | 160000000000 |
+---------------------------+--------------+
5 rows in set (Elapsed: 00:00:00.01)

gbase> show variables like '%pct%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| gbase_cpu_pct_target    | 0.000000 |
| gbase_memory_pct_target | 0.800000 |
+-------------------------+----------+
2 rows in set (Elapsed: 00:00:00.00)

gbase>
gbase> show variables like '%meta%';
+-------------------------------------+-----------+
| Variable_name                       | Value     |
+-------------------------------------+-----------+
| _gbase_express_table_metadata_limit | 398983168 |
| _t_gbase_part_table_check_metadata  | 1         |
+-------------------------------------+-----------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> show variables like '%heap%';
+---------------------------+--------------+
| Variable_name             | Value        |
+---------------------------+--------------+
| _gbase_enable_system_heap | OFF          |
| gbase_heap_data           | 4793040896   |
| gbase_heap_large          | 2395996160   |
| gbase_heap_temp           | 797966336    |
| max_heap_table_size       | 160000000000 |
+---------------------------+--------------+
5 rows in set (Elapsed: 00:00:00.01)

gbase> show variables like '%pct%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| gbase_cpu_pct_target    | 0.000000 |
| gbase_memory_pct_target | 0.800000 |
+-------------------------+----------+
2 rows in set (Elapsed: 00:00:00.00)

gbase>

服务和端口信息

因为gcluster和gcware可以部署在不同的IP,所以需要直到对应服务的IP和端口,所以在各自/config/cluster_common.cnf配置。

[gbase@gbase_rh7_003 config]$ cat /opt/gbase/10.0.2.104/gnode/config/cluster_common.cnf
{
        "cluster": {
                "uuid":"bbe70118-9e62-11eb-92f4-0800278ed928",
                "nodeIPtype":"0",
                "nodes": [
                {
                        "memberaddr":"10.0.2.103"
                }
                ]
        },

        "datanode": {
                "localdatanode":"10.0.2.104",
                "sessiontimeout":20,
                "nodes": [
                {
                        "memberaddr":"10.0.2.104"
                },
                {
                        "memberaddr":"10.0.2.105"
                },
                {
                        "memberaddr":"10.0.2.106"
                }
                ]
        },

        "gcware": {
                "nodes": [
                {
                        "memberaddr":"10.0.2.103"
                }
                ],
                "client_port":"5919"
        }
}

集群服务在线检测机制

V8里是采用ssh检测节点是否在线,通过连接节点服务IP+端口检测服务是否在线。

在V953里采用了注册机制:GBase 8a 9.5.3多实例版本的服务状态注册和检测机制

Segment_id分片编号

返回分布表,数据所在分片的编号。在GBase的数据计算里,对应的是表的_n1,_n2,这样的分片。

有关内容参考 :GBase 8a 从集群层通过segment_id直接查询分片数据排查倾斜

Base64编码解码函数

内置了to_base64和from_base64两个函数,详情和样例请参考:GBase 8a 支持Base64加解密函数V9.5.3版本

安装操作系统检查

在9.5.2,并没有对操作系统做严格检查,而在9.5.3里,如果操作系统版本不再支持的列表里,会报错。

XXXX system is not supported,please check your package version

补充说明

服务数量

每个节点(物理或虚机)只能设置一个gcware和coordinator。但允许有多个数据节点实例(IP不同)

安装目录

每个实例,安装到指定目录的IP子目录下,这些目录可以提前创建并mount到合适的磁盘位置。
比如
/opt/192.168.0.1
/opt/192.168.0.2
每个实例对应IP的目录下,才是gcluster/gnode/gcware等目录。
ipv6地址中的冒号被替换成点 ':' --> '.'

如果没有提前创建,那么安装程序会自动创建。

卸载

在V8和V952里,卸载的配置文件,只需要填写要卸载的IP即可。而在953里,由于本机有多个IP,必须指定一个调度节点的IP,也就是existCoordinateHost必须配置一个IP,否则卸载时可能会报报错,详情参考:GBase 8a在V953多实例部署缩容后卸载时报local IPv4 addr is not a valid coordinator

参考

GBase 8a多实例版本9.5.3安装实例和运维常用命令

GBase 8a多实例9.5.3版本扩容实例操作手顺

GBase 8a多实例版本9.5.3变动介绍