PgSQL定时备份

1,  综述:

下面主要是通过SQL转储的方式备份PostgreSQL, SQL 转储的方法是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。

2,   备份命令

(1)  PostgreSQL 自带的内置备份工具叫做 pg_dump

实例:

#su  - postgres
#cd/usr/local/postgressql/bin
#./pg_dump mydb > test_db.out

 

从转储中恢复

#./created restoredb
#./psql –d restoredb < test_db.out

 

     (2) 当遇到大数据库时候,请使用以下方式

     实例:

#su  - postgres
#cd /usr/local/postgressql/bin
#./pg_dump –Ft –b mydb > test_db.tar

 

恢复大数据库

#./created restored
#pg_restore –d restored test_db.tar

 

(3)  备份整个数据库使用pg_dumpall

实例:

#su - postgres
#cd /usr/local/postgressql/bin
#./pg_dumpall  –U postgres > alldb.out

 

恢复数据库

#./psql –Upostgresql < alldb.out

一旦恢复成功,建议使用

#vacuumdb -a –z

 

 

3,  计划备份任务

(1)    编写一个备份脚本

#vim /home/postgres/backup.sh

#shell variables
date_now=`date +%Y%m%d`
back_dir=./
back_log_dir="./backup.log"
rmback_log_dir="./rmback.log"
#postgresql bakup
/usr/local/postgressql/bin/pg_dump  -U postgres mydb >$back_dir/$date_now.out
if [ $? = 0 ];then
echo "$date_now postgresql backup success" >>$back_log_dir
echo "" >> $back_log_dir
else
echo "$date_now postgresql backup failed" >> $back_log_dir
echo "" >>$back_log_dir
fi

#rm back files
find $back_dir -mtime +8 -exec rm -fr {} \;
if [ $? = 0 ];then
echo "$date_now rm backup files successful">>$rmback_log_dir
echo "" >>$rmback_log_dir
else
echo "$date_now rm backup files failed">>$rmback_log_dir
echo "" >>$rmback_log_dir
fi

 

#chmod –R 777 backup.sh
#mkdir –p /data/backupdb
#mkdir –p /var/log/pgsqllog/rmback
#chown –R postgres /data/backupdb
#chown –R postgres/var/log/pgsqllog/rmback
#crontab -u postgres –e
0 3 * * * /home/postgresql/backup.sh

 

 

http://j3j5.com/post-129.crontab -u postgres –e

posted @ 2012-09-20 14:59  shuaixf  阅读(1282)  评论(0编辑  收藏  举报