我有一个脚本,将产生每日轮换备份的MySQL,但我找不到任何类似的postgres。 我也发现它具有在线备份function,因为这是一个生产站点,所以应该派上用场。
有谁知道一个程序/脚本,将帮助我,甚至是一种方式来做到这一点?
谢谢。
一种方法是使用 pg_dump
来生成一个平坦的SQL转储,你可以gzip或其他任何东西。 这当然是最简单的选择,因为结果可以传回到psql
来重新加载数据库,而且因为它也可以以纯文本格式导出,所以如果需要的话,可以在恢复之前查看或编辑数据。
下一个方法是暂时关闭你的数据库(或者如果你的文件系统支持原子快照,理论上可能工作)并备份你的PostgreSQL data
目录。
这个来自PostgreSQL网站的页面也解释了如何进行在线备份和时间点恢复,这是最难配置的,也是最佳的方法。 这个想法是通过运行一些特殊的SQL( pg_start_backup
和pg_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数据库。
这是我会做备份我的旧数据库和恢复
备份你的数据库
pg_dump --format=c olddb_name > db_dump_file.dump
要恢复该备份
pg_restore -v -d newdb_name db_dump_file.dump
阅读关于pg_dump和pg_restore的更多信息