2010年7月 6日

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

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


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

-----------------------

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 権限で動かしています。

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

/那須野


投稿者 xml-rpc : 2010年7月 6日 21:28
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96901
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。