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

NASUNO Isao isao.nasuno @ ctc-g.co.jp
2010年 7月 6日 (火) 21:28:03 JST


那須野と申します。
お世話になります。


データを新しく流し込む前に、データベースのバックアップを
下記のような手順のシェルスクリプトで行っているのですが、

-----------------------
1)データベースを止める
    pg_ctl stop -D '$PGDATA' -s -m fast -w

2)コピー
    rsync  -a --delete $PGDATA/* バックアップディレクトリ/.

3)データベースを起動
    pg_ctl start -D '$PGDATA' -s -l ログファイル -w

4)データベースに新しくデータを流し込む
    xxxxx.sql | psql
-----------------------

ときどき、3)で
 postgres: startup process   recovering 00000001000000130000005F
のようなプロセスが生成されて長時間待たされてしまい、待ちきれずに4)が実行され、
データの流し込みに失敗してしまいます。

しかし、そのまま待っていると、いつもどおりサービスが起動します。
起動しますが、4)はエラーを出して終わってしまっているので、
データは流し込まれていない状態で終わります。

このプロセスが発生する原因は、なんなのでしょうか?
または、正常にサービスが起動するまで待つ方法はないでしょうか?
ログには、正常にshutdownした様子しか記録されていないように見えます。

●うまく行かない場合の標準出力は、3)で、
  Starting PostgreSQL: could not start server
  と出て、4)では
  psql: FATAL:  the database system is starting up
  と出ます。
  同じFATAL...は、ログにも出ます(しかも50行くらい)が、他のエラーメッセージは
 特にログには見当たりません。

●pg_ctl を呼んでいるように書きましたが、
  実際は、/etc/init.d/postgresql start(またはstop)とやっています。
  同じことだと理解しています。

●このシェルスクリプトは、sudo コマンドで root 権限で動かしています。

どなたか、ご教授いただけないでしょうか?
よろしくお願いいたします。



/那須野


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