人大金仓(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
复制代码
相关推荐
曲幽1 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
武子康2 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn865 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理