返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

示例
使用gs_dump 转储数据库为SQL 文本文件或其它格式的操作,如下所示。
其中,用户密码为Bigdata@123;/home/gbase/data/backup/MPPDB_backup.sql 表示导出
的文件;5432 表示数据库服务器端口;postgres 表示要访问的数据库名。

导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。
示例1:执行gs_dump,导出postgres 数据库全量信息,导出的MPPDB_backup.sql 文
件格式为纯文本格式。
[gbase@gbasehot ~]$ gs_dump -U gbase -W Bigdata@123 -f
/home/gbase/data/backup/MPPDB_backup.sql -p 5432 postgres -F p
gs_dump[port='5432'][postgres][2018-06-27 09:49:17]: The total objects number is
356.
gs_dump[port='5432'][postgres][2018-06-27 09:49:17]: [100.00%] 356 objects have
been dumped.
gs_dump[port='5432'][postgres][2018-06-27 09:49:17]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-27 09:49:17]: total time: 1274
ms
使用gsql 程序从纯文本导出文件中导入数据。
示例2:执行gs_dump,导出postgres 数据库全量信息,导出的MPPDB_backup.tar 文
件格式为tar 格式。
[gbase@gbasehot ~]$ gs_dump -U gbase -W Bigdata@123 -f
/home/gbase/data/backup/MPPDB_backup.tar -p 5432 postgres -F t
gs_dump[port='5432'][postgres][2018-06-27 10:02:24]: The total objects number is
1369.
gs_dump[port='5432'][postgres][2018-06-27 10:02:53]: [100.00%] 1369 objects
have been dumped.
gs_dump[port='5432'][postgres][2018-06-27 10:02:53]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-27 10:02:53]: total time: 50086
ms

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
143
示例3:执行gs_dump,导出postgres 数据库全量信息,导出的MPPDB_backup.dmp 文
件格式为自定义归档格式。
[gbase@gbasehot ~]$ gs_dump -U gbase -W Bigdata@123 -f
/home/gbase/data/backup/MPPDB_backup.dmp -p 5432 postgres -F c
gs_dump[port='5432'][postgres][2018-06-27 10:05:40]: The total objects number is
1369.
gs_dump[port='5432'][postgres][2018-06-27 10:06:03]: [100.00%] 1369 objects
have been dumped.
gs_dump[port='5432'][postgres][2018-06-27 10:06:03]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-27 10:06:03]: total time: 36620
ms
示例4:执行gs_dump,导出postgres 数据库全量信息,导出的MPPDB_backup 文件格
式为目录格式。
[gbase@gbasehot ~]$ gs_dump -U gbase -W Bigdata@123 -f
/home/gbase/data/backup/MPPDB_backup -p 5432
postgres -F d
gs_dump[port='5432'][postgres][2018-06-27 10:16:04]: The total objects number is
1369.
gs_dump[port='5432'][postgres][2018-06-27 10:16:23]: [100.00%] 1369 objects
have been dumped.
gs_dump[port='5432'][postgres][2018-06-27 10:16:23]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-27 10:16:23]: total time: 33977
ms
示例5:执行gs_dump,导出postgres 数据库信息,但不导出/home/MPPDB_temp.sql
中指定的表信息。导出的MPPDB_backup.sql 文件格式为纯文本格式。
[gbase@gbasehot ~]$ gs_dump -U gbase -W Bigdata@123 -p 5432 postgres
--exclude-table-file=/home/gbase/data/MPPDB_temp.sql -f
/home/gbase/data/backup/MPPDB_backup.sql
gs_dump[port='5432'][postgres][2018-06-27 10:37:01]: The total objects number is
1367.
gs_dump[port='5432'][postgres][2018-06-27 10:37:22]: [100.00%] 1367 objects
have been dumped.
gs_dump[port='5432'][postgres][2018-06-27 10:37:22]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-27 10:37:22]: total time: 37017
ms
示例6:
执行gs_dump,
仅导出依赖于指定表testtable 的视图信息。
然后创建新的testtable

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
144
表,再恢复依赖其上的视图。
备份仅依赖于testtable 的视图。
[gbase@gbasehot ~]$ gs_dump -s -p 5432 postgres -t PUBLIC.testtable
--include-depend-objs --exclude-self -f
/home/gbase/data/backup/MPPDB_backup.sql -F p
gs_dump[port='5432'][postgres][2018-06-15 14:12:54]: The total objects number is
331.
gs_dump[port='5432'][postgres][2018-06-15 14:12:54]: [100.00%] 331 objects have
been dumped.
gs_dump[port='5432'][postgres][2018-06-15 14:12:54]: dump database postgres
successfully
gs_dump[port='5432'][postgres][2018-06-15 14:12:54]: total time: 327
ms
修改testtable 名称。
[gbase@gbasehot ~]$ gsql -p 5432 postgres -r -c "ALTER TABLE PUBLIC.testtable
RENAME TO testtable_bak;"
创建新的testtable 表。
gbase=# CREATE TABLE PUBLIC.testtable(a int, b int, c int);
还原依赖于testtable 的视图。
[gbase@gbasehot ~]$ gsql -p 5432 postgres -r -f
/home/gbase/data/backup/MPPDB_backup.sql

