[pgsql-jp: 42080] Re: リカバリモードでの起動に1分以上かかる原因についてご教授ください
bobytyt
bobytyt @ yahoo.co.jp
2021年 7月 12日 (月) 08:13:35 UTC
佐藤さん
谷口です。
お世話になっております。
ご回答ありがとうございます。
ログを確認してみます。
また、今後はご提案いただきましたslackに
質問をさせていただこうと思います。
何卒よろしくお願いいたします。
On 2021/07/12 13:14, Tomoaki Sato wrote:
> 佐藤です。
>
>> はじめまして
>> 谷口と申します。
>>
>> よろしくお願いいたします。
>>
>> 現在、PostgreSQL 12を使って
>> ストリーミングレプリケーションを構成しており、
>> スタンバイの昇格後に、
>> 降格したプライマリをリカバリモードで起動したときに
>> 起動に1分以上かかる現象が発生しております。
>>
>> これについて考えられる原因をご教授いただけないでしょうか。
> WAL ファイルの数はたいして多くないとのことですが、普通に考えると、WAL
> 適用に時間がかかったためだと思います。ログを確認し、WAL 適用がいつ完了
> したかを見れば、切り分けができると思います。
>
> 最近では、Slack で聞いたほうが、反応があるかもしれません。
>
> https://slofile.com/slack/postgresql-jp
>
>> 【環境】
>> ー 2サーバ(プライマリ - スタンバイ)の
>> ストリーミングレプリケーション構成
>> 非同期=synchronous_standby_namesなし
>> ー いずれのサーバも以下のスペック
>> CPU :4
>> メモリ :64GB
>>
>> 【手順】
>> 1.プライマリで下記設定のもとDB更新を行う
>> max_wal_size = 1GB (デフォルト)
>>
>> DB更新が高頻度であったため、チェックポイントが多発し、
>> max_wal_sizeを大きくする旨の警告が表示されました
>>
>> 2.プライマリでpg_ctl stop -m immediate
>>
>> 3.スタンバイでpg_ctl promote → 新プライマリに昇格
>>
>> 4.旧プライマリで pg_basebackup を実行し
>> 新プライマリからバースバックアップを取得
>>
>> 5.リカバリモードでpg_ctl start
>> → 1分以上後にタイムアウトが発生しました(pg_ctlの仕様)
>> 起動はバックグラウンドで徐々に進行し、最終的には起動が完了
>> しました。
>> このとき、walは20ファイル程度であったことを確認
>>
>> 【推測】
>> リカバリモードでのwalからのトランザクションの組み立てに時間を要して
>> いるのかもしれません。
>> しかし、walのファイル数はそれほど大量ではなく
>> タイムアウトが発生した原因であると断定できません。
>
> ----
> Tomoaki Sato <sato @ sraoss.co.jp>
> SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内