-PR-
tanu_2

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not write lock file "/var/lib/postgres/data/postmaster.pid": No space

となっており、上記ディレクトリにpostmaster.pid書き込みできないよ、と言われているっぽかったので、パーミッションを変更したりして
みましたが、postgresql startにしろ、pg_ctl startにしろ、それぞれのコマンドで起動すると、強制的にパーミッションが「700」に変更されてしまうようで、結果は同じでした。

どなたか、解決策をご教示願えませんでしょうか?

よろしくお願いします。m(_ _)m
  • 回答数4
  • 気になる数0
  • Aみんなの回答(全4件)

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

    • 2007-06-19 20:14:33
    • 回答No.3
    それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。

    postmaster -D /usr/local/pgsql/data

    ただ、以下のURLのドキュメント内には、次のような記述があります。

    「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

    パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証はなし。)

    su - postgres

    上記のコマンドでログインするなり、パスワードを忘れたのならroot権限にてpasswdコマンドから変更するなりした後、もう一度postmasterを起動してみよう!

    ちなみに、パーミッション関係のエラーは、「Permission denied」ですよね。
    • ありがとう数0
    -PR-
    -PR-

    その他の回答 (全3件)

    • 2007-06-07 20:30:08
    • 回答No.1
    noname#98978

    No space
    補足コメント
    pastelflowさん、早速の書き込みをいただき、ありがとうございます。

    エラーメッセージが途中で切れていました。
    正しくは、

     No space left on device

    です。ちなみに、このエラーメッセージはpg_ctl startを実行した際のものです。

    root権限で、/etc/init.d/postgresql startを実行した際には、若干違うメッセージが出ます。

    Starting PostgreSQL database server: postmaster(FAILED)
    ERROR: ERROR: PostgreSQL postmaster did not start because of an unknown reason.
    /usr/lib/postgresql/bin/postgresql-startup: line 161: cannot create temp file for here document: No space left on device

    両方とも、「No space left on device」と出ているのですが、どうすれば解決できるものかと悩んでいます。
    投稿日時 - 2007-06-08 13:02:23
    • ありがとう数0
    • 2007-06-14 11:18:11
    • 回答No.2
    "/var/lib/postgres/data/postmaster.pid" を削除すれば、どうですか ちなみに、削除しても大丈夫と思うよ 私も、2~3回、経験がある。 まあ、私の場合を同じ原因とは限りませんが ためしに、やってみては。 ...続きを読む
    "/var/lib/postgres/data/postmaster.pid"
    を削除すれば、どうですか
    ちなみに、削除しても大丈夫と思うよ
    私も、2~3回、経験がある。
    まあ、私の場合を同じ原因とは限りませんが
    ためしに、やってみては。
    お礼コメント
    gyrocompasさん、回答をいただきまして、ありがとうございました。
    (返事が遅くなってしまい、申し訳ございませんでした。m(_ _)m)

    教えて頂いた方法ですが、すでに実施していたのですが、解決には至りませんでした。orz

    何が悪いんでしょうか???
    投稿日時 - 2007-06-15 19:09:31
    • ありがとう数0
    • 2007-06-21 01:57:25
    • 回答No.4
    #4です。ほっ、間に合ってよかった。(いえ、独り言です。) 「postmaster」っていうのは、PostgreSQLのデーモンプロセスでもあるわけだから、rootでも操作が出来なくはないはず・・・、といろいろといじっていましたらGUIでの操作方法を発見です。(以下、Fedora Core6[KDE]のばあい。) 1.「K メニュー」→「システム」→「Services」より"sy ...続きを読む
    #4です。ほっ、間に合ってよかった。(いえ、独り言です。)


    「postmaster」っていうのは、PostgreSQLのデーモンプロセスでもあるわけだから、rootでも操作が出来なくはないはず・・・、といろいろといじっていましたらGUIでの操作方法を発見です。(以下、Fedora Core6[KDE]のばあい。)

    1.「K メニュー」→「システム」→「Services」より"system-config-services"を起動.
    2.「postgresql」の所にチェックを入れてから、「開始」ボタンを押下。

    ちなみに、上記と同じことをCUIにて行いたいのであれば、Red Hat 系の場合は、以下のコマンドを実行します。

    /etc/rc.d/init.d/postgresql start

    で、質問者さんの場合では何故できなかったのかに関しては、以下のサイトを参考にしてください。(私自身、詳しくは分かりません。近々、Ubuntuもさわってみようかな~と考えているので、その時までには理解しておこうかなと。)

    Debianでの起動処理(init)とランレベル(rc.d)の制御
    http://park15.wakwak.com/~unixlife/linux/de-init.html

    インストール手順などが載っているサイト上では、よく「起動スクリプトの作成」についての説明があったりしますが、以下の過去ログにもある通り、通常はいちいち作らなくてもいいはず。

    「RedHat ES4でPostgreSQLを自動起動したい」
    http://oshiete1.goo.ne.jp/qa2848463.html

    ちなみに、既存の起動スクリプトの場所がどこか知りたいのなら、「ファイル/フォルダを検索」にて名前(N):は「postgres」、参照(I):は「file:///」とすれば、だーっといろいろと出てくることと思う。

    最後に、DB管理者さん向けのサイト。

    エラー時の対処法
    http://mland98.rc.kyushu-u.ac.jp/text/skyboard-2.0.html#error_1
    補足コメント
    下記のTCP/IP接続に関する補足です。

    /var/lib/postgres/data/postgresql.conf

    にある

    #tcpip_socket = false



    tcpip_socket = true

    に変更した後、root権限で

    # /etc/init.d/postmaster restart

    を実行したところ、うまくいくようになりました。

    どうやら、PostgreSQLでは、TCP/IPでの接続はデフォルトとはなっておらず、localhost への接続だった場合は、UNIX ドメインソケット経由にした方が接続の速度が速いので、そのようになっているようです。

    本当に、勉強になりました。
    重ねて、ご回答頂きました皆様に御礼申し上げます。m(_ _)m
    投稿日時 - 2007-06-21 10:56:15
    お礼コメント
    choconamacreamさん、いろいろと詳細な情報までご提供いただきまして、ありがとうございました。m(_ _)m

    教えて頂きました情報に基づき、いろいろと試してみたところ、ようやくうまくいきました。
    本当にありがとうございました。

    原因は、ユーザpostgresのホームディレクトリに作成されていた~data/以下のディレクトリの権限がrootになっていたため、initdbが失敗してしまい、postmasterが起動できなくなっているというもののようでした。
    なぜ、root権限になってしまったのかは不明ですが、

    $ rm -Rf ~/data/
    # rm -Rf /var/lib/postgres/data

    とし、それぞれのdataディレクトリを削除した後、

    $ initdb

    を実行し、DBを初期化、さらに

    $ postmaster -i -D /var/lib/postgres/data

    により、postmasterを実行することにより解決しました。
    ちなみに、root権限による

    # /etc/init.d/postgres start

    では、TCP/IPでの接続ができない旨、エラーメッセージが出てきてしまい、うまくいかなかったので、postgres権限による-iオプションを付けた起動としました。

    PostgreSQLの運用・管理は数年やっているのですが、こんな原因でうまくいかないという状況にはまってしまったのは、初めてだったもので、皆様のお力をお借りさせていただきました。

    今回の件で、いろいろと勉強させていただきました。
    本当に、ありがとうございました。m(_ _)m
    投稿日時 - 2007-06-21 10:47:39
    • ありがとう数0
    • 回答数4
    • 気になる数0
    • ありがとう数4
    • ありがとう
    • なるほど、役に立ったなど
      感じた思いを「ありがとう」で
      伝えてください
    • 質問する
    • 知りたいこと、悩んでいることを
      投稿してみましょう
    このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
    このQ&Aにはまだコメントがありません。
    あなたの思ったこと、知っていることをここにコメントしてみましょう。
    -PR-
    -PR-

    その他の関連するQ&Aをキーワードで探す

    別のキーワードで再検索する
    -PR-
    -PR-
    -PR-

    特集


    成功のポイントとは?M&Aで経営の不安を解決!

    -PR-

    ピックアップ

    -PR-
    ページ先頭へ