思路:先创建一个shell脚本,用于备份pgsql数据库,再使用Cron任务,根据自己需求设置定时任务。
环境:centos7+postgres12.0
touch db_backup.sh
chmod -R 777 db_backup.sh
#!/bin/bash #备份路径 path=/home/postgres/db_back; #创建备份路径文件 if [ ! -d "$path" ];then mkdir -p $path; fi #获取备份日期时间 cur_time=$(date '+%Y-%m-%d-%H-%M-%S') #db数据库名称 dbname=oyzData_CivilAirDefence_NeiMengGu_Xilinguolemeng_postgresql #执行备份命令 /usr/local/pgsql/bin/pg_dump -h 127.0.0.1 -U postgres -p 5432 -E UTF8 -f ${path}/backup_$cur_time.sql ${dbname} --inserts
crontab -e
00 5 * * 6 /usr/local/sbin/db_backup.sh
systemctl restart crond
1、用crontab自动备份postgresql的时候导出总是为空,原因是corn的环境变量中没有pg_dump,所以用crontab执行pg_dump的时候要加上绝对路径,如:/usr/local/pgsql/bin/pg_dump xxxxxxx这样就可以了。
2、如果系统中配置了mysql的环境变量,可以在脚本的开头添加一行:
#!/bin/bash source /etc/profile