2つのサーバーとPostgres 9.6でマスター/スレーブ構成を作成しようとしました
/etc/postgresql/9.6/mainのマスターとスレーブのpostgresql.confを変更しました
マスターとスレーブで同じ:
data_directory = '/srv/postgresql' # Because we wanted to store data elsewhere
wal_level = replica
synchronous_commit = local
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 2
wal_keep_segments = 10
synchronous_standby_names = 'pgslave001'
master-specific:
listen_addresses = ' <slave_ip>, localhost'
slave-specific:
listen_addresses = ' <master_ip>, localhost'
次に、masterのpg_hba.confに1行追加しました。
Host replication rep <slave_ip>/32 md5
slaveでも同じです:
Host replication rep <master_ip>/32 md5
そして、私は各postgresqlサービスを再起動しました
masterに役割担当者を作成しました。
slaveの既存の/var/lib/postgresql/9.6/mainリポジトリを削除してから、これらのコマンドを実行しました:
service postgresql stop
pg_basebackup -D /var/lib/postgresql/9.6/main -h <master_ip> -U rep
そして、この答えを得ました:
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
次に、/ var/lib/postgresql/9.6/main onslaveにrecovery.confファイルを作成しました
standby_mode = 'on'
primary_conninfo = 'Host=<master_ip> port=5432 user=rep
password=<rep_password> application_name=pgslave001'
restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'
次に、slavepostgresqlを再起動して、それらのログを取得しました。
LOG: MultiXact member wraparound protections are now enabled
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
[unknown]@[unknown] LOG: incomplete startup packet
最後のものは少し奇妙ですが、「正常」のようです
しかし、レプリケーションが機能していないようです。マスターでテーブルを作成した場合、レプリケーションされません。
そしてコマンド:psql -x -c "select * from pg_stat_replication;"
与える(0行)
私は多くのチュートリアルをたどりましたが、毎回同じ結果です。私のマスターdbはいくつかのデータ(約10 Go)を取得しました、それはおそらくそれが原因ですか?どのステップを逃しましたか?私のdata_dirが/ srvにあるという事実との奇妙な相互作用が原因ですか?
私のサーバーはdebian 9上にあります
助けてくれてありがとう、必要に応じて詳細を尋ねてください!私はPostgresの初心者なので、重要な情報を見逃したかもしれません
「/ srv/postgresql」でデータを探すように言った。しかし、次に、pg_basebackupにデータを「/ srv/postgresql」ではなく「/var/lib/postgresql/9.6/main」にクローン作成するように指示しました。
再度postgresqlを起動したとき、あなたは(どうやら)データがまだ/ srv/postgresqlにあるデータベースインスタンスを起動しましたが、これは作成したクローンではありません。
また、「archive_mode」をオンにしてからダミーの「archive_command」を提供することは役に立たず、混乱と誤って報告されたエラーを引き起こすだけです。そして、「pg_basebackup」には-R
recovery.conf自体を書き出すためのオプション。おそらくそれを使用するのが最善でしょう。