一、备份方式
KingbaseESV8数据库备份的两种方式:
(1)使用数据库开发工具KStudio备份
(2)命令行方式备份
变量 BACKUP_FILE 就是备份后的文件
#这里数据库用户名是stmis 要备份的数据库是geomis
/home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump -h localhost -p 54321 -U stmis -v -f "${BACKUP_FILE}" -F c geomis
二、自动备份
(1)编写脚本文件 geomis-backup.sh
#!/bin/bash
# 数据库用户stmis的密码 输入到环境变量中
export PGPASSWORD="stmis123"
# 日期变量,用户给备份的数据库文件上打上日期戳
DATE=$(date +"%Y%m%d_%H%M%S")
# 定义变量:备份文件名称
BACKUP_FILE="/home/geomis/BACKUP/BACKUP_DB/geomis_${DATE}.dmp"
#备份
/home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump -h localhost -p 54321 -U stmis -v -f "${BACKUP_FILE}" -F c geomis
(2)赋予该脚本文件执行权限
sudo chmod +x geomis-backup.sh
(3)将备份文件添加到用户的定时任务中,这里我添加到了root用户的定时任务
crontab -e
#添加下面的内容 表示每天的1点钟备份一次
0 1 * * * sudo /bin/bash /home/geomis/geomis-backup.sh
===============================分割线====================================
记录之前一个自动任务失败的脚本:
(1)第一个脚本 backup-db.sh:
并匹配到输出中的“Password:”后,自动输入密码“stmis123”并回车,以便让备份程序顺利运行。
#!/usr/bin/expect
#backup geomis database
spawn "/home/kingbase/KingbaseES/V8/KESRealPro/V008R006C006B0013/ClientTools/bin/sys_dump" -h localhost -p 54321 -U stmis -v -f "/home/geomis/BACKUP/BACKUP_DB/geomis.dmp" -F c geomis
expect "Password:"
send "stmis123\r"
interact
(2)第二个脚本 backup-geomis.sh
这是一个Bash脚本,用于备份KingbaseES数据库中名为“geomis”的数据。该脚本包含以下步骤: 获取当前的日期和时间,并将其保存在变量$datetime中,以便在备份文件名称中使用。 调用名为backup-db.sh的脚本,该脚本用于实际备份数据库。 在备份数据库完成后,等待20秒钟,以确保备份文件已完全生成并关闭。 进入备份文件夹“/home/geomis/BACKUP/BACKUP_DB”,将备份文件geomis.dmp重命名为geomis-日期时间.dmp的格式,以便将其与其他备份文件区分开来。 需要注意的是,此脚本中涉及到的路径和文件名等信息,应根据实际情况进行修改。
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
#get time
datetime=$(date +%Y%m%d_%H%M%S)
#backup geomis database
/home/geomis/backup-db.sh
sleep 20s
#rename filename
cd /home/geomis/BACKUP/BACKUP_DB
mv geomis.dmp geomis-${datetime}.dmp
注意:这里我手动执行 ./backup-geomis.sh 后,可以备份成功,但是将该脚本文件加入到自动任务中,自动备份出来的数据库文件大小为0k,暂未找到原因。