假设条件:
Linux用户名:whf
postgresql超级用户:postgres
postgresql版本:9.1
要备份的数据库名:icomplain_desktop
思路:
首先为 whf 添加数据库读写权限,然后将 pg_dump 命令写成shell脚本,最后使用crontab创建定时作业。
步骤:
切换到 postgres 用户:
sudo su postgres
连接数据库:
psql
新建 whf 用户:
CREATE USER whf WITH PASSWORD ‘whf‘;
将 whf 提升为 superuser:
ALTER USER whf WITH SUPERUSER;
注意,这里不要用
GRANT ALL PRIVILEGES ON DATABASE icomplain_desktop to whf;
因为 "ALL" 不包括 SELECT 权限,后果是 whf 用户依然没有权限读数据库,pg_dump后只是空记录。
编写备份脚本 backup-db.sh:
#!/bin/bash cur_time=`date +%Y-%m-%d_%T` pg_dump icomplain_desktop > "/home/whf/db-backup/icomplain_desktop-$cur_time.dmp" echo "backup finished"
新建定时作业:
crontab -e
在最后添加:
# backup database at 22:00 every day 0 22 * * * /home/whf/bin/backup-db.sh
这样每天22:00时就会自动执行 pg_dump 以备份icomplain_desktop数据库。