人大金仓(KingbaseES)Docker 容器自动备份方案

一、前提假设(可根据环境调整)

项目 假设值
数据库 人大金仓 KingbaseES
部署方式 Docker 容器
容器名称 kingbase
数据库用户 system
数据库名 testdb
数据库端口 54321
备份目录 /data/backup/kingbase
备份保留天数 7 天
备份工具 sys_dump / sys_restore

⚠️ 人大金仓兼容 PostgreSQL 协议,但必须使用自带的 sys_dumpsys_restore,不可用 pg_dump

二、自动备份脚本

📄 backup_kingbase.sh

bash 复制代码
#!/bin/bash

# ================= 配置区 =================
CONTAINER_NAME="kingbase"
DB_USER="system"
DB_NAME="testdb"
DB_PORT="54321"

BACKUP_DIR="/data/backup/kingbase"
DATE=$(date +"%Y%m%d_%H%M%S")
KEEP_DAYS=7
# =========================================

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 备份文件名
BACKUP_FILE="$BACKUP_DIR/kingbase_${DB_NAME}_${DATE}.dump"

echo "[$(date)] 开始备份 Kingbase 数据库:$DB_NAME"

# 在 Docker 容器中执行 sys_dump
docker exec "$CONTAINER_NAME" \
  sys_dump \
    -U "$DB_USER" \
    -d "$DB_NAME" \
    -p "$DB_PORT" \
    -Fc \
    -f "/tmp/$(basename "$BACKUP_FILE")"

# 从容器拷贝到宿主机
docker cp "$CONTAINER_NAME:/tmp/$(basename "$BACKUP_FILE")" "$BACKUP_FILE"

# 清理容器内临时文件
docker exec "$CONTAINER_NAME" rm -f "/tmp/$(basename "$BACKUP_FILE")"

if [ $? -eq 0 ]; then
    echo "[$(date)] 备份成功:$BACKUP_FILE"
else
    echo "[$(date)] 备份失败"
    exit 1
fi

# 删除过期备份
find "$BACKUP_DIR" -name "kingbase_*.dump" -mtime +$KEEP_DAYS -delete

echo "[$(date)] 清理超过 $KEEP_DAYS 天的备份完成"

三、脚本赋权

bash 复制代码
chmod +x backup_kingbase.sh

四、手动测试

bash 复制代码
./backup_kingbase.sh

验证备份文件

bash 复制代码
ls /data/backup/kingbase

预期结果:

复制代码
kingbase_testdb_20260115_030000.dump

五、配置定时任务(Crontab)

编辑定时任务:

bash 复制代码
crontab -e

每天凌晨 2 点执行备份:

复制代码
0 2 * * * /path/to/backup_kingbase.sh >> /var/log/backup_kingbase.log 2>&1

六、数据库恢复示例(重要)

1️⃣ 将备份文件拷贝进容器

bash 复制代码
docker cp kingbase_testdb_20260115_030000.dump kingbase:/tmp/

2️⃣ 执行恢复

bash 复制代码
docker exec -it kingbase \
  sys_restore \
    -U system \
    -d testdb \
    -p 54321 \
    -c \
    /tmp/kingbase_testdb_20260115_030000.dump

-c:恢复前清理已有对象,避免冲突。

七、人大金仓特有说明

为什么使用 sys_dump / sys_restore

工具 说明
sys_dump 人大金仓专用备份工具
sys_restore 人大金仓专用恢复工具
pg_dump 版本不兼容,禁止使用

端口说明

数据库 默认端口
PostgreSQL 5432
人大金仓 54321
复制代码
相关推荐
布鲁飞丝18 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR12345678818 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
HiDev_19 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
龙仔72520 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪20 小时前
嵌入式Linux----网络通信
linux·运维·服务器
江湖有缘20 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
姜太小白21 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
张忠琳21 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
fengyehongWorld21 小时前
Linux 终端快捷键
linux·运维
看昭奚恤哭21 小时前
平滑加权轮询负载均衡的底层逻辑
运维·负载均衡