-PR-

解決済みの質問

質問No.3065046
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数4
閲覧数13963
PostgreSQLが起動しない・・・
はじめまして、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
投稿日時 - 2007-06-07 19:52:36

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

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

postmaster -D /usr/local/pgsql/data

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

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

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

su - postgres

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

ちなみに、パーミッション関係のエラーは、「Permission denied」ですよね。
投稿日時 - 2007-06-19 20:14:33
この回答を支持する
(現在0人が支持しています)

ベストアンサー以外の回答 (3)

回答No.4
#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
投稿日時 - 2007-06-21 01:57:25
この回答を支持する
(現在0人が支持しています)
補足
下記の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
回答No.2
"/var/lib/postgres/data/postmaster.pid"
を削除すれば、どうですか
ちなみに、削除しても大丈夫と思うよ
私も、2~3回、経験がある。
まあ、私の場合を同じ原因とは限りませんが
ためしに、やってみては。
投稿日時 - 2007-06-14 11:18:11
この回答を支持する
(現在0人が支持しています)
お礼
gyrocompasさん、回答をいただきまして、ありがとうございました。
(返事が遅くなってしまい、申し訳ございませんでした。m(_ _)m)

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

何が悪いんでしょうか???
投稿日時 - 2007-06-15 19:09:31
回答No.1
No space
投稿日時 - 2007-06-07 20:30:08
この回答を支持する
(現在0人が支持しています)
補足
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
この質問は役に立ちましたか?
4人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

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

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

同じカテゴリの人気Q&Aランキング

カテゴリ
PostgreSQL

データベースのサブカテゴリ

-PR-
-PR-

特集

背筋がゾクゾクする心霊体験を要チェック!

お城、ボート、ツリーハウス、ユニークな物件満載!

患者さんやご家族、それぞれに合ったゴールと道筋を。

同じカテゴリの人気Q&Aランキング

カテゴリ
PostgreSQL
-PR-

ピックアップ

-PR-