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

【金仓数据库征文】_金仓一键检查数据库状态实操演练

原创 董小姐 2025-06-16
114

一键检查数据库状态

在数据库运维过程中,需要定期的对数据库的环境进行检查,可以帮助用户减少数据库发生问题的概率。一键检查数据库状态脚本可以快速的检查数据库状态以及运行环境,支持单机或者主备集群使用。

调用脚本时,使用 -D 参数指定数据库 data 目录,脚本会自动根据 data 目录来判断是单机还是集群。单机只检查本机的状态,集群会检查所有节点(不包括witness节点)的状态。在检查过程中会连接数据库,单机使用 chk.conf 配置文件中配置的kb_user 和 kb_database 进行连接,连接过程中需要手动输入密码。集群使用流复制用户进行连接,不需要输入密码。

调用脚本时,如果没有传入 data 目录,则将跳过连接数据库的检查,仅检查本机的状态。

注意:一键检查数据库状态脚本只支持linux通用机,只支持使用bash语言执行。

相关文件说明

配置文件chk.conf说明

配置文件chk.conf,和一键检查数据库状态脚本一起存放在数据库的bin目录下,此配置文件中可以修改数据库连接信息和参数建议信息。默认有,不用新建。

KBchk.sh脚本语法

一键检查数据库状态的入口文件是KBchk.sh,存放在数据库的bin目录下。会自动根据传入的 data 目录判断当前环境是单机还是集群。单机只检查本机,集群会检查所有能连接的节点。配置文件会自动在集群间自动同步。默认有,不用新建。

cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin/
./KBchk.sh -h
usage:		./KBchk.sh options.
  options:
    -b:		do physical backup validity check.
    -c:		do config check.
    -d:		do database check.
    -e:		do environments check.
    -f:		do files check.
    -k:		do checksums check.
    -p:		do process check.
    -r:		do resources check.
    -D:		input kingbase data. and do health check.
    -s:		unattended setting. action contains [init | start | stop]

检测数据库状态场景

系统环境检查

KBchk.sh -e调用do_env_chk.sh 脚本检查系统环境,也可以直接调用do_env_chk.sh脚本。单独调用do_env_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。

主要针对数据库服务器、集群、物理备份等主要配置文件中的部分配置项进行静态分析检查,结合chk.conf中信息对上述配置文件配置项的取值是否合理进行分析并给出结果,在数据库关机状态下亦可执行。

语法
usage:          ./do_env_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_env_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_env_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start environmental check ...
check ulimit -n 				            WARNING 	The recommended value is 655360
check ulimit -u 				            WARNING 	The recommended value is 655360
check ulimit -l 				            OK
check ulimit -c 				            OK
check kernel kernel.sem 			      OK
check kernel fs.file-max			      OK
check kernel fs.aio-max-nr      		OK
check kernel net.core.rmem_default  OK
check kernel net.core.rmem_max  		OK
check kernel net.core.wmem_default  OK
check kernel net.core.wmem_max  		OK
check kernel
net.ipv4.ip_local_port_range    		OK
check kernel net.ipv4.tcp_wmem  		OK
check kernel net.ipv4.tcp_rmem  		OK
check kernel vm.min_free_kbytes 		OK
check kernel vm.vfs_cache_pressure  OK
check kernel vm.swappiness      		OK
check kernel
net.ipv4.tcp_max_syn_backlog    		OK
check kernel net.core.somaxconn 		OK
check service command exist     		OK
check service iptables  			      OK
check service firewalld 			      OK
check service ufw       			      OK
check service crond     			      OK
check port 54321 listening      		OK
check port 8890 listening       		OK
check remote-pwdless to node1   		OK
物理备份检查

通过 KBchk.sh -b调用do_backup_chk.sh 脚本检查是否配置了物理备份和物理备份的有效性,也可以直接调用do_backup_chk.sh脚本。单独调用do_backup_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点

语法
usage:          ./do_backup_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_backup_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

该场景没有配置物理备份,所以输出error。

