人大金仓服务器定时备份

适用于部署在docker容器中的人大金仓数据库

1.进入docker容器的人大金仓安装目录

查看docker容器,执行命令

java 复制代码
docker ps

进入docker容器中

java 复制代码
docker exec -it 210 /bin/bash

不知道kingbase安装目录的,执行命令搜索路径

java 复制代码
which kingbase

2.进入安装目录,创建备份文件所在位置

java 复制代码
cd /home/kingbase/install/kingbase/bin/

我这里是将备份文件放到bin文件夹下的sqlBack中,你们看情况调整

执行创建文件夹目录和脚本文件

java 复制代码
mkdir sqlBack
touch sqlBack.sh

复制脚本到sh文件中,自己调整对应的密码和数据库

powershell 复制代码
#!/bin/bash
export PGPASSWORD="123456"  # ← 关键:export拼写正确 + 等号无空格,更换密码
BACKUP_DIR="/home/kingbase/install/kingbase/bin/sqlBack" #更换备份路径
KEEP_DAYS=10 #更换保留天数
DB_LIST=("contract_zs") #更换备份数据库

mkdir -p "${BACKUP_DIR}"
DATE=$(date +"%Y%m%d_%H%M%S")
SUCCESS=0

for DB in "${DB_LIST[@]}"; do
  BACKUP_FILE="${BACKUP_DIR}/${DB}_${DATE}.dmp"
  echo "【$(date)】开始备份数据库 ${DB}..."
  
  /home/kingbase/install/kingbase/bin/sys_dump \
    -h localhost \
    -p 54321 \
    -U kingbase \
    -v \
    -f "${BACKUP_FILE}" \
    -F c \
    "${DB}"
  
  if [ $? -eq 0 ]; then
    echo "✅ ${DB} 备份成功:${BACKUP_FILE}"
    ((SUCCESS++))
  else
    echo "❌ ${DB} 备份失败!跳过..."
  fi
done

echo "🧹 清理超过 ${KEEP_DAYS} 天的备份..."
for DB in "${DB_LIST[@]}"; do
  find "${BACKUP_DIR}" -name "${DB}_*.dmp" -mtime +${KEEP_DAYS} -delete
done
echo "✅ 共成功备份 ${SUCCESS}/${#DB_LIST[@]} 个数据库,保留最近 ${KEEP_DAYS} 天备份"
exit $(( ${#DB_LIST[@]} - SUCCESS ))

拷贝进脚本文件中,手动执行是否可以正常备份文件

如果需要提供密码

先查看/home/kingbase/.encpwd文件,看文件中的信息是什么

powershell 复制代码
cat /home/kingbase/.encpwd

如果显示没有这个文件

则直接创建

powershell 复制代码
echo "*:54321:*:kingbase:$(echo -n '123456' | base64)" >> /home/kingbase/.encpwd

创建完在查看后显示上述信息,此时执行命令还需要输入密码的话,执行

powershell 复制代码
chown kingbase:kingbase /home/kingbase/.encpwd

此时再次执行脚本,无需输入密码


4.到这里说明脚本没有问题,此时需到宿主机执行定时命令

退出docker容器,执行exit

5.执行命令会打开定时文件,在文件中书写定时任务,退出保存,等待任务执行看是否完成备份

powershell 复制代码
 crontab -e

6.等待定时任务执行,看备份文件是否生成

正常成功sqlBack文件夹下会生成新文件

如果执行失败了,例如权限不够

执行命令

powershell 复制代码
# 1. 修复脚本权限 + 所有者(关键!)
docker exec -u root 210592c5084a chown kingbase:kingbase /home/kingbase/install/kingbase/bin/sqlBack.sh
docker exec -u root 210592c5084a chmod 755 /home/kingbase/install/kingbase/bin/sqlBack.sh

# 2. 修复 .encpwd 权限(消除 WARNING)
docker exec -u root 210592c5084a chmod 600 /home/kingbase/.encpwd
docker exec -u root 210592c5084a chown kingbase:kingbase /home/kingbase/.encpwd

执行脚本测试

powershell 复制代码
docker exec 210592c5084a /home/kingbase/install/kingbase/bin/sqlBack.sh

此时等待定时任务执行,看/var/log/kingbase_back.log日志显示

相关推荐
PiaoKe___1 小时前
云手机原理与 Python 自动化实战:ADB 批量控制、任务调度与落地建议
服务器·arm开发·python·自动化
Madison-No78 小时前
搭建项目测试环境
linux·运维·服务器·python
吴声子夜歌9 小时前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
悠悠121389 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
云老大-阿里云国际站代理商11 小时前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
zx_7414848111 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS11 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
wdfk_prog12 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞13 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
浅念-13 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql