人大金仓Kingbase V8 自动全量备份部署完整笔记

人大金仓Kingbase V8 自动全量备份部署完整笔记

适用系统:麒麟Linux / CentOS Linux

运行用户:kingbase

备份方式:sys_dump 逻辑全量压缩备份

策略:日常备份留存7天、首次备份永久兜底、每日凌晨2点定时执行、日志超10MB自动清空轮转

一、前期目录与权限初始化(root用户执行)

bash 复制代码
mkdir -p /data/dbbak /data/dbbak/log
chown -R kingbase:kingbase /data/dbbak
BACK_LOG="/data/dbbak/log/kingbase_back.log"
touch $BACK_LOG
chown kingbase:kingbase $BACK_LOG

校验目录权限

bash 复制代码
ls -l /data/dbbak/
ls -l /data/dbbak/log/

二、确认金仓备份工具路径(root核对)

bash 复制代码
ls /data/kingbase/Server/bin/sys_dump /data/kingbase/Server/bin/sys_restore

说明:人大金仓不使用pg_dump,原生备份工具为 sys_dump、恢复工具 sys_restore,存在即正常

三、编写自动备份脚本(root创建)

1、新建脚本文件

bash 复制代码
vim /data/kingbase_back.sh

2、粘贴纯脚本内容(配置项改成自己的:密码、库名、金仓端口)

bash 复制代码
#!/bin/bash
KB_BIN="/data/kingbase/Server/bin"
KB_PORT="54321"
KB_DB="business_db"
KB_USER="system"
KB_PWD="******"
BAK_BASE="/data/dbbak"
LOG_FILE="${BAK_BASE}/log/kingbase_back.log"
LOG_MAX_SIZE=$((10 * 1024 * 1024))
RETENTION_DAY=7
INIT_FLAG="${BAK_BASE}/first_backup.flag"

check_log_size() {
    if [ -f "$LOG_FILE" ]; then
        LOG_SIZE=$(du -b "$LOG_FILE" | awk '{print $1}')
        if [ $LOG_SIZE -gt $LOG_MAX_SIZE ]; then
            > $LOG_FILE
            echo "【$(date '+%Y-%m-%d %H:%M:%S')】日志文件超过10MB,已清空重置" >> $LOG_FILE
        fi
}

write_log() {
    check_log_size
    echo "【$(date '+%Y-%m-%d %H:%M:%S')】$1" >> $LOG_FILE
}

check_log_size
write_log "===== 人大金仓业务库自动备份任务开始 ====="

export PGPASSWORD="$KB_PWD"

BAK_NAME="kingbase_business_db_$(date +%Y%m%d_%H%M%S).dump"
BAK_FULL_PATH="${BAK_BASE}/${BAK_NAME}"

write_log "开始执行全量备份,文件:$BAK_NAME"
${KB_BIN}/sys_dump -h 127.0.0.1 -p $KB_PORT -U $KB_USER -d $KB_DB -Fc -f $BAK_FULL_PATH

if [ $? -eq 0 ] && [ -s "$BAK_FULL_PATH" ]; then
    write_log "备份成功:$BAK_FULL_PATH"

    if [ ! -f "$INIT_FLAG" ]; then
        touch "$INIT_FLAG"
        cp $BAK_FULL_PATH ${BAK_BASE}/kingbase_business_db_FIRST_FULL_BACKUP.dump
        write_log "检测到首次备份,已永久留存初始完整备份包"
    fi

    find $BAK_BASE -maxdepth 1 -name "kingbase_business_db_*.dump" -type f -mtime +${RETENTION_DAY} ! -name "*FIRST_FULL_BACKUP*" -delete
    write_log "已自动清理${RETENTION_DAY}天以上过期日常备份"
else
    write_log "备份失败!请检查数据库连接、端口、账号密码是否正常"
    rm -f $BAK_FULL_PATH
fi

unset PGPASSWORD
write_log "===== 本次备份任务结束 ====="
echo -e "\n" >> $LOG_FILE

