postgres数据库备份脚本
时间:2019-08-20 17:58:28 来源:igfitidea点击:
Postgresql是一个开源的对象关系数据库系统,它同样被广泛应用于mysql数据库系统。
如果你熟悉mysql,你一定要知道,你可以用一行代码传递mysql用户的密码,
例如'mysql-u root-p password`。但在postgresql中并不是这样。
解决方案:为了克服postgres用户密码的传递问题,我们可以在脚本中临时设置环境变量 PGPASSWORD,备份后再取消设置环境变量。
脚本测试环境postgresql 9.1版
如何实现postgres数据库备份脚本
使用postgres用户登录
root@theitroad:~# root@theitroad:~# su -l postgres postgres@theitroad:~$
检查用户的主目录路径
postgres@theitroad:~$ echo $HOME /var/lib/postgresql postgres@theitroad:~$
创建一个名为 dbbackup的目录,将数据库备份保存到本地系统。
postgres@theitroad:~$ whoami postgres postgres@theitroad:~$ mkdir ~/dbbackup postgres@theitroad:~$ postgres@theitroad:~$ ls -ld dbbackup/ drwxrwxr-x 2 postgres postgres 4096 Oct 20 09:25 dbbackup/ postgres@theitroad:~$ postgres@theitroad:~$ pwd /var/lib/postgresql postgres@theitroad:~$
创建备份脚本dbbackupscript.sh
vi ~/dbbackupscript.sh
#!/bin/bash # Author: Hyman # Date: 10-01-2014 # Desc: Single Database postgres backup script # We are using username postgres here which is similar to mysql root user # # DATABASE=test FILE=$DATABASE-`date +%F-%H%M%S`.sql export PGPASSWORD=postgress_password ## backup command pg_dump -U postgres $DATABASE > ~/dbbackup/$FILE ## compressing the backup file gzip ~/dbbackup/$FILE ## Removing export unset PGPASSWORD FILESIZE=$( du -sh ~/dbbackup/$FILE.gz ) ## Using condition if [ ! -f ~/db-backup/$FILE.gz ]; then echo "$FILE.gz File not found!" | mail -s "postgres database name $DATABASE backup is failed" [email protected] else echo "$FILE.gz File found, Actual size after compression is $FILESIZE " | mail -s "postgres database name $DATABASE backup is completed" [email protected] fi
记得修改PGPASSWORD和DATABASE的值。
修改脚本的权限
chmod 750 dbbackupscript.sh
运行脚本:
$ sh ~/dbbackupscript.sh $ ls -l ~/dbbackup
设置定时任务
crontab -u postgres -e 01 00 * * * sh ~/dbbackupscript.sh