2013-03-23 59 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