我有一个脚本会为mysql生成每日旋转备份,但我找不到类似postgres的任何内容。我还发现它具有在线备份功能,因为这是一个生产站点,所以它应该派上用场。
有没有人知道有助于我的程序/脚本,甚至是一种方法吗?
感谢。
答案 0 :(得分:18)
一种方法是use pg_dump
生成一个平面sql转储,你可以gzip或其他什么。这当然是最简单的选择,因为可以将结果传回psql
以重新加载数据库,并且由于它也可以作为纯文本导出,因此您可以在恢复之前查看或编辑数据。必要的。
下一个方法是暂时关闭数据库(或者如果你的文件系统支持理论上可能有效的原子快照)和backup你的PostgreSQL data
目录。
This页面还解释了如何进行在线备份和时间点恢复,这绝对是最难配置的,但也是最佳方法。这个想法是你通过运行一些特殊的SQL(pg_start_backup
和pg_stop_backup
)来执行一个基本备份(你可能每天,几天或一周),并制作一个(文件系统级)副本你的数据库目录。在此期间数据库不会脱机,一切仍然正常。从那时起,数据库会生成任何更改的预写日志(WAL),然后可以将其(由数据库自动)推送到您想要的任何位置。要恢复,您需要进行基本备份,将其加载到另一个数据库实例中,然后重放所有WAL文件。这样,您也可以通过不重播所有日志来进行时间点恢复。
答案 1 :(得分:4)
这里可以使用crontab备份postgresql的脚本
http://ithelpblog.com/os/linux/debian/best-way-to-backup-postgresql-database/
此致 凯文
答案 2 :(得分:3)
对于MySQL 和 Postrgres的自动备份,请查看astrails-safe on github(或仅“gem install astrails-safe --source=http://gems.github.com
”)。
它使用mysqldump备份MySQL,使用pg_dump备份Postgres。它还知道如何使用tar备份普通文件并使用GnuPG加密所有内容并上传到S3或任何带有SFTP的Unix服务器。
答案 3 :(得分:2)
通常 备份的方法是使用pg_dump。
你不应该“从postgresql目录中复制文件,就像在mysql中一样” - 因为你很可能无法使用它们(这些文件依赖于体系结构,操作系统和编译选项)。
除非pg_dump 证明不足 - 这是您应该使用的。在您遇到无法使用pg_dump的情况之后 - 您应该问自己:为什么不能使用它,以及如何再次使用它?)
使用pg_dump时,您可以选择纯SQL文件转储(-F p)或自定义格式(-F c)。 SQL转储更容易修改/更改,但自定义格式更强大,并且(自8.4起)加载速度更快,因为您可以将它加载到许多并行工作程序中而不是按顺序加载。
答案 4 :(得分:2)
由于您指定了databaseS,因此pg_dumpall
对您更有用。它将所有数据库和用户转储到sql文件而不是单个文件。
答案 5 :(得分:1)
您也可以使用phpPgAdmin或pgAdmin III转储PostgreSQL数据库。
答案 6 :(得分:1)
答案 7 :(得分:0)
这是我要备份旧数据库并恢复
的方法备份数据库
pg_dump --format=c olddb_name > db_dump_file.dump
恢复该备份
pg_restore -v -d newdb_name db_dump_file.dump
详情阅读pg_dump和pg_restore