Postgresql每日备份

有没有简单的方法来备份所有本地数据库每天(相同的postgresql服务器)? 我发现了一些我可以使用的bash脚本,但是对于这样的工作来说他们看起来非常复杂。

任何简单的build议?

由于我的数据库相当小,我“作弊”,并使用logrotate做我的postgresql备份。 在/etc/logrotate.d/postgresql-backup中是这样的:

/var/backups/postgresql-dump.sql { daily nomissingok rotate 30 compress delaycompress ifempty create 640 root adm dateext postrotate /usr/bin/sudo -u postgres /usr/bin/pg_dumpall --clean > /var/backups/postgresql-dump.sql endscript } 

这给了我一个方便可用的完整转储,不超过一天,并自动压缩和旋转之前的转储。

显然这不会扩大数据库,但为了我的目的,这只是完美的。 (我也使用BackupPC来处理包括本地postgresql备份的异地备份)

如果你有/etc/cron.daily,那就放一个调用pg_dumpall的单行代码。

注意:这是最简单的方法,但创build一个未压缩的SQL脚本,从psql执行。

对于压缩,gzip(更快),bzip2或lzma(更慢,更小的输出)

简单的情况下,每周每天保持一份不同的副本就足够了。 存储每周,每月或增量备份取决于您。

我假设你使用pg_dump / pg_restore以二进制格式备份了复杂的脚本,这更灵活。

我设置了我的每日备份,如下所示:

 mkdir /home/dbdump vim /etc/cron.daily/dbdump #!/bin/sh pg_dumpall --globals-only --username=postgres > /home/dbdump/globals.dump pg_dump --format=custom --username=postgres > /home/dbdump/postgres.dump chmod 700 /etc/cron.daily/dbdump 

然后,我使用来自其他站点的rsnapshot来保留这些转储的副本

我select不使用pg_dumpall的原因是pg_dump具有更灵活的选项 。 如果您有多个数据库,则需要使用多个pg_dump命令

我使用autopgsqlbackup ( automysqlbackup的 PostgreSQL端口),也可以作为Debian软件包安装。