有谁知道备份postgres数据库的好方法吗?

我有一个脚本,将产生每日轮换备份的MySQL,但我找不到任何类似的postgres。 我也发现它具有在线备份function,因为这是一个生产站点,所以应该派上用场。

有谁知道一个程序/脚本,将帮助我,甚至是一种方式来做到这一点?

谢谢。

一种方法是使用 pg_dump来生成一个平坦的SQL转储,你可以gzip或其他任何东西。 这当然是最简单的选择,因为结果可以传回到psql来重新加载数据库,而且因为它也可以以纯文本格式导出,所以如果需要的话,可以在恢复之前查看或编辑数据。

下一个方法是暂时关闭你的数据库(或者如果你的文件系统支持原子快照,理论上可能工作)并备份你的PostgreSQL data目录。

这个来自PostgreSQL网站的页面也解释了如何进行在线备份和时间点恢复,这是最难配置的,也是最佳的方法。 这个想法是通过运行一些特殊的SQL( pg_start_backuppg_stop_backup )并且创建数据库目录的(文件系统级别)副本来执行基本备份(您可能每天,几天或每周执行一次)。 数据库在这段时间内不会脱机,一切仍然正常。 从此,数据库将生成任何更改的预写日志(WAL),然后可以将其自动(通过数据库)推送到任何您想要的位置。 要恢复,请执行基本备份,将其加载到另一个数据库实例中,然后重播所有WAL文件。 这样,您也可以通过不重放所有日志来进行时间点恢复。

这里可以使用crontab备份postgresql的脚本

http://ithelpblog.com/os/linux/debian/best-way-to-backup-postgresql-database/

问候,凯文

对于MySQL Postrgres的自动备份,请在github上查看astrails-safe (或者只是“ gem install astrails-safe --source=http://gems.github.com ”)。 它使用mysqldump来备份MySQL和pg_dump来备份Postgres。 它也知道如何使用tar备份纯文件,并使用GnuPG加密所有文件,并将其上传到S3或任何带有SFTP的Unix服务器。

通常做备份方式是使用pg_dump。

你不应该像在mysql中那样“从postgresql目录复制文件” – 因为你将无法使用它们(这些文件是依赖于架构,操作系统和编译选项的)。

除非pg_dump被证明是不够的 – 这是你应该使用的。 在你将遇到pg_dump无法使用的情况之后 – 你应该问自己:为什么不能使用它,你可以怎么做再次使用它:)

使用pg_dump时,可以选择普通的SQL文件转储(-F p)或自定义格式(-F c)。 SQL转储更容易修改/更改,但自定义格式功能更强大,并且(从8.4开始)加载速度更快,因为您可以将其加载到许多并行工作中,而不是按顺序加载。

既然你指定了databaseS, pg_dumpall将会对你有用得多。 它将所有数据库和用户转储到一个sql文件,而不是一个单一的。

您也可以使用phpPgAdmin或pgAdmin III来转储您的PostgreSQL数据库。

我刚刚偶然发现了这个小巧的工具:

http://code.google.com/p/pg-rman/

从文件看起来很有前途,但我还是要尝试一下。

这是我会做备份我的旧数据库和恢复

备份你的数据库

 pg_dump --format=c olddb_name > db_dump_file.dump 

要恢复该备份

 pg_restore -v -d newdb_name db_dump_file.dump 

阅读关于pg_dump和pg_restore的更多信息