自动Postgres备份


Answers:


11

您可以这样使用pg_dump

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

请首先考虑设置.pgpass文件,该文件包含如果连接需要密码时要使用的密码。该文件应具有以下格式的行:

hostname:port:database:username:password

并且前四个字段中的每个字段都可以是与任何内容匹配的文字值或*。例如:*:*:*:postgres:pg_password

.pgpass文件必须位于主目录〜/中,并且对其的权限必须禁止对世界或组的任何访问;通过命令实现 chmod 0600 ~/.pgpass


它每天自动备份吗?
Anuj Patel

@indyaah:不,您必须每天从cron(或类似版本)运行此程序。
Bill Weiss

12

从cron运行pg_dumpall。


7
pg_dumpall比其他答案要好,因为这会备份全局数据库对象。(例如:用户等。)您将需要这些文件来完全恢复数据库,并且如果您拥有大量的数据库,那么重新创建它们可能并不容易。但是,如果您只想备份多个数据库集群中的单个数据库实例,则pg_dumpall可能对您来说太过强大了,因为pg_dumpall将备份每个实例。因此...与大多数技术问答一样,这取决于。
KevinRae

1
我倾向于将“数据库”和“数据库服务器”混合在一起,这是一个很好的例子。我以为发帖人想备份整件事好点。
比尔·魏斯

6

尝试使用AutoPostgreSQLBackup。它是一个脚本文件,可以轻松配置以满足您的需要,每天,每周和每月进行调度,每封电子邮件的日志,日志文件或标准输出等。


我也使用AutoPostgreSQLBackup,它对我来说很好;-)
Matthieu

4

如果它是一个相当小的数据库,并且每天备份一次,对备份的要求很低,则只需从cron运行pg_dump以转储到本地文件,然后使用所需的一切来备份计算机上的文件以将转储存档。





1

这是一个脚本,它将分别备份每个数据库以及经常忘记但重要的PostgreSQL GLOBALS和用户登录信息。

这样做的重要性是利用pg_dumpall不提供的压缩和pg_dump忽略的放弃的数据。

这将需要pgpass或类似的设置,如此处http://wiki.postgresql.org/wiki/Pgpass所述

这是为OSX设置的,但只需更改程序路径即可正常工作。

备份到/ sqlbackups脚本将返回目录大小/目录,并具有断点,如果断点失败,该断点将返回非零状态。我将它与pgAgent结合使用来进行每日备份。

脚本已编辑,很抱歉:(


1

当您可以轻松地使用Barman 进行时间点恢复时,为什么还要选择每日备份呢?


我会让主持人决定,但我相信在这里重新提出5年的问题以插入商业产品是不好的形式。
gparent


您是对的,我用Google搜索了错误的内容。无论如何,我主要关心的不是提出一个不是五年后用户真正要求的答案。但是,在阅读了其他答案之后,他们似乎还建议类似的备份解决方案,因此我认为还不错。我的国旗可能会被拒绝,我们将其命名为:D
gparent

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.