[kingbase@node1 bin]$ ./do_backup_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start backup check ...
check sys_rman physical backup  		ERROR   	has no configured Physical backup.
配置参数检查

do_config_chk.sh 脚本检查数据库配置文件,可通过 KBchk.sh -c 调用,也可以单独调用。单独调用do_config_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。

该功能主要针对数据库服务器、集群、物理备份等主要配置文件中的部分配置项进行静态分析检查,结合chk.conf中信息对上述配置文件配置项的取值是否合理进行分析并给出结果,在数据库关机状态下亦可执行。

语法
usage:          ./do_config_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_config_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_config_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start config check ...
Check sys_rman configuration    		ERROR   	sys_rman is not configured
Check logrotate for kbha.log    		OK
Check logrotate for hamgr.log   		OK
Check archive command   			      OK
Check wal_level 				            OK
Check full_page_writes  			      OK
Check checkpoint_timeout			      OK
Check max_wal_size      			      OK
Check failover  				            OK
Check recovery  				            OK
Check auto_cluster_recovery_level   OK
Check use_check_disk    		      	WARNING 	the value of use_check_disk is not recommended [on].
./do_config_chk.sh:行267: /usr/bin/ping: 权限不够
Check trusted_servers   			      ERROR   	ping trusted_servers [192.168.40.2] failed.
Check max_standby_streaming_delay   OK

检查结果一般包含三类信息:

  • 检查项

相关说明和操作请参考以下章节:

  • 结果状态

正常为 ok ,异常状态会提示 ERROR 或 WARNING 以及相应的错误原因。

  • 错误原因

如果某项检查结果有问题,会在此报描述错原因、提示需要关注的位置,并给出推荐值。

数据库健康检查

do_database_chk.sh 脚本检查数据库状态,可通过 KBchk.sh -d 调用,也可以单独调用。单独调用do_database_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。 data 是单机还是集群,只会检查当前节点。

检查以下参数:

    • 表和索引膨胀
    • 距离上次checkpoint有多久时间
    • 数据库时间和本地时间/时区是否统一
    • 备库WAL日志应用是否有延迟 ##只有集群环境有
    • 复制槽检查
    • 慢SQL
语法
usage:          ./do_database_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_database_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_database_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start database check ...
Check db 'test' expand tables   	  	OK   #表和索引膨胀
Check db 'kingbase' expand tables     OK   #表和索引膨胀
Check last checkpoint time      		  WARNING 	the last checkpoint has exceeded 300s #距离上次checkpoint有多久时间
Check log_timezone equals to timezone WARNING 	the log_timezone is not equals to timezone.  #数据库时间和本地时间/时区是否统一
Check timezone equals to system 	    OK  #数据库时间和本地时间/时区是否统一
Check replication slots 		        	OK  #复制槽检查
Check slow SQL  			              	OK  #慢SQL

文件检查

do_file_chk.sh 脚本检查文件是否存在,文件权限是否正确等。可通过 KBchk.sh -f 调用,也可以单独调用。单独调用do_file_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。可通过修改chk.conf中的配置增减需要检查的文件。

语法
usage:          ./do_file_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_file_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_file_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start file check ...
Check control_file_copy 	            		OK
Check license file exists       	      	OK
Check file .es/accept_hosts exists      	OK
Check file global/sys_control exists    	OK
Check repmgr.conf data_directory exists 	OK
Check repmgr.conf sys_bindir exists     	OK
Check repmgr.conf ping_path exists      	OK
Check /usr/bin/ping is exists   	      	OK
Check /usr/bin/ping permission  	  	    OK
Check /usr/sbin/ip exists       		      OK
Check /usr/sbin/ip execute permission   	OK
Check archive progress  		            	OK
Check sys_wal size is less than 1024MB  	OK

校验和检查

do_checksum_chk.sh 脚本检查数据文件、WAL文件、备份集等校验和是否正确。可通过 KBchk.sh -k 调用,也可以单独调用。单独调用 do_checksum_chk.sh 进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。

