postgresでのストリーミングレプリケーションについてもう少し説明します。



非同期ストリーミング複製は良いことです。 現在、彼女にはさまざまなユーティリティがあり、大規模で強力かつ忠実なシステムを構築できます。

しかし、小さなタスク、いくつかのサーバー、組み込みのpostgresレプリケーションがあるとします。 設定についての十分な情報があり、ウィザードが失敗した場合のアクションについても確認できます。

しかし、ウィザードを復元する問題は災害であることが判明したので、私はあなたと行動のガイドを共有します。



まず、次のものがあります。

Serv1-マスター
Serv2-スレーブ

マスターのfall落


Serv1(マスター)上のデータベースが崩壊し、死亡し、反抗しないと仮定します。 同時に、Serv2はスレーブモードで安定しています。

次に、postgresql.confのServ2で、コメント解除する必要があります
wal_level = hot_standby max_wal_senders = 2 wal_keep_segments = 64 archive_mode = on archive_command = 'cp %p $LOG_DIR/archive/%f Serv1' 


$ HOMEでrecovery.confの名前をrecovery.doneに変更します
recovery.confファイルの内容を誰も知らない場合
standby_mode = 'on'
primary_conninfo = 'ホスト= master_hostポート= master_portユーザー= master_user'
restore_command = 'cp $ LOG_DIR / archive /%f%p'
trigger_file = '$ HOME /トリガー'


Serv2を再起動します。 したがって、Serv2がマスターになります。

元マスターの復元


これで、Serv2がマスターモードで動作し、Serv1が無効になりました。

次のように、Serv1をスレーブにします。

Serv2で実行:
 psql -c "SELECT pg_start_backup('label', true)" rsync -avzh --progress $HOME/ Serv1:$HOME/ --exclude postmaster.pid psql -c "SELECT pg_stop_backup()" 


Serv1のpostgresql.conf構成で、Serv2のコメントを外したもの、つまり、以下をコメントアウトします。
 #wal_level = hot_standby #max_wal_senders = 2 #wal_keep_segments = 64 #archive_mode = on #archive_command = 'cp %p $LOG_DIR/archive/%f Serv2' 


そしてコメント解除:
 hot_standby = on 


$ HOMEで、recovery.doneの名前をrecovery.confに変更します

Serv1でpostgresを実行します。
これで、Serv1はスレーブモードになります。

スレーブ上で実行することにより、スレーブの動作を確認できます
 ps aux | grep receiver 

フォームの結果を取得する
 postgres: wal receiver process (postgres) 


マスターに戻る


(最初の段落を参照し、反対のことを行います)

元マスターServ1は、Serv2スレーブになりました。 どちらも安定して動作し、スレーブコピーは正しく、矛盾は最小限です。

マスターServ1になるには:

postgresql.confでコメント解除します
 wal_level = hot_standby max_wal_senders = 2 wal_keep_segments = 64 archive_mode = on archive_command = 'cp %p $LOG_DIR/archive/%f' 


Serv2(現時点ではマスター)を停止し、Serv1で$ HOMEでrecovery.confをrecovery.doneに変更します。

Serv1は再び作業マスターになりました。

Serv2スレーブを接続するには:

Serv1で次を実行します。
 psql -c "SELECT pg_start_backup('label', true)" rsync -avzh --progress $HOME/ Serv2:$HOME/ --exclude postmaster.pid psql -c "SELECT pg_stop_backup()" 


postgresql.confのServ2でコメントアウトします。
 #wal_level = hot_standby #max_wal_senders = 2 #wal_keep_segments = 64 #archive_mode = on #archive_command = 'cp %p $LOG_DIR/archive/%f' 


そしてコメント解除:
 hot_standby = on 


また、$ HOMEのServ2で、recovery.doneをrecovery.confに変更します。

Serv2でpostgresを実行します。 現在、Serv2は再びスレーブとして機能しています。

できた 今、すべてがその場所にあります:Serv1-マスター、Serv2-スレーブ。



コピーペーストと低レベルの咀wingのシェアについて前もって謝罪しますが、この情報は全体的に見られず、普通の人間にはアクセスできません。

Source: https://habr.com/ru/post/J173623/


All Articles