2013-03-23 43 views
0

我已经做了这些步骤:错误archive_command窗口7

  1. 开业postgresql.conf
  2. 设置这些参数:

    wal_level = archive 
    archive_mode =on 
    archive_command = ''copy %p \\\\192.168.1.10\\Archive\\wals\\%f'' 
    

其中192.168.1.10是我的电脑的IP地址而存档是D盘中的共享文件夹。

当我重新启动postgres服务时,我在归档文件夹中找到了归档文件。

这就是我想要做的。

但现在我要到存档文件存储在另一台电脑具有的IP地址“192.168.1.41”我做这些步骤:

  1. 我创建一个文件夹归档并在其中一个子文件华尔兹。
  2. 使其可以共享和完全访问每个人。
  3. 更新在我的电脑中archive_command = ''copy %p \\\\192.168.1.41\\Archive\\wals\\%f''

现在,当我重新启动Postgres服务没有归档文件在远程PC“192.168.1.41”被接收。

当我打开pg_log文件夹以查看我找到了错误的财产以后,如日志文件:

The failed archive command was: 
    copy pg_xlog\000000010000000000000009 \\192.168.1.41\PGArchivewals\000000010000000000000009 
    The referenced account is currently locked out and may not be logged on to. 
+0

请始终*指定您正在使用的PostgreSQL版本。 – 2013-03-23 11:37:32

+0

@CraigRinger我使用的是PostgreSQL的9.0版本。 – Suri 2013-03-23 13:04:02

回答

0

设置防火墙同时在PC(主机和从机)上,并通过检查权限的帐户你正在访问postgres数据库

+0

我已检查两种情况防火墙的开启和关闭,但它不起作用 – Suri 2013-03-23 11:32:25

1

你的问题是,PostgreSQL服务器不能在你自己的用户帐户下运行。它运行在postgres用户(适用于PostgreSQL 9.1及更早版本)或NETWORKSERVICE用户(适用于PostgreSQL 9.2及更新版本)下。

这些帐户都不能访问您保存的密码和连接。他们也没有权限访问您的用户帐户可能拥有的任何Active Directory域权限,因为它们仅限本地帐户。

要使用来自服务帐户的UNC路径的Windows网络(SMB/CIFS)需要额外的配置,特别是在连接到本地PC以外的地址时。您可能需要安装一个安装脚本,该脚本会使用指定的密码执行net use

这是可能的,你可以在远程计算机上的共享添加权限,以便postgres帐户可以在远程计算机上创建一个postgres帐户(如果不存在),并确保它具有相同的密码连接。这不适用于9.2中的NETWORKSERVICE,也不适用于AD域。

“正确”的解决方案是更改PostgreSQL,使其运行在具有网络访问权限的特权帐户下。这并不是太困难,但需要您编辑或创建Windows服务并在PostgreSQL数据目录上正确更改权限。如果你弄错了,你的PostgreSQL安装将停止工作,并且可能很难修复。出于这个原因,我不推荐它,除非你知道Windows服务和配置相当好 - 在这种情况下,你已经知道你为什么尝试不起作用。

更简单的解决方法是使用类似FTP的东西在机器之间传输文件。

+0

我的postgres *版本是9.0 *在Windows下 – Suri 2013-03-23 12:22:32

+1

创建或编辑Windows服务的Postgres并不是非常困难。实际上通过'pg_ctl'。 – 2015-01-29 21:22:32

+0

@a_horse_with_no_name对于权限,是和'icacls.exe'(更新的Windows,不记得确切的时间)或'cacls.exe'(较旧的Windows)。或者只是安全选项卡。根据我的经验,尽管大多数Windows用户甚至许多“服务器管理员”都不知道ACL和权限如何工作,这就是为什么我不愿意告诉他们只需创建一个域帐户,更改数据目录的权限,用'pg_ctl'在它下面注册Pg。 – 2015-01-31 22:54:55