700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > PostgreSQL定时自动备份

PostgreSQL定时自动备份

时间:2023-06-03 09:38:41

相关推荐

PostgreSQL定时自动备份

PostgreSQL定时自动备份

简介

PostgreSQL数据库中未提供数据库的定时备份功能,所以需要结合备份和定时job功能来共同实现。

这里我选取了2种定时job方式,crontab是Linux中的定时job功能,故只能支持Linux系列操作系统;其中pgAgent是基于数据库的定时备份,可适用于各种操作系统。

实验环境

PostgreSQL:

操作系统:CentOS Linux release 7.3.1611 (Core)数据库系统: PostgreSQL 9.5.9IP: 192.168.230.134port: 5432

冷备份脚本

业务需求:

每日按日期执行自动备份,生产dmp的压缩文件。备份文件保存7天

[postgres@localhost ~]$vim backup.sh #!/bin/bashcur_time=$(date '+%Y-%m-%d')sevendays_time=$(date -d -7days '+%Y-%m-%d') export PGPASSWORD=oracle echo "Starting Backup PostgreSQL ..." rm -rf pgsql-backup.$sevendays_time.tar.gz pg_dumpall -U postgres -p 5432>"pgsql-backup.$cur_time.dmp" tar zcvf "/var/lib/pgsql/pgsql-backup.$cur_time.tar.gz" *.dmp echo "Remove temp file ..." rm -rf pgsql-backup.*.dmp echo "Finish Backup ..." [postgres@localhost ~]$chmod 755 ./backup.sh

此脚本备份并压缩整个数据库,删除7天前的备份

[postgres@localhost ~]$ls9.5 backup.sh pgsql-backup.-09-04.tar.gz[postgres@localhost ~]$./backup.sh Starting Backup PostgreSQL ..../backup.sh: line 7: 5432: Bad file descriptorpgsql-backup.-09-11.dmpRemove temp file ...Finish Backup ...[postgres@localhost ~]$ls9.5 backup.sh pgsql-backup.-09-11.tar.gz

热备份脚本

业务需求:每天对整个数据库数据进行热备份,不能影响实际业务

#!/bin/bash DATE=$(date '+%Y%m%d');PG_ARCHIVE=/var/lib/pgsql/9.5/data/pg_archPG_DATA=/var/lib/pgsql/9.5/dataPG_HOME=/var/lib/pgsql#START BACKUP echo "START BACKUP..............." psql postgres -c "select pg_start_backup('hot_back')" cd $PG_HOME tar zcvf ${PG_HOME}/pg_hotbackup_$DATE.tar.gz $PG_DATA psql postgres -c "select pg_stop_backup()" psql postgres -c "select pg_switch_xlog()" psql postgres -c "select pg_current_xlog_location()" echo "BACKUP END"

crontab设定定时备份

创建执行计划

业务需求为每天临晨2点自动执行备份脚本

[root@localhost ~]# crontab -e0 2 * * * /var/lib/pgsql/backup.sh no crontab for root - using an empty one crontab: installing new crontab

详情可参见

/sunbocong/article/details/77883797

pgAgent设定定时备份

使用pgadmin III 工具连接目标库

新建作业daily_backup

创建计划daily_backup,设定开始时间

选定时间为每天凌晨2点00分

新建步骤daily_backup,选择批处理

设定其执行之前我们编写的backup.sh脚本

这样我们就设定好了每天凌晨2点00分执行backup.sh脚本的执行计划

详情可参见

/sunbocong/article/details/77870205

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。