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