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. アーカイブフォルダーとその中にサブフォルダーWALを作成します。
  2. すべての人が共有可能でフルアクセスできるようにします。
  3. archive_command = ''copy %p \\\\192.168.1.41\\Archive\\wals\\%f''私のPCでを更新します

これで、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以降の場合)で実行されます。

これらのアカウントはどちらも、保存されているパスワードと接続にアクセスできません。また、ローカル専用アカウントであるため、ユーザーアカウントが持つ可能性のあるActiveDirectoryドメイン権限にアクセスすることもできません。

サービスアカウントからの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 に答える