人大金仓(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
复制代码
相关推荐
AOwhisky1 小时前
Ceph系列第三期:Ceph 集群核心配置与管理
linux·运维·数据库·笔记·ceph
天疆说1 小时前
在 Ubuntu 上安装 NASA GMAT R2026a 轨道设计软件
linux·运维·ubuntu
武雄(小星Ai)2 小时前
Gemini CLI 免费用户6月18日停服,Google Antigravity 2.0 深度解读
运维·人工智能·agent
大熊程序猿2 小时前
MarkItDown Docker安装
运维·docker·容器
Hello_worlds2 小时前
Kafka InconsistentClusterIdException 导致容器无限重启,磁盘打满排查与修复
docker·kafka·磁盘·排障
AI行业学习2 小时前
CC-Switch 下载、安装windows\macOS \Linux 安装
linux·运维·macos
江南风月2 小时前
WGCLOUD监控系统的Restful Http接口一览
运维·zabbix·运维开发·prometheus
一拳一个娘娘腔2 小时前
【SRC漏洞挖掘系列】第15期:自动化与AI赋能 —— 打造你的专属“漏洞挖掘机”
运维·人工智能·自动化
wgc2k2 小时前
Nest.js基础-6:关于Claude Code
人工智能·docker·node.js