私は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'
両方のサーバーにwal_log_hints = onセットがあります。
しかし、おそらく設定が遅すぎました。つまり、巻き戻しに関係するWALファイルの少なくとも一部が生成された後です(pg_wal
ディレクトリ)。