gcluster_load_rebalance_seed
gcluster_load_rebalance_seed 参数表示不同data 节点上的加载任务数最大差值
大于等于参数值时会启动node 加载任务负载均衡,默认值为5。如果取得更好的
均衡效果,可以将参数gcluster_load_rebalance_seed 设置为2 或者1。
集群每个加载任务会随机选取不超过gcluster_loader_max_data_processors 个
data 节点作为加载机。在gcluster_load_rebalance_seed 取默认值5 的情况下,
如果并发了5 加载任务,都随机选取第10 个节点作为加载机。此时第10 个data

GBase 8a MPP Cluster 最佳实践
4 参数调优
文档版本(2022-02-11)
南大通用数据技术股份有限公司
28
节点上load 任务数为5,
同时也存在部分节点上load 任务数为0,
data 节点间最
大任务数之差为5。当第6 个加载下发时,根据gcluster_load_rebalance_seed
参数条件,不再选取第10 个节点作为加载机,而是选取加载任务差值小于5 的节
点作为加载机。

语法格式
停止GBase 8c 数据库集群的语法格式为:
gha_ctl stop all -l dcslist [-c cluster]
gha_ctl stop coordinator | datanode | gtm | server -l dcslist [-c cluster] [-t
timeout]
参数说明
all |coordinator | datanode | gtm | server:必选字段。指定停止全部节点或某类型节点。
-l:必选字段。指定DCS 地址,格式为http://:。一般情况下,可以只列
出一个节点地址,其他节点会自动同步消息。为了保证高可用,也可以列出所有节点
地址。
-c 参数:可选字段。指定数据库集群名称。缺省默认值gbase。
-t 参数:可选字段。指定等待数据库停止的超时时间。缺省默认值为30min。
示例
名为gbase 的集群中一个DCS 节点IP 为10.0.7.16,可使用以下命令停止数据库集群:
[gbase@gbase8c ~]$ gha_ctl stop all -l http://10.0.7.16:2379 -c gbase
返回如下信息,则说明停止操作成功。
{
"ret":0,
"msg":"Success"
}

GBase 8c 管理员指南
南大通用数据技术股份有限公司
3
2
状态查询
GBase 8c 数据库管理员可使用gha_ctl monitor 命令,来查询数据库集群的运行状态。
语法格式
gha_ctl monitor
all |coordinator | datanode | gtm | server| dcs [-H] -l dcslist
[-c cluster]
其中参数说明:
dcslist、[-c cluster]参数与上述相同;
all |coordinator | datanode | gtm | server|dcs:必选字段。指定查看哪类集群节点或全部。
-H:可选字段。指定返回信息是否以表格形式显示。缺省默认为文件命令行形式。
示例
名为gbase 的集群中一个DCS 节点的IP 为10.0.7.16,则具体操作命令如下:
[gbase@gbase8c ~]$ gha_ctl monitor all -l http://10.0.7.16:2379
返回运行中为成功:
{
"cluster": "gbase8c",
"version": "3.0.0B06",
"server": [
{
"name": "gha_server1",
"host": "10.0.7.16",
"port": "20001",
"state": "running",
"isLeader": true
}
],
"gtm": [],
"coordinator": [],
"datanode": {
"dn1": [
{
"name": "dn1_1",

GBase 8c 管理员指南
南大通用数据技术股份有限公司
4
"host": "10.0.7.16",
"port": "20008",
"work_dir": "/home/gbase/data/dn1/dn1_1",
"agentPort": "8005",
"state": "running",
"role": "primary"
"agentHost": "10.0.7.16"
}
]
},
"dcs": {
"clusterState": "healthy",
"members": [
{
"url": "http://10.0.7.16:2379",
"id": "84e2852165d202b0",
"name": "node_0",
"isLeader": true,
"state": "healthy"
}
]
}
}

