autovacuumを定時起動する方法とは?

このQ&Aのポイント
  • postgresql8.3を使用している場合、autovacuumを使って無駄な領域を削除したいと考えています。しかし、定時起動する方法がわかりません。
  • autovacuumを定時起動する方法がわからない場合、他の方法としてvacuumdbをcronで設定するか、autovacuumの起動間隔を変更してpostgresqlを再起動することが考えられます。
  • 他の方法としてvacuumdbを使用するか、autovacuumの起動間隔を変更して再起動することができますが、いずれも面倒な作業が必要です。もしautovacuumを定時起動する方法を知っている方がいらっしゃれば、教えていただきたいです。
回答を見る
  • ベストアンサー

autovacuumを定時起動したい

こんばんは。 postgresql8.3を使っています。 autovacuumを使って、無駄な領域を削除しようと考えています。 毎日深夜の2時に定時的にautovacuum,が実行されるようにしたいと考えています。 postgresql.confの設定をあれこれ変えているのですが、うまくいかず、設定方法がいまいち分かりません・・・。 autovacuumを定時起動する方法がないのなら、 ・autovacuumではなく、vacuumdbを深夜2時に実行するようにcronで設定する。 ・autovacuumの起動間隔を24時間(1440min)にして、深夜2時にpostgresqlを起動しなおす。 くらいしかないのかなぁ、と思ってます。 vacuumdbは使いたくないし、深夜2時にpostgresqlを起動しなおすのも面倒です・・・。 autovacuumを定時起動する方法を、ご存知の方がいらっしゃたら、教えていただきたいです。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 う~ん・・・・定期的ではなくPostgreSQL自身がvacuumすべき(と判断した)タイミングでvacuumするから「auto」vacuumなんですがね。そういう用途でautovacuumは使えませんと思いますがいかが。  ところでご存知かも知れないがautovacuumは一定間隔で起動されPostgreSQLの統計情報を参照してある値が閾値を超えていたら勝手にvacuumして終了するというものだ。なので、「autovacuumの起動に先立って実行され、統計情報を参照してautovacuum_vacuum_threshold、autovacuum_analyze_threshold、autovacuum_vacuum_scale_factorを丁度vacuumされるような閾値に調整してやった上でPostmaster自体を再起動するようなツール」を作ってやれば実現できそうではある・・・・けど・・・・明らかに本末転倒だよね。  vacuumdbを使いたくない理由がわかればプロの人が何かクールな対案を練ってくれるかも知れません。

ijhnb6543f
質問者

お礼

こんばんは。ご意見ありがとうございます。 そうなんですよね。自動で判断してくれるから、autovacuumなんですよね。 vacuum中は、postgresqlにアクセスするとレスポンスが遅くなる、 みたいな情報を聞いて、データアクセスが頻繁な日中は、 勝手にvacuumされたら困るなぁ、と思っていました。 閾値があるのは知っていますが、詳しいことまでは理解しきれていません。 リファレンスに書いてあった気がします。 ありがとうございました。

