
非同期ストリーミング複製は良いことです。 現在、彼女にはさまざまなユーティリティがあり、大規模で強力かつ忠実なシステムを構築できます。
しかし、小さなタスク、いくつかのサーバー、組み込みの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のコメントを外したもの、つまり、以下をコメントアウトします。
そしてコメント解除:
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でコメントアウトします。
そしてコメント解除:
hot_standby = on
また、$ HOMEのServ2で、recovery.doneをrecovery.confに変更します。
Serv2でpostgresを実行します。
現在、Serv2は再びスレーブとして機能しています。できた 今、すべてがその場所にあります:Serv1-マスター、Serv2-スレーブ。
コピーペーストと低レベルの咀wingのシェアについて前もって謝罪しますが、この情報は全体的に見られず、普通の人間にはアクセスできません。