web-dev-qa-db-ja.com

pg_basebackupが「クライアントからデータを受信できませんでした:接続がピアによってリセットされました」

新しいマスター(以前はスレーブ)から新しいスレーブボックスにデータを取得しようとしています。

私はすでに手順を試しましたが、以前はうまくいきました。次のコマンドを実行すると、

pg_basebackup -h masterhost -D /var/lib/postgresql/9.3/main -U rep -v -P -X stream

このコマンドを実行すると、何も記録されないことがあります。その他の場合:「クライアントからデータを受信できませんでした:接続がピアによってリセットされました」。このプロセスがマスターで実行されているのがわかります。

postgres: wal sender process rep slavehost(60899) sending backup "pg_basebackup base backup"  
  • 1つのボックスから別のボックスに100MB/sでscpできます
  • 両方のボックスにスネークオイル証明書を設定しました
  • 無効なパスワードを拒否します
  • スレーブでプロセスを終了すると、「pg_basebackup:ベースバックアップを開始できませんでした:FATAL:管理者コマンドにより接続を終了しています」というメッセージが表示されます
  • このコマンドを実行しても、どちらのボックスにも追加の負荷はありません
  • スレーブの/var/lib/postgresql/9.3/mainディレクトリはpostgresが所有し、空です
  • DBは〜60GB
  • 最終的にマスターの「ウォル送信プロセス」は終了しますが、何も起こらないようです
  • 非レプリケーションユーザーを使用してスレーブからマスターボックスにpsqlを実行できます
  • どちらのボックスも、PG 9.3.6を実行するUbuntu 14.04です。

スレーブ構成:

listen_addresses = '*'
hot_standby = on

default_statistics_target = 50
maintenance_work_mem = 1GB
constraint_exclusion = on
checkpoint_completion_target = 0.9
effective_cache_size = 22GB
work_mem = 192MB
checkpoint_segments = 16
shared_buffers = 7680MB
max_connections = 160
log_min_duration_statement = 80
log_temp_files = 0

マスターも同じですが:

wal_buffers = 8MB
checkpoint_segments = 16
wal_keep_segments = 128
wal_level = 'hot_standby'
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 2
vacuum_defer_cleanup_age = 100000
ssl_renegotiation_limit = 0
2
Ponny

SSL Renegotiation FailureまたはSSL Errorの行に沿ってログにエラーがある場合、ストリーミングベースバックアップ中にOpenSSLおよびSSL再ネゴシエーションのバージョンで問題が発生した可能性があります。

ssl_renegotiation_limit = 0を設定すると、問題の解決に役立ちます。

現在、PostgreSQLリストでデフォルトでssl再ネゴシエーションを無効にすることについて多くの議論があります。ここに例: http://www.postgresql.org/message-id/[email protected]

お役に立てば幸いです。 =)

1
Kassandry

それは再び働き始めました。次のいずれかが目詰まりしていない可能性があります。

  • マスターでバックアップを実行しました
  • ssl_renegotiation_limit設定を削除
  • 約5分待った
  • ssl_renegotiation_limitをスレーブ設定に追加
0
Ponny