语法
usage:          ./do_checksum_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_checksum_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_checksum_chk.sh -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start checksums check ...
Check data checksum     			OK
Check WAL file checksum 			OK
Check backup and archive			ERROR   	has no configured Physical backup.

由于是第三方单位负责备份,未配置本地备份,故显示没配置物理备份。

进程状态检查

do_process_chk.sh 脚本检查数据库及所依赖的进程状态。可通过 KBchk.sh -p 调用,也可以单独调用。单独调用do_process_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。

语法
usage:          ./do_process_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_process_chk.sh  -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_process_chk.sh  -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start process check ...
Check kingbase status   			      OK
Check cluster status    			      OK
Check sys_securecmdd is running 		OK
Check securecmdd high availability  OK
Check repmgrd is running			      OK
Check kbha is running   			      OK
Check kbha high availability    		OK

系统资源检查

可通过 KBchk.sh -r调用do_resource_chk.sh 脚本检查系统资源,也可以直接调用do_resource_chk.sh脚本。单独调用do_resource_chk.sh进行检查时,无论传入的 data 是单机还是集群,只会检查当前节点。

语法
usage:          ./do_resource_chk.sh options
  options:
    -D:         kingbase data absolute path.
示例
su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
./do_resource_chk.sh  -D /home/kingbase/cluster/V9R1/cluster/kingbase/data

输出如下:

[kingbase@node1 bin]$ ./do_resource_chk.sh  -D /home/kingbase/cluster/V9R1/cluster/kingbase/data
Start resource check ...
check CPU usage 				                  OK
check Memory usage      			            OK
check Memory free       			            OK
check disk free space of data dir       	OK
check attr of data dir  			            OK
check owner of data dir 			            OK
check write to data dir 			            OK
check read from data dir			            OK
check disk free space of sys_wal dir    	OK
check attr of sys_wal dir       		      OK
check owner of sys_wal dir      		      OK
check write to sys_wal dir      		      OK
check read from sys_wal dir     		      OK

无人值守

无人值守功能可按照预设的时间间隔,自动执行一键检查数据库状态的任务,并将检查结果以文件形式保存在 chk.conf 配置的 result_save_path 目录下。

前提条件

为了保证任务顺利执行,请在配置无人值守之前完成以下操作:

  • 检查crontab服务状态

无人值守依赖于crontab服务,因此在配置前,请保证该服务处于正常状态。

  • 设置时间间隔

在chk.conf文件中设置月(crond_month)、天(crond_day)、时(crond_hour)、分(crond_minute)、周(crond_dayofweek)等配置项,规则同crontab保持一致。当配置项设置为星号(*),则表示可以是取值范围内的任何值。

# 以下参数设置表示任务将在每周二的01:02执行。
 crond_month="*"
 crond_day="*"
 crond_dayofweek="2"
 crond_hour="1"
 crond_minute="2"

# 以下参数设置表示任务将在每天的18:30执行。
 crond_month="*"
 crond_day="*"
 crond_dayofweek="*"
 crond_hour="18"
 crond_minute="30"

操作步骤

更改配置文件

登录用户名、dbname、数据目录等信息可在 chk.conf 文件中进行修改,默认是system用户,test数据库,数据目录需要手动填写。

su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
vi chk.conf
初始化无人值守

执行 KBchk.sh -s init 命令,可以初始化无人值守。 单机版配置无人值守时,系统会提示输入数据库登录密码。

su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
KBchk.sh -s init
启动无人值守

执行 KBchk.sh -s start 命令,可以启动无人值守。系统将自动在 /var/spool/cron/用户名 文件中添加自动执行规则。

su - kingbase
cd /home/kingbase/cluster/V9R1/cluster/kingbase/bin
KBchk.sh -s start 

如果 chk.conf 中配置了 result_save_path 则会在该目录下保存结果文件。结果文件名为 one_step_check_result${time}.log

停止无人值守

执行 KBchk.sh -s stop 命令,可以停止无人值守。系统会删除 /var/spool/cron/用户名 文件中的自动执行规则。

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

评论