Kingbase 常用运维命令总结

一、数据库连接与基础操作
  1. 连接指定服务器数据库

    bash 复制代码
    ksql -h 主机IP -p 端口号 -U 用户名 -d 数据库名 -W  
    # 示例:连接 IP 为 192.168.1.100 的数据库  
    ksql -h 192.168.1.100 -p 54321 -U system -d test -W  
  2. 断开数据库连接

    bash 复制代码
    \q 或 exit  
  3. 查看数据库列表及详细信息

    sql 复制代码
    \l+  
    SELECT datname FROM sys_database;  
  4. 查看数据库版本信息

    bash 复制代码
    sys_ctl -V          # 查看服务端版本  
    SELECT version();   # 查看数据库详细版本  

二、会话与进程管理
  1. 终止指定数据库所有会话

    sql 复制代码
    SELECT pg_terminate_backend(pid)  
    FROM pg_stat_activity  
    WHERE datname='xk_test' AND pid <> pg_backend_pid();  
  2. 查看活跃会话及 SQL 信息

    sql 复制代码
    SELECT datname, usename, client_addr, query, state  
    FROM sys_stat_activity  
    WHERE datname IS NOT NULL;  
  3. 终止指定进程

    sql 复制代码
    SELECT sys_terminate_backend(pid);  -- 替换为实际 PID  
  4. 查询当前会话进程 ID

    sql 复制代码
    SELECT sys_backend_pid;  

三、系统信息与状态
  1. 查看 License 有效期

    sql 复制代码
    SELECT get_license_validdays();  
  2. 数据库运行时间与启动时间

    sql 复制代码
    SELECT sys_postmaster_start_time();  
    SELECT current_timestamp - pg_postmaster_start_time() AS uptime;  
  3. 查看客户端连接信息

    sql 复制代码
    SELECT inet_client_addr(), inet_client_port();  -- 当前会话的客户端 IP 和端口  
  4. 查看数据库物理存储路径

    sql 复制代码
    SELECT sys_relation_filepath('表名');  

四、空间与容量管理
  1. 数据库占用空间

    sql 复制代码
    SELECT pg_size_pretty(pg_database_size(current_database()));  
    SELECT sum(pg_database_size(datname))/1024/1024 || 'MB' FROM sys_database;  
  2. 表与索引空间统计

    sql 复制代码
    -- 表大小(含索引)  
    SELECT pg_size_pretty(pg_total_relation_size('表名'));  
    -- 表数据大小  
    SELECT pg_size_pretty(pg_relation_size('表名'));  
    -- 索引大小  
    SELECT pg_size_pretty(pg_total_relation_size('表名') - pg_relation_size('表名'));  

五、性能监控与调优
  1. 慢 SQL 分析

    sql 复制代码
    -- 按平均执行时间排序  
    SELECT userid::regrole, dbid, query  
    FROM sys_stat_statements  
    ORDER BY mean_exec_time DESC LIMIT 5;  
    -- 按总执行时间排序  
    SELECT userid::regrole, dbid, query  
    FROM sys_stat_statements  
    ORDER BY total_exec_time DESC LIMIT 5;  
  2. 长事务监控

    sql 复制代码
    SELECT * FROM sys_stat_activity  
    WHERE xact_start + interval '1 hour' < now();  
  3. 锁阻塞查询

    sql 复制代码
    SELECT blocked_locks.pid AS blocked_pid,  
           blocked_activity.query AS blocked_query,  
           blocking_locks.pid AS blocking_pid,  
           blocking_activity.query AS blocking_query  
    FROM pg_locks blocked_locks  
    JOIN pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid  
    JOIN pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype  
    JOIN pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid  
    WHERE NOT blocked_locks.granted;  

六、高可用与备份恢复
  1. 主备状态检查

    sql 复制代码
    SELECT pg_is_in_recovery();  -- 返回 f 为主库,t 为备库  
  2. 主库查看备库延迟

    sql 复制代码
    SELECT client_addr,  
           pg_wal_lsn_diff(sent_lsn, write_lsn) AS sent_lag,  
           pg_wal_lsn_diff(sent_lsn, replay_lsn) AS apply_lag  
    FROM pg_stat_replication;  
  3. 物理备份与恢复

    bash 复制代码
    # 全量备份  
    kbbackup -U system -D /data/kingbase -b /backup/full  
    # 恢复备份  
    kbrestore -U system -D /data/kingbase_new -l /backup/full/backup_label  
  4. 逻辑备份与导入

    bash 复制代码
    pg_dump -U system -d test -f test.sql    # 导出  
    ksql -U system -d test -f test.sql       # 导入  

七、表维护与优化
  1. 表膨胀处理

    sql 复制代码
    -- 查询表膨胀率  
    SELECT c.oid::regclass AS table_name,  
           greatest(age(c.relfrozenxid), age(t.relfrozenxid)) AS age  
    FROM pg_class c  
    LEFT JOIN pg_class t ON c.reltoastrelid = t.oid  
    WHERE c.relkind IN ('r', 'm')  
    ORDER BY age DESC;  
    -- 手动清理膨胀  
    VACUUM FULL 表名;  
  2. 统计信息更新

    sql 复制代码
    ANALYZE 表名;   -- 收集统计信息  

八、日志与故障排查
  1. 日志文件查看

    bash 复制代码
    tail -f $KINGBASE_DATA/sys_log/*.csv  # 实时查看错误日志  
  2. 数据库进程检查

    bash 复制代码
    ps aux | grep kingbase  
  3. 连接数统计

    sql 复制代码
    SELECT datname, usename, COUNT(*) AS connections  
    FROM sys_stat_activity  
    WHERE usename IS NOT NULL  
    GROUP BY datname, usename;  

注意事项
  • 高风险操作警告VACUUM FULL 会锁表,需在业务低峰期操作;终止会话前确认影响。
  • 备份验证:定期检查备份文件完整性,确保恢复流程可靠。
  • 权限控制 :避免直接使用 system 用户操作生产环境,按需分配权限。
相关推荐
萧曵 丶5 分钟前
Spring @TransactionalEventListener
java·数据库·spring·事务·transactional·异步
坤坤不爱吃鱼8 分钟前
【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案
mysql·postgresql·oracle
胡斌附体9 分钟前
mobaxterm终端sqlplus乱码问题解决
数据库·乱码·sqlplus·字符集设置
ladymorgana11 分钟前
【Docker】如何设置 `wiredTigerCacheSizeGB` 和 `resources.limits.memory`
运维·docker·容器
moon66sun18 分钟前
开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
数据库·esb
TDengine (老段)36 分钟前
使用 StatsD 向 TDengine 写入
java·大数据·数据库·时序数据库·iot·tdengine·涛思数据
DarkAthena42 分钟前
【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
数据库·gaussdb
Gauss松鼠会1 小时前
GaussDB权限管理:从RBAC到精细化控制的企业级安全实践
大数据·数据库·安全·database·gaussdb
时序数据说1 小时前
时序数据库IoTDB用户自定义函数(UDF)使用指南
大数据·数据库·物联网·开源·时序数据库·iotdb
chanalbert1 小时前
CentOS系统新手指导手册
linux·运维·centos