人大金仓(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
复制代码
相关推荐
大耳朵-小飞象3 小时前
智能调光4巨头争霸!轨道照明如何破局?
运维·智慧城市·智慧路灯·智能照明·楼宇智控·0-10v调光模块
sanzk3 小时前
firefly开发板ubuntu安装ros2下的micro-ROS Agent
linux·运维·ubuntu
努力进修5 小时前
Docker+cpolar 实战:打造灵活可控的远程办公系统
运维·docker·容器
其实防守也摸鱼5 小时前
运维--怎么看接口的请求和返回
运维·学习·网络安全·网络攻击模型·burpsuite·攻防对抗·蓝队
weixin_307779136 小时前
Linux下Nginx故障系统化检查Shell脚本
linux·运维·服务器·nginx·自动化
jieyucx8 小时前
Docker 入门第一阶段:建立正确认知与初体验
运维·docker·容器
2501_925963389 小时前
Hi3516CV610 + MPU6050 DMP 软件 EIS 防抖笔记
linux·运维·服务器
qetfw9 小时前
CentOS 7 基础环境配置
linux·运维·centos
jieyucx10 小时前
Docker 入门第二阶段:掌握日常命令
运维·docker·容器
随性而行36011 小时前
微信API接口与AI自动化:开发者的实现思路
运维·服务器·开发语言·人工智能·微信·自动化