2009年07月24日

cron経由のpg_dumpの自動実行がどうしてもうまく完了できない原因が解決

夏休み前半線は本当にマタ〜リになってしまいました。OTL

本当は今頃友人とツーリング中のはずでしたが、天気予報がずっと雨マーク、なのに実際には雨がほとんど降らずで、なんだか時間を無駄に浪費している感じで嫌ですね。OTL

おまけに本当は昨日届くはずだったWiiのパンチアウトがいまだに届かず、せっかく時間空いているのに遊べず踏んだり蹴ったりです(><)

なので遊ぶのを諦めPCとにらめっこ。

とあるレンタルサーバにてpg_dumpの手動実行はうまくいけど、どうしてもcronでの自動実行がうかくいかず、なぜだろうとずっと謎でしたが、意外にもアホらしいことで引っかかっていたようです。

どうもそのサーバの仕様で実行時間が3分以上かかるものは強制終了させられるようで、そりゃ確かに手動でも時間がかかるなとは思っていたんですが、データベースを精査していたらアクセスログが肥大化していてなんと380万レコード溜まってました(汗。。
実行時間は実に3分30秒でダンプファイルは810MBにもなってました(滝汗;;

不要分を掃除したら4万レコードにまで小さくなり、再度実行すると今度は1分半終了。ダンプファイルは40MBまで減りました。

ま、計算が合いませんが、データ領域とその他の領域の割合が影響していると思われるので良しとしましょう。

ちなみに自動実行はexpectという対話形式の入力をサポートしてくれる便利なツールがあってシェルスクリプトの中に書いてcronで回したら今度はうまく行きました。

参考になったサイトは以下です。感謝(ー人ー)

http://www.math.kobe-u.ac.jp/~kodama/tips-expect.html
http://www.itbook.info/study/p107.html

ちなみに

#!/usr/local/bin/expect -f 

で書くと手動実行時はうまくいくのですが、私の環境では自動だと何故かうまく動かないので

#!/bin/sh

/usr/bin/expect -c "
set timeout 240
spawn pg_dump db_name -f output_file
expect \"Password:\"
send -- \"hogefuga\r\"
expect eof
"


見たいな感じでシェルに食わせたらうまく動きました。

というわけで、もったいなく過ごしてしまった時間をなんとかこれで慰めてみました。(^^;;

おっと、夜になってようやくパンチアウトが到着したようです。WiiFitのバランスWiiボードを引っ張り出して、これから子供とボクシングに興じますw





posted by けひ at 21:34| 長野 曇り| Comment(0) | TrackBack(0) | ハマり道 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/124168801
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック