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のシェアについて前もって謝罪しますが、この情報は全体的に見られず、普通の人間にはアクセスできません。



All Articles