web-dev-qa-db-ja.com

PostgreSQL:pg_rewindがwal_log_hintsについて文句を言う=設定されていない場合、

私はpgの初心者なので、我慢してください。

2つのホストをセットアップし、両方にpg10をインストールしました。次に、それらの間のログストリーミングレプリケーションを構成しました。これはうまくいきました。

フェイルオーバーをテストしたかったので、プライマリでpostgresqlサービスを停止し、スタンバイでトリガーファイルを作成しました。これも機能しました。チェックしたところ、スタンバイがリカバリモードではなくなりました。

次に、古いプライマリを新しいスタンバイとしてリカバリしたいと思います。 pg_rewindを使用してみましたが、次のエラーメッセージが表示されます

/usr/lib/postgresql/10/bin/pg_rewind --target-pgdata=/var/lib/postgresql/10/main --source-server="Host=server2ip port=5432 user=postgres"

target server needs to use either data checksums or "wal_log_hints = on"
Failure, exiting

私が持っています wal_log_hints = on両方のサーバーで設定。

誰かがこれを機能させる方法を理解するのを手伝ってくれる?.

以下は、両方のサーバーで同じ設定です。プライマリに障害が発生する前のレプリケーションはうまくいきました。

以下は私がpostgresql .confで変更した行です

listen_addresses = '*'
max_connections = 200
tcp_keepalives_idle = 60
tcp_keepalives_interval = 10
tcp_keepalives_count = 5
wal_level = replica
wal_log_hints = on
archive_mode = on
archive_command = '/bin/true'
max_wal_senders = 5
wal_keep_segments = 5000
max_replication_slots = 5
effective_cache_size = 2GB

また、以下の行をpg_hba.confファイルに追加しました

Host    all             postgres        server1ip/24        trust
Host    all             postgres        server2ip/24        trust

最後に、以下のようにrecovery.confファイルを作成します。

standby_mode          = 'on'
primary_conninfo      = 'Host=sciontsdbbc01 port=5432 user=replicate password=rep-password'
trigger_file = '/tmp/PG_MasterNow'
1
Bart C

両方のサーバーにwal_log_hints = onセットがあります。

しかし、おそらく設定が遅すぎました。つまり、巻き戻しに関係するWALファイルの少なくとも一部が生成された後です(pg_walディレクトリ)。

1
Daniel Vérité