Postgres是非常不错的一款开源的数据库.具有很好的性能.

说到数据库,就有的备份和导入的话题.

备份也分为很多种方式.

1、完全备份

  这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。
2、事务日志备份
  事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。
3、差分备份
  也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。
4、文件备份

针对第一种完全备份来说,我们又可以采取两种方式.自动备份和手动备份 .

手动备份就不说了.简单说一下自动备份.

在linux下,可以编写shell执行文件,然后把这个任务登陆到CRON里面就可以定期执行自动备份任务了.

由于postgres用户来执行备份命令的时候要求输入密码.为了实现自动备份,我们得准备一个认证文件.

认证文件.pgpass在 /home/postgres目录下面.

.pgpass内容:

    hostname:port:database:username:password

    例:localhost:5432:*:postgres:postgres

        *是所有数据库的意思,如果我们只是备份一个数据库的时候,可以用数据库名替换.

   需要注意的一点是要执行 chmod 600 .pgpass  . 保证只有postgres才能利用这个文件.

然后,就是在自己的备份文件中执行备份命令.

   全部备份的时候:$ pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump

   特定数据库备份的时候: pg_dump dbname -h localhost -U postgres -c > dbnamebak.dump

shell文件做好后,登陆到cron里面.

   在/etc/crontab里面编辑追加.

   45 4 * * * postgres /home/postgres/pg_dumpall.sh