首先如果想直接在宿主机上进行使用gs_dump备份需要glibc的版本到2.34及以上,查看版本命令为
ldd --version
如图所示,本宿主机并不满足要求,所以转向在docker容器中进行备份,
然后进入opengauss容器中,命令为
docker exec -it gausst bash (其中gausst为你新建opengauss数据库名称)
新建的容器是没有cron定时器的,安装命令
apt-get update && apt-get install cron -y
安装完成后,再新建一个目录,比如/home/back
在该目录中,新建一个叫脚本,backups.sh
然后在脚本中插入以下代码
#删除七天之前的数据
find /home/back -mtime +7 -name "*.tar.gz" -exec rm\;
#配置备份工具的环境
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opengauss/lib;
export PATH=$PATH:/usr/local/opengauss/bin;
#定义变量时间,端口,打包位置,账号密码
Ymd=$(date +%Y%m%d)
host=你的地址
DBUser=你的账号
DBPassword=你的密码
port=你的端口
filePath=/home/back/
sqlPath1=$filePath"xxx_"$Ymd.dmp
#执行备份
gs_dump -U $DBUser -W $DBPassword -h $host -f $sqlPath1 -p $port sifa -F c -n 你的模式
#对带备份文件赋予777权限
chmod 777 $sqlPathl
chmod 777 $sqlPath2
chmod 777 $sqlPath3
#打包压缩文件
tar -zcvf $filePath$Ymd.tar.gz $sqlPath1
#清理剩余的dmp文件
rm $filePath*.dmp
然后新建一个日志文件con.log
在执行
crontab -e
在第一行插入
0 3 * * * /home/back/backups.sh>>/home/back/con.log
这条命令表示每天凌晨三点执行该脚本
保存退出执行,
service cron restart