GBase 8a数据库故障排查思路
一、 监控进程
集群默认运行 gcmonit 进程用来监控 gcluster、gcware、gcrecover、gcmmonit、gbase、syncserver 进程,当这些进程意外 down 掉,gcmonit 进程会自动将这些进程拉起。同时,gcmmonit 进程又会监控gcmonit 进程,当 gcmonit 进程 down 掉,gcmmonit 进程会将 gcmonit 进程拉起。两个进程互相监控,互为保险。所以正常情况下,各节点的进程应持续运行,不会 down 掉。
发现有进程 down 掉(或服务 close),说明 gcmonit 进程已经无法拉起相应进程,首先运维人员应确认 gcmonit 进程和 gcmmonit 进程是否工作正常。
[gbase@181 ~]$ ps -ef |grep ‘gcmm’
gbase 27907 26577 0 18:16 pts/1 00:00:00 grep --color=auto gcmm
gbase 36942 1 0 9 月 09 ? 01:14:57 /opt/gbase/gcluster/server/bin/gcmonit --start
gbase 36944 1 0 9 月 09 ? 00:14:40 /opt/gbase/gcluster/server/bin/gcmmonit --start
通过上述方式确认 gcmonit 进程和 gcmmonit 进程已启用,但节点进程还是无法运行,这时就需要人为干预排查问题。
可尝试重启相关进程。
[gbase@185 ~]$ gcluster_services all restart
Stopping GCMonit fail! Info: [gcmonit] share memory get error
Stopping gbase : [ OK ]
Stopping syncserver : [ OK ]
Starting gbase : [ FAIL ]
[gbase]Fail Info: start service timeout
Starting syncserver : [ OK ]
Starting GCMonit success!
此例中,重启各进程后发现 gbase 进程仍然无法启动,此时可参考相关日志进行故障排查。
二、 关键日志
1、System 日志:
记录数据库服务启动、停止等重要操作,并可记录数据库服务宕机等异常情况的程序堆栈,可辅助开发人员查错。默认开启。
System 日志分类及默认存放位置:
gcluster 系统日志: $GCLUSTER_BASE/log/gcluster/system.log
gnode 系统日志: $GBASE_BASE/log/gbase/system.log
gcware 系统日志: $GCLUSTER_BASE/log/gcluster/gcware_system.log
gcrecover 系统日志: $GCLUSTER_BASE/log/gcluster/gcrecover_system.log
2、Express 日志
记录 express 引擎内部执行过程中的一些重要信息,包括异常等。用于排查错误。默认开启。
gcluster 层 express 日志: $GLUSTER_BASE/log/gcluster/express.log
gnode 层 express 日志: $GBASE_BASE/log/gbase/express.log
三、 其他
如果日志中无故障提示,可从以下角度考虑解决:
1、License 已过期
Gcluster 节点:
进入/opt/gbase/gcluster/server/bin 目录,执行如下命令:
[gbase@183 bin]$ ./gclusterd
220915 2:00:14 [Note] begin to check license.
220915 2:00:14 [ERROR] license file is invalid!
提示以上信息说明 License 已过期。需要重新申请 license。
Gnode 节点:
进入/opt/gbase/gnode/server/bin 目录,执行如下命令:
[gbase@183 bin]$ ./gbased
220915 2:03:48 [Note] begin to check license.
220915 2:03:48 [ERROR] license file is invalid!
以上提示信息说明 License 已过期。需要重新申请 license 并重新注册。
2、内存配置参数过大
根据 GBase 8a 数据库的内存管理机制,默认情况下数据库的总内存占用应小于等于物理内存的 80%。
如果设置上超过该限制即为内存配置不合理。数据库进程无法启用。
在 gbase_8a_gbase.cnf 文 件 中 , gbase_heap_data+gbase_heap_temp+gbase_heap_large> 物 理 内 存×gbase_memory_pct_target,即视为内存设置过大,超过限制。数据库服务无法自动启动。
gbase_memory_pct_target=0.8
gbase_heap_data=17G
gbase_heap_temp=250M
gbase_heap_large=256M
3、操作权限过大
[root@redhat3 config]# ll
-rw-r--r-- 1 root root 6144 11 月 10 16:35 gbase_20141110_20150210.lic
-rwxrwxrwx 1 gbase gbase 1392 2 月 8 10:44 gbase_8a_gbase.cnf
-rw-rw-r-- 1 gbase gbase 2048 7 月 29 2014 gbase_host.cnf
如:gbase_8a_gbase.cnf 配置文件的权限设置为 777,不符合数据库安全规范,数据库无法启动。建议该值设置为 640,即“-rw-r-----”。
4、配置文件参数值格式错误
如:gbase_heap_temp=250.6M
在配置文件中,带有字节单位的参数值是不允许出现小数的。
以上是数据库状态出现问题时的一些解决思路,运维人员需要在工作中不断实践和积累。
标签:gcmonit,log,gcluster,数据库,8a,gbase,排查,进程,GBase From: https://www.cnblogs.com/gbase/p/18420501