[pgsql-jp: 40321] Re: サービス起動時に「startup process recovering」というプロセスで待たされる

Takahiro Itagaki itagaki.takahiro @ gmail.com
2010年 7月 7日 (水) 12:12:46 JST


板垣です。

2010年7月7日9:38 Norio Suzuki <suzuki @ tricorn.co.jp>:
>>     pg_ctl stop -D '$PGDATA' -s -m fast -w
>
> あまり自信は無いのですが、fast で停止するとクライアント接続の強制切断を
> 行うので、その辺りが問題でリカバリモードに入ってしまうのかも知れないなぁ
> などと思いました。
>
> 私がこの状況になったとしたら、fast モードを避け、デフォルトの smart モー
> ドでの停止処理をする方法を試してみます。

いちおう仕様上は、smart でも fast でも全く同じように正常停止できるはずです。
(強制停止するのは immediate モードですね)
smart の場合、先にセッションを全て切断しておかないといけないので、
fast の代わりには使えないかもしれません。

時間がかかっても良いから起動を待ちたいということであれば、-w オプションに加えて
-t <秒数> オプションも使うことをお奨めします。-w だけだと60秒しか待たないので、
しまうので、停止や起動に時間がかかると、けっこうタイムアウトすることがあります。
今回は 3) で -t <長い時間> とすれば、時間はかかるかもしれませんが、エラーは
避けられると思われます。

リカバリが走ってしまう = 正常停止できていない のはまた別の問題ですが…
もしかすると 1) もタイムアウトしており、正常停止の前に rsync を始めて
しまっていることの影響かもしれません。停止前に CHECKPOINT を打ち、
かつこちらも fast -w -t <たくさん> するとどうでしょう?


pgsql-jp メーリングリストの案内