一、备份方式

KingbaseESV8数据库备份的两种方式:

(1)使用数据库开发工具KStudio备份

QGIS在linux中连接postgres库_数据库

(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,暂未找到原因。