[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 メーリングリストの案内