3、修改参数说明

  1. KB_PORT:金仓默认端口 54321
  2. KB_DB:替换为自身实际业务数据库名称
  3. KB_PWD:将******修改为system用户实际数据库密码

4、配置脚本权限与归属

bash 复制代码
chmod 700 /data/kingbase_back.sh
chown kingbase:kingbase /data/kingbase_back.sh

四、手动测试备份(切换kingbase用户)

bash 复制代码
su - kingbase
bash /data/kingbase_back.sh

五、结果验证命令

  1. 查看备份文件
bash 复制代码
ls -lh /data/dbbak

文件释义:

  • kingbase_business_db_时间戳.dump:每日动态生成全量备份,滚动保留7天,到期自动清理
  • kingbase_business_db_FIRST_FULL_BACKUP.dump:首次初始化全量备份,永久兜底保存,不受7天清理规则限制
  • first_backup.flag:首次备份标记文件
  1. 查看运行日志
bash 复制代码
tail -100 /data/dbbak/log/kingbase_back.log

日志流程完整、无报错 = 备份测试成功

六、配置Linux定时任务(kingbase用户)

1、编辑定时计划

bash 复制代码
crontab -e

写入定时规则:

复制代码
0 2 * * * /bin/bash /data/kingbase_back.sh

定时释义:每日 凌晨02:00 自动执行备份脚本

2、查看已配置定时任务

bash 复制代码
crontab -l

七、备份策略规则汇总

  1. 备份类型:sys_dump 二进制压缩全量逻辑备份,完整包含库表结构、数据、索引、函数、约束、序列等全部对象
  2. 日志管控:日志文件阈值10MB,超出容量自动清空重置,避免日志持续膨胀占用磁盘
  3. 备份留存:
    • 日常每日备份:循环保留7天,超时自动删除
    • 首次初始备份:永久留存兜底,不会被定时清理
  4. 运行身份:kingbase普通业务用户运行,规避root访问数据库的权限安全隐患

八、数据库整库恢复操作命令

bash 复制代码
su - kingbase
/data/kingbase/Server/bin/sys_restore -h 127.0.0.1 -p 54321 -U system -d business_db /data/dbbak/备份文件名.dump

备注:执行前可按需新建空库,避免数据冲突覆盖

九、日常运维快捷命令

bash 复制代码
# 实时监控备份日志
tail -f /data/dbbak/log/kingbase_back.log

# 按时间倒序查看所有备份文件
ls -lht /data/dbbak/*.dump

# 手动临时触发一次备份校验
bash /data/kingbase_back.sh

十、故障排查要点

  1. 备份失败:优先查阅日志,核对端口、数据库名、账号密码、数据库服务运行状态
  2. 定时任务不生效:确认定时任务归属kingbase用户、脚本权限700、系统crond服务正常开启
  3. 磁盘空间告警:及时迁移备份文件、扩容磁盘容量
相关推荐
王志来137944730081 小时前
从选型到交付,工控服务器机箱一站式采购平台匀天如何实现服务闭环?
数据库
ShuiShenHuoLe1 小时前
HmarkX(码笺)的本地数据库模块重构实战
数据库·oracle·重构
Databend1 小时前
从 Kafka 到 Databend Cloud:万亿级 Agent Trace 接入链路的工程实践
大数据·数据库·agent
鱼子星_1 小时前
【C++】反向迭代器:反向迭代器的底层认识与模拟实现
开发语言·c++·笔记·stl
倔强的石头_1 小时前
SQL Server数据迁移,不只是把数据搬过去
数据库
acd120092 小时前
Redis 缓存和数据库一致性,到底怎么搞?
数据库·redis·缓存
sugar__salt2 小时前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发
CodeBlog-star2 小时前
AI Agent 高并发实战:Redis 限流、队列、缓存与高可用全栈方案
数据库·redis·缓存
TDengine (老段)2 小时前
TDengine taosX 与 Explorer — 数据集成与可视化管理
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据