postgresql高可用性の予備ライブラリ(三)


Streamsレプリケーションのアーカイブ関連設定
  • ストリームレプリケーションは、マスターライブラリがアーカイブを開くかどうかについて必然的な関連はない.
  • アーカイブを開くことは、基本的なバックアップとリカバリに必要である.

  • プライマリ・ライブラリがアーカイブを開始し、アーカイブ・ディレクトリ・スタンバイにアクセスできる場合、スタンバイ起動時の動作は次のとおりです.
  • まずrestore_を使用commandはできるだけWALアーカイブを使用して復元する.
  • 上のコマンドが失敗すると、xlogディレクトリの下で使用可能な
  • を適用する.
  • 上記の手順が適用された後、ストリームレプリケーションがオンになっている場合は、プライマリ・ライブラリに接続し、ストリームレプリケーション方式で準リアルタイム同期を継続します...
  • .
  • ストリームレプリケーション接続が失敗するか、またはストリームレプリケーションがオンになっていない場合は、第1のステップに戻る.

  • マスターライブラリのアーカイブを閉じる
    アーカイブは、災害復旧時にリカバリに使用することが重要です.ここでは、閉鎖を推奨するのではなく、具体的な災害対策に従って決定します.
    プライマリ・ライブラリのアーカイブのクローズ
    [postgres@fnddb data]$ vi postgresql.conf 
    archive_mode = off
    wal_keep_segments = 200    --                       .
    max_replication_slots = 2    --      Replication Slots    
    [postgres@fnddb data]$ pg_ctl restart -m fast
    

    アーカイブがないため、バックアップは直接メインライブラリを介してxlogを取得する.これにより、スタンバイが一時停止する場合に問題が発生します.メインライブラリはアーカイブを閉じるため、xlogファイルは一部しか保持されません.バックアップ再起動時に必要なxlogが取得できない場合、バックアップは再初期化するしかない.では、どのようにして十分なxlogファイルを保持しますか.wal_keep_segmentsパラメータ制御保持xlog数
    フローレプリケーションスロットの設定(Replication Slots)
    アーカイブを閉じてパラメータwal_を使用keep_segmentsはxlogの数を制御して大体評価することしかできなくて、予備ライブラリが直ちにxlogを取得できない問題を解決する.制限が少なくなると、バックアップはxlogを取得できないリスクがあり、制限が多くなり、スペースを占有する.Replication Slotsメカニズムは、どのxlogがすでにライブラリに受け入れられているかを正確に制御することができ、どのxlogがリサイクルできるかを判断することができる.
    マスターライブラリ上の構成
    postgres=# select pg_create_physical_replication_slot('slot_1');
     pg_create_physical_replication_slot 
    -------------------------------------
     (slot_1,)
    (1 row)
    
    postgres=# select * from pg_replication_slots;
     slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
    -----------+--------+-----------+--------+----------+--------+------+--------------+-------------
     slot_1    |        | physical  |        |          | f      |      |              | 
    (1 row)
    

    ストリームレプリケーションスロットを構成したらwal_keep_segmentsパラメータは役に立たないmaxを構成していませんreplication_slotsパラメータpostgres=#select pg_create_physical_replication_slot('slot_1'); ERROR: replication slots can only be used if max_replication_slots > 0
    ライブラリ上の構成
    recovery.confパラメータを増やして再起動
    [postgres@vm2 data]$ vi recovery.conf 
    primary_slot_name = 'slot_1'
    [postgres@vm2 data]$ pg_ctl restart
    

    けんさ
    メインライブラリ
    postgres=# select * from pg_replication_slots;
     slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
    -----------+--------+-----------+--------+----------+--------+------+--------------+-------------
     slot_1    |        | physical  |        |          | t      |      |              | 0/29000828
    (1 row)
    

    アクティブ化された使用
    未完待機・・・
    //END