GBase 8c 管理员指南
南大通用数据技术股份有限公司
5
3
实例主备切换
操作场景
GBase 8c 在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如
发现数据库节点主备宕机后,
需要恢复原有的主备角色,
或怀疑硬件故障需要手动进行主备
切换。级联备机不能直接转换为主机,只能先通过switchover 成为备机,然后再成为主机。
说明

主备切换为维护操作。需确保GBase 8c 状态正常,且在所有业务结束后,进
行切换操作。

在开启极致RTO 时,不支持级联备机。由于在此情况下,备机不支持连接而
无法同步数据。

对于同一数据库,如果前一次主备切换操作尚未完成,则不能再次执行切换。

假如在业务期间发起switchover,
可能由于主机线程无法停止,
而导致显示切
换超时,
但实际后台仍然在运行。
只需等主机线程停止后,
再执行switchover
即可完成。
例如当主机删除一个大的分区表时,
可能无法即时响应switchover
发起的信号。
语法格式
gha_ctl switchover datanode|gtm group_name leader_node_name
[standby_node_name] -l dcslist [-c cluster]
示例
将数据库DN 备节点切换为主节点。需执行以下步骤:
步骤1 查询数据库状态,执行命令:
[gbase@gbase8c ~]$ gs_om -t status --detail
返回如下信息,此时10.0.7.7 为主数据节点,10.0.7.8 为备数据节点。
……
[
Datanode State(group id: 2)
]

GBase 8c 管理员指南
南大通用数据技术股份有限公司
6
node
node_ip
port
instance
state
----------------------------------------------------------------------------
---------------------
1
gbase8c_7_7 10.0.7.7
15432
6001 /home/gbase/data/dn1/dn1_1
P
Primary Normal
2
gbase8c_7_8 10.0.7.8
15432
6002 /home/gbase/data/dn1/dn1_2
S
Standby Normal
步骤2 登录备节点,执行主备切换命令。另外,在switchover 级联备机后,级联备机
成为备机,而备机降为级联备。
[gbase@gbase8c_7_8 ~]$ gha_ctl switchover datanode dn1 dn1_1 -c gbase8c -l
http://10.0.7.7:2379
返回如下信息后,主备切换成功。
{
"ret":0,
"msg":"Success"
}
再次执行步骤1,查询主备状态:10.0.7.7 为备节点,10.0.7.8 为主节点。
错误排查
如果switchover 过程中出错,请根据日志文件中的信息排查错误,详见9 日志参考。
异常处理
异常判断标准如下:
业务压力下,主备实例切换时间长,这种情况不需要处理。
其他备机正在build 的情况下,主机需要发送日志到备机后,才能降备,导致主备切换
时间长。这种情况不需要处理,但应尽量避免build 过程中进行主备切换。
切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双主现象时,此
时请参考如下步骤修复。

GBase 8c 管理员指南
南大通用数据技术股份有限公司
7
出现双主状态后,请按如下步骤操作,恢复为正常的主备状态。否则可能会造成
数据丢失。
(1) 执行以下命令,查询数据库当前的实例状态。
gs_om -t status --detail
若查询结果显示两个实例的状态都为Primary,这种状态为异常状态。
(2) 在降为备机的节点上,执行如下命令关闭服务。
gha_ctl stop datanode group_name node_name -l dcslist [-c cluster]
(3) 执行以下命令,启动备节点。
gha_ctl start datanode group_name node_name -c cluster_name -l dcslist [-c
cluster]
(4) 查看数据库状态,确认实例状态恢复。
4
例行维护
GBase 8c 数据库允许管理员用户进行例行维护的操作,以保证数据库中的数据安全,
避免发生丢失数据、非法访问数据等事故。