前言:
Kingbase简单巡检的意义在于确保数据库系统的稳定运行和性能优化。通过定期执行一系列的检查和测试,可以及时发现潜在的问题,如数据库性能瓶颈、硬件故障、软件漏洞等,并采取相应的措施进行修复和优化。
一、KES基本信息巡检
1.1、使用sys_ctl查看版本
- 方法1
[kingbase@Node1 ~]$ sys_ctl -V
sys_ctl (Kingbase) 12.1
[kingbase@Node1 ~]$
- 方法2
[kingbase@Node1 ~]$ sys_ctl --version
sys_ctl (Kingbase) 12.1
[kingbase@Node1 ~]$
1.2、使用version函数查看版本
说明:检查脚本如下:
ksql -U system -d test -c 'SELECT version()'
代码如下:
[kingbase@Node1 ~]$ ksql -Usystem -dtest
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 行记录)
test=#
1.3、查看license有效期
说明:检查脚本如下:
ksql -U system -d test -c 'SELECT get_license_validdays()'
代码如下:
[kingbase@Node1 ~]$ ksql -Usystem -dtest -c 'SELECT get_license_validdays()'
用户 system 的口令:
get_license_validdays
-----------------------
64
(1 行记录)
[kingbase@Node1 ~]$
1.4、查看数据库实例启动时间
代码如下:
[kingbase@Node1 ~]$ ksql -Usystem -dtest -c 'SELECT sys_postmaster_start_time();'
用户 system 的口令:
sys_postmaster_start_time
-------------------------------
2024-11-07 16:46:07.149917+08
(1 行记录)
[kingbase@Node1 ~]$
1.5、查看KES无故障运行时长
说明:检查脚本如下:
ksql -U system -d test
SELECT date_trunc('second',current_timestamp -sys_postmaster_start_time()) as uptime;
代码如下:
[kingbase@Node1 ~]$ ksql -Usystem -dtest
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=#
test=# SELECT date_trunc('second',current_timestamp -sys_postmaster_start_time()) as uptime;
uptime
-------------------------------
+000000000 00:06:24.000000000
(1 行记录)
test=#
二、KES数据库相关信息简单巡检
2.1、使用ksql的-l参数或元命令
说明:检查脚本如下:
ksql -U system -d test -l
ksql -U system -d test
\l
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test -l
用户 system 的口令:
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
------------+--------+----------+-------------+-------------+-------------------
cssdserver | sy | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
db02 | user2 | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
kingbase | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
security | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
(7 行记录)
[kingbase@Node1 ~]$
2.2、使用数据字典
说明:检查脚本如下:
SELECT datname FROM sys_database;
代码如下:
[kingbase@Node1 ~]$ ksql -Usystem -dtest -c 'SELECT datname FROM sys_database;'
用户 system 的口令:
datname
------------
test
kingbase
template1
template0
security
cssdserver
db02
(7 行记录)
[kingbase@Node1 ~]$
2.3、统计当前数据库占用的磁盘空间
说明:检查脚本如下:
SELECT sys_database_size(current_database())/1024/1024 || 'MB' MB;
> ##### 代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT sys_database_size(current_database())/1024/1024 || 'MB' MB;
mb
----------------------
14.209979057312012MB
(1 行记录)
test=#
2.4、统计所有数据库占用的磁盘空间总量
说明:检查脚本如下:
SELECT(sum(sys_database_size(datname))/1024/1024) || 'MB' MB FROM sys_database;
> ##### 代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT(sum(sys_database_size(datname))/1024/1024) || 'MB' MB FROM sys_database;
mb
------------------------
105.4849138259887695MB
(1 行记录)
test=#
三、查看表和索引的大小
3.1、统计表的空间占用
说明:检查脚本如下:
SELECT sys_relation_size('public.t01')/1024|| 'kB' KB;
SELECT sys_size_pretty(sys_relation_size('public.t01'));
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT sys_relation_size('public.t01')/1024|| 'kB' KB;
kb
-----
0kB
(1 行记录)
test=# SELECT sys_size_pretty(sys_relation_size('public.t01'));
sys_size_pretty
-----------------
0 bytes
(1 行记录)
test=#
3.2、统计表和与表关联的索引占用空间总量
说明:检查脚本如下:
SELECT sys_total_relation_size('public.t01')/1024|| 'kB' KB;
SELECT sys_size_pretty(sys_total_relation_size('public.t01'));
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT sys_total_relation_size('public.t01')/1024|| 'kB' KB;
kb
-----
0kB
(1 行记录)
test=# SELECT sys_size_pretty(sys_total_relation_size('public.t01'));
sys_size_pretty
-----------------
0 bytes
(1 行记录)
test=#
3.3、统计表的记录数
说明:检查脚本如下:
SELECT count(*) || ' rows' "rows" FROM public.t01;
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT count(*) || ' rows' "rows" FROM public.t01;
rows
--------
0 rows
(1 行记录)
test=#
3.4、查看当前登录数据库的名称
说明:检查脚本如下:
SELECT current_catalog;
SELECT current_database();
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test -c 'SELECT current_catalog;'
用户 system 的口令:
current_catalog
-----------------
test
(1 行记录)
[kingbase@Node1 ~]$
[kingbase@Node1 ~]$ ksql -U system -d test -c 'SELECT current_database();'
用户 system 的口令:
current_database
------------------
test
(1 行记录)
[kingbase@Node1 ~]$
四、查看时区和时间
4.1、查看最近一次加载参数文件的时间
说明:检查脚本如下:
SELECT sys_conf_load_time();
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT sys_conf_load_time();
sys_conf_load_time
-------------------------------
2024-11-07 22:45:06.776086+08
(1 行记录)
test=#
4.2、查看时区
说明:检查脚本如下:
SHOW timezone;
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SHOW timezone;
TimeZone
---------------
Asia/Shanghai
(1 行记录)
test=#
4.3、查看当前日期或时间
说明:检查脚本如下:
SELECT now();
SELECT current_timestamp;
SELECT sysdate;
SELECT current_date;
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT now();
now
-------------------------------
2024-11-07 17:46:23.256851+08
(1 行记录)
test=# SELECT current_timestamp;
current_timestamp
-------------------------------
2024-11-07 22:46:30.892257+08
(1 行记录)
test=# SELECT sysdate;
sysdate
---------------------
2024-11-07 22:46:38
(1 行记录)
test=# SELECT current_date;
current_date
--------------
2024-11-07
(1 行记录)
test=#
五、查看当前会话信息
5.1、查看当前会话的客户端IP和端口
说明:检查脚本如下:
ksql -h 192.168.4.141 -p 54321 -U system -d test
SELECT inet_client_addr(),inet_client_port();
代码如下:
[kingbase@Node1 ~]$ ksql -h 192.168.4.141 -p 54321 -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT inet_server_addr(),inet_server_port();
inet_server_addr | inet_server_port
------------------+------------------
192.168.4.141 | 54321
(1 行记录)
test=#
5.2、查看服务器的IP和端口
说明:检查脚本如下:
ksql -h 192.168.4.141 -p 54321 -U system -d test
SELECT inet_server_addr(),inet_server_port();
代码如下:
[kingbase@Node1 ~]$ ksql -h 192.168.4.141 -p 54321 -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT inet_server_addr(),inet_server_port();
inet_server_addr | inet_server_port
------------------+------------------
192.168.4.141 | 54321
(1 行记录)
test=#
5.3、查看当前会话的后台进程ID
说明:检查脚本如下:
ksql -U system -d test
SELECT sys_backend_pid();
\! ps -ef | grep 7130 | grep -v grep
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT sys_backend_pid();
sys_backend_pid
-----------------
2003
(1 行记录)
test=# \! ps -ef | grep 2003 | grep -v grep
kingbase 2003 1275 0 17:05 ? 00:00:00 kingbase: system test [local] idle
test=#
六、查看数据库信息
6.1、查看数据库中的连接信息
说明:检查脚本如下:
SELECT datname,usename,client_addr,client_port FROM sys_stat_activity;
代码如下:
[kingbase@Node1 ~]$
[kingbase@Node1 ~]$ ksql -U system -d test -c 'SELECT datname,usename,client_addr,client_port FROM sys_stat_activity;'
用户 system 的口令:
datname | usename | client_addr | client_port
----------+---------+-------------+-------------
kingbase | system | |
| system | |
| | |
| system | |
test | system | | -1
| | |
| | |
| | |
(8 行记录)
[kingbase@Node1 ~]$
6.2、查看会话执行的SQL信息
注意:此处需设置参数track_activities为on
说明:检查脚本如下:
show track_activities;
> ##### 代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test -c 'show track_activities;'
用户 system 的口令:
track_activities
------------------
on
(1 行记录)
[kingbase@Node1 ~]$
6.2、查看所有会话执行的SQL信息
说明:检查脚本如下:
SELECT datname,usename,client_addr,client_port FROM sys_stat_activity;
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test -c 'SELECT datname,usename,client_addr,client_port FROM sys_stat_activity;'
用户 system 的口令:
datname | usename | client_addr | client_port
----------+---------+-------------+-------------
kingbase | system | |
| system | |
| | |
| system | |
test | system | | -1
| | |
| | |
| | |
(8 行记录)
[kingbase@Node1 ~]$
6.3、只看正在运行的SQL信息
说明:检查脚本如下:
SELECT datname,usename,query,state FROM sys_stat_activity WHERE state not like 'idle%';
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
test=# SELECT datname,usename,query,state FROM sys_stat_activity WHERE state not like 'idle%';
datname | usename | query | state
---------+---------+-----------------------------------------------------------------------------------------+--------
test | system | SELECT datname,usename,query,state FROM sys_stat_activity WHERE state not like 'idle%'; | active
(1 行记录)
test=#
6.4、查看耗时较长的SQL
说明:检查脚本如下:
\x
SELECT current_timestamp - query_start as runtime,datname,usename,pid,query FROM sys_stat_activity WHERE state != 'idle' ORDER BY 1 desc;
代码如下:
[kingbase@Node1 ~]$ ksql -U system -d test
用户 system 的口令:
输入 "help" 来获取帮助信息.
<tname,usename,pid,query FROM sys_stat_activity WHERE state != 'idle' ORDER BY 1 desc;
runtime | datname | usename | pid | query
-------------------------------+---------+---------+------+------------------------------------------------------------------------
-------------------------------------------------------------------
+000000000 00:00:00.000000000 | test | system | 2049 | SELECT current_timestamp - query_start as runtime,datname,usename,pid,q
uery FROM sys_stat_activity WHERE state != 'idle' ORDER BY 1 desc;
(1 行记录)
test=#
结尾
巡检的主要目的:
- 保障数据库系统的稳定性:通过检查数据库的各项指标,如CPU使用率、内存使用率、磁盘I/O等,可以及时发现系统异常,避免因系统故障导致的数据丢失或业务中断。
- 提高数据库性能:通过分析数据库的查询执行计划、索引使用情况等,可以找出性能瓶颈,进行相应的优化,提高数据库的响应速度和吞吐量。
- 预防潜在问题:通过定期的巡检,可以提前发现潜在的问题,如硬件老化、软件漏洞等,采取相应的措施进行预防,避免问题扩大化。
- 提高数据库的可靠性:通过对数据库的备份、恢复等操作进行检查,可以确保数据库的备份和恢复机制的有效性,提高数据库的可靠性。
kingbase简单巡检对于保障数据库系统的稳定运行和性能优化具有重要意义。通过定期执行巡检,可以及时发现潜在的问题,采取相应的措施进行修复和优化,提高数据库的可靠性和性能,从而保障业务的顺利进行。
最后修改时间:2024-11-07 18:09:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




