脚本编写
-
先创建脚本文件和备份文件存放的文件夹,并给上权限
#创建备份、删除脚本文件 mkdir /home/backup cd /home/backup touch kingbasesql-backup.sh kingbasesql-delete.sh #创建备份脚本存放文件夹 mkdir /home/db-bak/web-dmp/ #授权 chmod +x kingbasesql-backup.sh kingbasesql-delete.sh /home/db-bak/web-dmp/
-
编写脚本内容
备份脚本#!/bin/bash #数据库用户的密码 输入到环境变量中 export PGPASSWORD="数据库密码" #日期变量,用户给备份的数据库文件上打上日期戳 DATE=$(date +%Y%m%d) #定义变量:备份文件存放目录 BACKUP_FILE="/home/db-bak/web-dmp/kingbasesql_${DATE}.dmp" #备份 人大金仓的默认安装路径为 /opt/Kingbase/ES/V8 "人大金仓的sys_dump路径" -h 数据库IP地址 -p 数据库端口号 -U 数据库用户名 -d 数据库名 -n 指定模式(不加就是备份这个数据库下所有的模式数据) -Fc -v -f "${BACKUP_FILE}" echo "数据库 数据库名 备份结束!" exit;
备份脚本例子
#!/bin/bash #数据库用户的密码 输入到环境变量中 export PGPASSWORD="test" #日期变量,用户给备份的数据库文件上打上日期戳 DATE=$(date +%Y%m%d) #定义变量:备份文件名称 BACKUP_FILE="/home/db-bak/web-dmp/kingbasesql_${DATE}.dmp" #备份 "/opt/Kingbase/ES/V8/KESRealPro/V008R006C005B0054/ClientTools/bin/sys_dump" -h 127.0.0.1 -p 54321 -U test -d test -n public -Fc -v -f "${BACKUP_FILE}" echo "数据库 test 备份结束!" exit;
还原脚本
还原的时候需要将之前的表取个别名或者删除。"人大金仓的sys_restore路径" -h 数据库IP地址 -p 数据库端口号 -U 数据库用户名 -d 数据库名 备份脚本文件
还原脚本例子
/opt/Kingbase/ES/V8/KESRealPro/V008R006C005B0054/ClientTools/bin/sys_restore -h localhost -p 54321 -U test -d test /home/db-bak/web-dmp/kingbasesql_20240402.dmp
删除脚本
#!/bin/bash echo "删除 8 天前的 数据库备份文件!" find /home/db-bak/web-dmp/ -name "kingbasesql_*" -mmin +10 -exec rm -rf {} \; set timeout 1000 echo " 8 天前的数据库备份文件删除完毕!" exit;
测试
cd /home/backup #通过"." 或者"sh" 运行shell脚本 ./kingbasesql-backup.sh sh kingbasesql-delete.sh
添加定时任务
#编写定时任务 cron表达式 脚本的绝对路径
crontab -e
#每天23点进行数据库备份脚本 每天23点半运行删除脚本
30 23 * * * /bin/bash /home/kingbasesql-delete.sh
0 23 * * * /bin/bash /home/kingbasesql-backup.sh
#查看定时任务
crontab -l
#删除定时任务
crontab -r
crond 状态 启动 关停 重启设置
systemctl status crond.service 查看状态
systemctl stop cond.service 关停
systemctl start crond.service 启动
systemctl restart crond.service 重启
参考文章:
Linux版 人大金仓数据库 定时备份