背景
在实际项目中,通常需要对PostgreSQL数据库进行自动备份,防止数据丢失情况。
我这里设置每天进行备份凌晨进行数据库全量备份,备份文件保留周期60天
一、数据库备份脚本文件
创建backup.sh文件
/usr/pgsql-9.6/bin/pg_dump -F c -O -U postgres -h 127.0.0.1 -p 5432 -f
/usr/pgsql-9.6/bin :PostgreSQL数据库安装目录,我的是此处
postgres :postgres 用户
5432:端口号
/home/dbbackup/bemp_backup_$cur_time.dmp dbase
/home/dbbackup:备份文件夹路径
dbase:需要备份的数据库名称
#!/bin/bash
cur_time=$(date +%Y%m%d_%H_%M_%S)
/usr/pgsql-9.6/bin/pg_dump -F c -O -U postgres -h 127.0.0.1 -p 5432 -f /home/dbbackup/dbase_backup_$cur_time.dmp dbase
tar zcPf "/home/dbbackup/dbase-backup.$cur_time.tar.gz" /home/dbbackup/*.dmp
rm -rf /home/dbbackup/dbase_backup*.dmp
find /home/dbbackup/ -mtime +60 -name "dbase-backup*" -exec rm -rf {} \;
rm -rf /document/dbbackup/
cp -rf /home/dbbackup/ /document/
echo "backup finished"
二、执行脚本文件
执行备份脚本命令
sh /usr/pgsql-9.6/backup.sh
如果备份成功,会在/home/dbbackup目录下找到数据库备份文件压缩包,
如果提示:psql: FATAL: Ident authentication failed for user “postgres”
解决方案:
找到数据库pg_hba.conf文件,改位 127.0.0.1/32 trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
重启数据库服务
systemctl restart postgresql-9.6 #重启服务
三、配置crontab定时任务
启动cron服务
# 查看服务状态
systemctl status crond
# 启动
systemctl start crond
# 停止
systemctl stop crond
# 重启
systemctl restart crond
# 重新加载
systemctl reload crond
开机自动启动cron服务
systemctl start crond.service
进入编辑模式,按照格式添加,保存退出
crontab -e
添加内容
格式:# [分] [时] [日] [月] [周] [需要执行的命令]
#每天23:59分执行
59 23 * * * /usr/pgsql-9.6/backup.sh
#报错退出即可
:wq
查看定时任务列表
crontab -l
查看定时任务执行日志
cat /var/log/cron
如果你觉得本篇文章对你有所帮助的话,麻烦请点击头像右边的关注按钮,谢谢!
技术在交流中进步,知识在分享中传播