首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL自动备份

PostgreSQL自动备份
EN

Server Fault用户
提问于 2011-04-18 00:21:40
回答 3查看 7.1K关注 0票数 2

我一直试图在windows服务器上设置一个备份脚本。我使用了pgAgent (pgAdmin的调度)来运行备份脚本。备份脚本没有问题。

然而,我的工作并没有像他们应该做的那样运转。我已经制定了时间表和步骤。

我相当肯定,我是在错误的用户或没有所需权限的用户下运行服务。

我像这样运行这个服务:"C:\Program Files\pgAdmin III\pgAgent" INSTALL pgAgent -u postgres -p secret hostaddr=127.0.0.1 dbname=pgadmin user=postgres

我得到了一个错误,告诉我登录信息有一个错误,尽管我知道它是正确的。当我在服务(控制面板->管理->服务)下运行时,我可以使用本地用户启动服务。

这会是问题吗?

在哪里可以看到或更改postgres用户的权限?

EN

回答 3

Server Fault用户

发布于 2012-05-31 13:09:17

PostgreSQL为您提供了在其基本安装中备份它所需的所有工具。这就是几周前我在设置托管在Windows主机上的PostgreSQL实例的热备份时所做的工作:

  1. 创建一个专门用于备份的用户,让我们称之为“备份”。您可以从createuser安装中使用PostgreSQL命令。
  2. 给用户一个密码并读取访问所有内容的权限。这会变得有点复杂。或者,您也可以使它成为PostgreSQL超级用户,并强制执行以下所述的登录限制。
  3. 允许它只使用密码(机制'md5')从本地主机登录,或者如果您是游戏设置用户在您的machine机器和使用机制'ident‘。您需要修改pg_hba.conf文件,以强制执行这些行为和仅从本地主机登录的限制。
  4. 创建一个使用pg_dumpall备份数据库的脚本。脚本可以通过任务计划程序中的作业设置调用,也可以通过诸如Bacula之类的备份调度程序调用。如果选择使用密码进行身份验证,则可以将其指定为环境变量,pg_dumpall将使用不同的环境变量读取或指定包含密码的文件。

有关此方法的详细信息可在http://wiki.postgresql.org/wiki/Automated_备份_在……上面_视窗上找到。

我不知道为什么要使用pgAdmin来自动备份PostgreSQL。我很想听听您的理由,因为PostgreSQL有一种没有外部工具的方法,并且有一个关于这个主题的编写良好的文档。

票数 1
EN

Server Fault用户

发布于 2011-04-19 04:27:53

我用这种方式设置pgAdmin

代码语言:javascript
复制
pgagent.exe INSTALL pgAgent -u postgres -p secret host=localhost dbname=pgadmin user=postgres

然后,您需要在postgres用户目录中设置pgpass.conf文件,在winxp下这是在Application /postgres/pgpass.conf中,在win7下应该是appdata/local/postgres/pgpass.conf (不是100%确定)

它在这里定义为http://wiki.postgresql.org/wiki/Pgpass

代码语言:javascript
复制
hostname:port:database:username:password

这允许pgAgent访问postgreSQL服务器,当您记住pgAdmin的密码时,将为您的用户创建一个pgpass。

没有这个pgpass,pgAgent就无法访问数据库。

票数 0
EN

Server Fault用户

发布于 2012-12-15 04:17:42

Postgres非常灵活--有不止一种方法可以获取一个好的、可用的备份(而且许多最好的备份都不需要您使用pgAgent --您可以用常规的操作系统工具编写它们的脚本)。

使用pg_dumpall,这对你来说是可行的。

Postgres手册描述了另外两个选项,它可以通过一些脚本在Windows上实现自动化。

选项2:文件系统级备份

通常,这是通过关闭服务器和抓取PGDATA目录来完成的。

如果您不能关闭服务器然后与手册上写的相反,您可以获得一个可用的备份而不关闭服务器--只需进行“基本备份”,就像设置WAL/PITR奴隶一样。

此备份的结果应该是PGDATA目录的副本,加上一些WAL段,它们存储在服务器上的一个单独位置,您的正常文件系统级备份进程可以从中提取。

您必须确保基本备份在使用常规文件系统备份过程抓取文件之前完成,否则可能会得到无法使用的备份。

选项3:备份从

使用此方法,您将需要创建一个从服务器,无论是日志传送还是热备用,如Postgres文档所述

当需要备份集群时,关闭从服务器并备份其PGDATA目录,就像常规文件系统备份一样,然后重新启动从服务器,让它再次赶上主服务器。

到目前为止,这是我最喜欢的备份Postgres集群的选项--如果您将特定的从服务器指定为“备份从服务器”,则可以使用数据库执行群集的备份,对生产应用程序的影响为零。

主要的缺点是它需要一个从服务器,并且您必须确保在抓取PGDATA目录之前在从服务器上停止Postgres,并且在抓取文件之前不会再次启动。

您还需要确保备份在合理的时间框架内完成,以便您需要追赶到主服务器的WAL段仍然可用。在实践中,这只会对具有极高写入负载的集群造成问题,或者如果您在备份从服务器时在主服务器上执行类似VACUUM FULL的操作。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/260767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档