定期备份kingbase数据库

原文链接:https://blog.csdn.net/weixin_47387140/article/details/128584537

1.书写备份数据脚本

/bin/bash
#date:0106
#managed_by:mzh
bakdir=/var/lib/kingbase
if [ ! -d $bakdir ] ; then
mkdir -p $bakdir
fi
processing(){
clear
for ((i=0;$i<=100;i+=5))
do
echo -e "\e[6;9H[processing...$i%]"
sleep 0.2
done
}

kingabse_bak(){
cd /opt/Kingbase/ES/V8/
./Server/bin/sys_dump -U system -p 7701 dbname -f ${bakdir}/dbname`date+"%y%m%d-%H%M"`.sql
if [ $? -eq 0 ]; then
echo "dbname 备份完成."
fi
}

clear_bak(){
ls -lt $bakdir/* |awk 'NR>=3'|xargs rm -rf --

}

#显示进度条
processing
#备份库
kingbase_bak
#保留最近2次备份
clear_bak
1.1 遇到问题

1.1.1 执行clear_bak时报错 : rm: invalid option -- w ##解决 添加 -- 结束 rm 的参数

1.1.2 在我执行kingbase_bak时,发现不能正常执行 : 1) 当 su - dbuser后,因为bakdir目录的属主,属组不是dbuser ,用户无法写入文件 ;2) 切换到dbuser身份后,并不能继续执行属主属组为root的备份脚本 ##解决: 以root身份执行备份命令

2.为脚本添加执行权限 chmod +x sqlbak.sh

3.添加脚本路径到环境变量

export PATH=${PATH}:/root/scripts/sqlbak.sh

sed -i '$a export PATH=${PATH}:/root/scripts/sqlbak.sh' /etc/profile

source /etc/profile

4.备份脚本添加到计划任务

00 17 * * 5 bash sqlbak.sh

ls -t /data/backup | awk '$0~/tar.gz/' | awk 'NR>3' | xargs rm -rf
posted @ 2024-08-22 15:11  枫树湾河桥  阅读(45)  评论(0编辑  收藏  举报
Live2D