関連するQ&A

  • サーバの定時再起動

    こんにちは。 Linuxのサーバの定時再起動を知りたいと思っています。 午前4時くらいにやりたいと思っているのですが どなたか方法をご存知ではないでしょうか? Cronも使える環境です どうぞよろしくお願いします。

  • exim4のqueue送信間隔について

    exim4をDebianにインストールしてメール送信テストを行っております。 mainlogをみると、送信を受け付けてから実際にqueueが送信されるまで 時間がかかっております。(30分間隔での実行) この間隔を短く設定する方法を教えてください。 Cronやexim4.conf.templateを見ましたがそれらしき設定は見当たりませんでした。 よろしくお願いします。

  • postgresql.conf を編集したら,起動できなくなりました

    OS RedHat、postgresql8.1.5でポスグレのログ設定のために、 postgresql.confを編集しました.(/pgsql/data/postgresql.conf) デフォルト状態から log_connections = true log_statement = true log_duration = true log_timestamp = true のみ変更し、ポスグレを起動したところ、起動できなくなってしまいました.上記部分をコメントアウトすると、正常に起動できます. 何が原因で動かなくなってしまったのか分かりません. よろしくお願い致します.

  • CRONをランダムで起動させる方法

    CRONは定時刻で実行されるものですが、 これをランダムで起動させる方法はありますか? 例えば 「毎日●時●分~●時●分の間に1度ランダムで起動する」 というようなイメージです。 やりたいことは CRONをランダム起動させる、というよりも、 指定したプログラムをランダム起動させたい、ということです。 そのための手段としてCRONを使わなくてはいけない、 ということではないです。 いろいろと調べてもわかりませんでした。 ご存知の方教えていただけると幸いです。 よろしくお願いします。

  • apache停止してたら再起動させるcron

    apache停止してたら再起動させるcron アパッチ停止時してたら再起動させるcronを設定したいのですが、cronに以下を設定してもうまくいきません。 set http=`ps aux | grep -v grep | grep -c http` ; if ( $http < 2 ) /usr/local/sbin/restart_apache cronエラーとしてマスターユーザに以下エラーが来ます。 Syntax error: word unexpected (expecting "then") シェルがX-Cron-Env: <SHELL=/bin/sh>であるという記述もありcron実行時にはshを使う? ようなのですが。。。ググっても解決できずにいます! thenとendifを入れてもだめです。 おそらく1行で実行する構文?がよくないのだと思っています。 セミコロン;とかを入れてみてもうまくいきませんでした。 どなたかおわかりでしょうか

  • 、cronのユーザは postgresでないとpg_dumpallが実行できません。

    CronでPostgreSQLのデータベースをバックアップするにあたり pg_dumpallコマンドで実行させるのですが、cronのユーザは postgresでないと実行できません。 コマンドユーザーをrootにして、pg_dumpallを実行させたいのですが、何か良い方法はありますか? cronにはpg_dumpall直接書き、またはスクリプトでも構いません。

  • Passwordを設定したPostgreSQLのバックアップなどができ

    Passwordを設定したPostgreSQLのバックアップなどができない。 PostgreSQLのバックアップを行おうとしているのですがバックアップSHELLを実行 するとパスワードを聞いてきます。 pg_dump -Udbuser -s DBANME > /DbBkup/dbbackup.out そこで実行ユーザのHOMEディレクトリに.pgpassを置き localhost:*:DBNAME:dbuser:dbpass と登録し、実行しところ、これでもパスワードを聞いてきます。 最終的にはcronで実行したいのですが、解決方法がわかりません。 お願いいたします。

  • 毎日、定時にhttpdを起動させ定時に停止させるには・・・・?

    タイトルの通りなのですが、 1)毎日、自動的に、定時にhttpdを起動させ定時に停止させる ことなんて出来るのでしょうか? atpやsleepコマンドとかがそれに近い働きをすると、 何かのHPに書いてあったのですが、毎日起動・停止の 動作ができるのかが書いてありませんでした。 どなたかご存知の方、方法あれば教えてくださいませ・・・ あと・・・ 2)[root@***** root]# lsof -i:443 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd 525 root 4u IPv4 942 TCP *:https (LISTEN) httpd 633 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 634 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 635 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 636 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 637 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 638 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 639 apache 4u IPv4 942 TCP *:https (LISTEN) httpd 640 apache 4u IPv4 942 TCP *:https (LISTEN) というふうに、httpsがLISTENになっているのですが、 httpsは使用しないので、停止させたいのですが、 方法ありますか? httpd.confで、#LISTEN 443 としたのですが、駄目 でした・・・・ 以上、2点何卒よろしくお願い致します。

  • PostgreSQLの自動起動

    皆さん、こんにちは。 Fedora Core 4にPostgreSQLを入れて、自動起動させようとしています。 /etc/rc.localにpostmaster -Sと書いたのですが、自動起動しません。 パスが通っていないのかとフルパスで指定してもうまく行きません。 postgresユーザでこれを実行するとうまくいきます。 /etc/rc.localに指定すれば、OS起動時に書いてあるものは何でも 動くのではないのでしょうか? どうすればPostgreSQLが自動起動するのでしょうか?

  • 時間のかかる処理

    長時間かかるスクリプトを起動したいとき、 telnetから起動してしまうと、端末の電源を切れなくなります。 以前の職場ではそういう時もテスト端末が豊富だったので、そういうときには 実機の前に行って実行したり、VNCでつなげて実行したりしていました。 しかし今回はそのどちらもできないのですが、cron??というのを通常使うのでしょうか? どのように使うのか簡単に教えてほしいです。 またcron以外にも方法があったら教えてほしいです