一键检查数据库状态
在数据库运维过程中,需要定期的对数据库的环境进行检查,可以帮助用户减少数据库发生问题的概率。一键检查数据库状态脚本可以快速的检查数据库状态以及运行环境,支持单机或者主备集群使用。
调用脚本时,使用 -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检查结果一般包含三类信息:
- 检查项
相关说明和操作请参考以下章节:
- 《金仓数据守护集群和读写分离集群使用手册》手册中的“ 集群配置文件repmgr.conf配置”。
- 《KingbaseES高可用最佳应用实践》手册中的“ 数据库配置文件kingbase.conf配置”。
- 《KingbaseES高可用最佳应用实践》手册中的“ 数据库配置文件es_rep.conf配置”。
- 《KingbaseES备份与恢复工具》手册中的“ sys_rman.conf配置说明”。
- 结果状态
正常为 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/用户名 文件中的自动执行规则。




