0

我已经完成了这些步骤:

  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 是我的 PC IP 地址,Archive 是 D 盘中的共享文件夹。

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

这就是我想做的。

但现在我想将归档文件存储在另一台 IP 地址为“192.168.1.41”的 PC 中,为此我执行了以下步骤:

  1. 我在其中创建了一个文件夹 Archive 和一个子文件夹 WALs。
  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.
4

2 回答 2

1

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

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

要通过服务帐户的 UNC 路径使用 Windows 网络 (SMB/CIFS),需要进行额外配置,尤其是在连接到本地 PC 以外的地址时。您可能需要一个设置脚本,该脚本net use使用指定的密码执行操作。

您可以在远程计算机上的共享上添加权限,以便该postgres帐户可以通过在远程计算机上创建一个postgres帐户(如果不存在)并确保它具有相同的密码来连接。这不适用于NETWORKSERVICE9.2,也不适用于 AD 域。

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

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

于 2013-03-23T11:39:42.607 回答
0

在 PC(主从)上设置防火墙并检查您访问 postgres 数据库的帐户的权限

于 2013-03-23T11:31:24.037 回答