Liam Asked: 2009-08-19 08:24:16 +0800 CST2009-08-19 08:24:16 +0800 CST 2009-08-19 08:24:16 +0800 CST 自动 postgres 备份 772 每天在 Linux 上自动备份 Postgres 数据库的最佳方法是什么? linux 10 个回答 Voted Bill Weiss 2009-08-19T09:15:58+08:002009-08-19T09:15:58+08:00 从 cron 运行 pg_dumpall。 Best Answer Ali Mezgani 2009-08-19T10:50:45+08:002009-08-19T10:50:45+08:00 你可以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。 user1686 2009-08-19T12:44:24+08:002009-08-19T12:44:24+08:00 试试AutoPostgreSQLBackup。它是一个单一的脚本文件,可以根据您的需要轻松配置,每天、每周和每月调度,每封电子邮件的日志,日志文件或标准输出等。 Magnus Hagander 2009-08-19T09:14:24+08:002009-08-19T09:14:24+08:00 如果它是一个相当小的数据库,并且对备份的要求如此之低,只需一天一次,只需从 cron 运行 pg_dump 以转储到本地文件,然后使用您必须备份机器上的文件来归档转储. Adam Matan 2010-01-12T07:57:47+08:002010-01-12T07:57:47+08:00 pg_rman是一个新工具,提供增量备份,适用于 PostgreSQL 8.4 或更高版本。 Vitaly Kushner 2009-08-24T06:09:56+08:002009-08-24T06:09:56+08:00 试试astrails-safe。它知道如何备份 mysql (mysqldump)、postgres (pg_dump) 或加密 (gnupg) 的纯文件 (tar) 并上传到 S3/Sftp。 Javier Novoa C. 2009-08-19T13:14:19+08:002009-08-19T13:14:19+08:00 pg_dump 是一个不错的解决方案,但是如果您尝试备份大量数据,也许这可能会有所帮助: http://www.postgresql.org/docs/8.1/static/backup-online.html 这实际上是一种“原始”日志记录,但它可以用作增量备份方法...... Silverfire 2011-04-19T22:32:36+08:002011-04-19T22:32:36+08:00 这是一个脚本,它将单独备份每个数据库以及经常忘记但重要的 PostgreSQL GLOBALS 和用户登录信息。 这样做的重要性在于利用 pg_dumpall 不提供的压缩和 pg_dump 忽略的被遗忘的数据。 这将需要 pgpass 或此处描述的类似设置http://wiki.postgresql.org/wiki/Pgpass 这是为 OSX 设置的,但只需更改程序路径,它就可以正常工作。 备份到 /sqlbackups 该脚本将返回目录大小/目录,并具有如果失败将返回非零状态的断点。我将它与 pgAgent 结合使用来进行每日备份。 脚本已编辑,对此感到抱歉:( Giovanni Toraldo 2014-10-17T08:26:44+08:002014-10-17T08:26:44+08:00 当您可以轻松地通过barman进行时间点恢复时,为什么还要进行每日备份呢? Thomas 2009-08-24T13:25:05+08:002009-08-24T13:25:05+08:00 正如其他人所说:pg_dumpall。 另外,看看日志传送。然后您可以获得更多可以回放的时间点备份:http ://www.postgresql.org/docs/8.3/static/runtime-config-wal.html 或者手册中有关备份的部分如何: http://www.postgresql.org/docs/8.3/static/backup.html
从 cron 运行 pg_dumpall。
你可以
pg_dump
这样使用:请首先设置
.pgpass
文件,该文件包含在连接需要密码时使用的密码。该文件应具有以下格式的行:前四个字段中的每一个都可以是文字值或 *,它可以匹配任何内容。例如:
*:*:*:postgres:pg_password
。该
.pgpass
文件必须位于主目录 ~/ 中,并且其权限必须禁止对世界或组的任何访问;通过命令实现这一点chmod 0600 ~/.pgpass
。试试AutoPostgreSQLBackup。它是一个单一的脚本文件,可以根据您的需要轻松配置,每天、每周和每月调度,每封电子邮件的日志,日志文件或标准输出等。
如果它是一个相当小的数据库,并且对备份的要求如此之低,只需一天一次,只需从 cron 运行 pg_dump 以转储到本地文件,然后使用您必须备份机器上的文件来归档转储.
pg_rman是一个新工具,提供增量备份,适用于 PostgreSQL 8.4 或更高版本。
试试astrails-safe。它知道如何备份 mysql (mysqldump)、postgres (pg_dump) 或加密 (gnupg) 的纯文件 (tar) 并上传到 S3/Sftp。
pg_dump 是一个不错的解决方案,但是如果您尝试备份大量数据,也许这可能会有所帮助:
http://www.postgresql.org/docs/8.1/static/backup-online.html
这实际上是一种“原始”日志记录,但它可以用作增量备份方法......
这是一个脚本,它将单独备份每个数据库以及经常忘记但重要的 PostgreSQL GLOBALS 和用户登录信息。
这样做的重要性在于利用 pg_dumpall 不提供的压缩和 pg_dump 忽略的被遗忘的数据。
这将需要 pgpass 或此处描述的类似设置http://wiki.postgresql.org/wiki/Pgpass
这是为 OSX 设置的,但只需更改程序路径,它就可以正常工作。
备份到 /sqlbackups 该脚本将返回目录大小/目录,并具有如果失败将返回非零状态的断点。我将它与 pgAgent 结合使用来进行每日备份。
脚本已编辑,对此感到抱歉:(
当您可以轻松地通过barman进行时间点恢复时,为什么还要进行每日备份呢?
正如其他人所说:pg_dumpall。
另外,看看日志传送。然后您可以获得更多可以回放的时间点备份:http ://www.postgresql.org/docs/8.3/static/runtime-config-wal.html
或者手册中有关备份的部分如何:
http://www.postgresql.org/docs/8.3/static/backup.html