質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

9105閲覧

PostgreSQLが起動できなくなってしまいました

kyotoinrn

総合スコア23

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

1クリップ

投稿2019/02/25 14:28

編集2019/02/26 06:19

前提・実現したいこと

Railsに使うDBの設定をしていたら、突然起動できなくなり、sudo service postgresql statusとしたら、
11/main (port 5432): downとなった。スーパーユーザーにする過程でミスったんだと思いますが、解決法が分かりません…

よろしくお願いします。

発生している問題・エラーメッセージ

/var/run/postgresql$ sudo service postgresql start [sudo] my_linux_login_name のパスワード: * Starting PostgreSQL 11 database server * Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /var/lib/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log -s -o -c config_file="/etc/postgresql/11/main/postgresql.conf" exited with status 1: 2019-02-25 23:17:50.203 JST [133] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-02-25 23:17:50.224 JST [133] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けています 2019-02-25 23:17:50.331 JST [134] LOG: データベースシステムはシャットダウン中に中断されました; 2019-02-25 22:38:58 JST まで動作していたことは確認できます 2019-02-25 23:17:50.331 JST [134] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されてい ません 2019-02-25 23:17:50.332 JST [133] LOG: 起動プロセス (PID 134)はシグナル6で終了しました: Aborted 2019-02-25 23:17:50.332 JST [133] LOG: 起動プロセスの失敗のため起動を中断しています 2019-02-25 23:17:50.348 JST [133] LOG: データベースシステムはシャットダウンしました pg_ctl: サーバを起動できませんでした。 ログ出力を確認してください。

該当のログ

2019-02-25 22:29:04.413 JST [28811] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-02-25 22:29:04.432 JST [28811] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けてい す 2019-02-25 22:29:04.553 JST [28812] LOG: データベースシステムは 2019-02-25 22:27:03 JST にシャットダウ しました 2019-02-25 22:29:04.682 JST [28811] LOG: データベースシステムの接続受け付け準備が整いました。 2019-02-25 22:29:05.277 JST [28819] [不明]@[不明] LOG: 開始パケットが不完全です 2019-02-25 22:30:51.512 JST [28847] my_linux_login_name@postgres FATAL: ロール"my_linux_login_name"は存在しません 2019-02-25 22:31:37.242 JST [28857] my_linux_login_name@ubuntu0876 FATAL: ロール"my_linux_login_name"は存在しません 2019-02-25 22:31:58.416 JST [28866] postgres@postgres LOG: 与えられたユーザ名 (postgres) と認証されたユ> ーザ名 (my_linux_login_name) が一致しません 2019-02-25 22:31:58.417 JST [28866] postgres@postgres FATAL: ユーザ "postgres" で対向(peer)認証に失敗し> ました 2019-02-25 22:31:58.417 JST [28866] postgres@postgres 詳細: 接続はpg_hba.confの行85に一致しました: "loca l all postgres peer" 2019-02-25 22:35:04.601 JST [28882] my_linux_login_name@postgres FATAL: ロール"my_linux_login_name"は存在しません 2019-02-25 22:37:03.409 JST [28925] postgres@postgres ERROR: ロール"{my_linux_login_name}"はすでに存在します 2019-02-25 22:37:03.409 JST [28925] postgres@postgres 文: CREATE ROLE "{my_linux_login_name}" SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN; 2019-02-25 22:38:04.049 JST [28972] my_linux_login_name@postgres FATAL: ロール"my_linux_login_name"は存在しません 2019-02-25 22:38:58.151 JST [28811] LOG: 高速シャットダウン要求を受け取りました 2019-02-25 22:38:58.158 JST [28811] LOG: 活動中の全トランザクションをアボートしています 2019-02-25 22:38:58.179 JST [28811] LOG: バックグラウンドワーカ"logical replication launcher" (PID 28818 )は終了コード1で終了しました 2019-02-25 22:38:58.180 JST [28813] LOG: シャットダウンしています 2019-02-25 22:38:58.199 JST [28813] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されて> いません 2019-02-25 22:38:58.200 JST [28811] LOG: チェックポイント処理プロセス (PID 28813)はシグナル6で終了しま た: Aborted 2019-02-25 22:38:58.200 JST [28811] LOG: 他の活動中のサーバプロセスを終了しています 2019-02-25 22:38:58.243 JST [28811] LOG: データベースシステムは異常にシャットダウンしました 2019-02-25 22:38:58.261 JST [28811] LOG: データベースシステムはシャットダウンしました 2019-02-25 22:40:13.396 JST [29058] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-02-25 22:40:13.415 JST [29058] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けていま す 2019-02-25 22:40:13.511 JST [29059] LOG: データベースシステムはシャットダウン中に中断されました; 2019-02 -25 22:38:58 JST まで動作していたことは確認できます 2019-02-25 22:40:13.512 JST [29059] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されて> いません 2019-02-25 22:40:13.513 JST [29058] LOG: 起動プロセス (PID 29059)はシグナル6で終了しました: Aborted 2019-02-25 22:40:13.513 JST [29058] LOG: 起動プロセスの失敗のため起動を中断しています 2019-02-25 22:40:13.537 JST [29058] LOG: データベースシステムはシャットダウンしました pg_ctl: サーバを起動できませんでした。 ログ出力を確認してください。 2019-02-25 22:41:49.440 JST [29093] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-02-25 22:41:49.459 JST [29093] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けてい す 2019-02-25 22:41:49.573 JST [29094] LOG: データベースシステムはシャットダウン中に中断されました; 2019-02 -25 22:38:58 JST まで動作していたことは確認できます 2019-02-25 22:41:49.573 JST [29094] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されて> いません 2019-02-25 22:41:49.574 JST [29093] LOG: 起動プロセス (PID 29094)はシグナル6で終了しました: Aborted 2019-02-25 22:41:49.574 JST [29093] LOG: 起動プロセスの失敗のため起動を中断しています 2019-02-25 22:41:49.589 JST [29093] LOG: データベースシステムはシャットダウンしました

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/02/25 15:31

バックアップは取っていますか?
kyotoinrn

2019/02/26 04:50

すみません、ド素人なので何のバックアップなのかいまいちわかっていないんですが、多分とってないと思います。ただPostgreSQLのことであれば、インストールしたばかりなので再インストールすることに特別抵抗はありません。 以下のコマンドをしてみたところ、こんな感じです。/var/run/postgresql/に.s.PGSQL.5432は見当たりませんでした。 ``` psql -l psql: サーバに接続できませんでした: そのようなファイルやディレクトリはありません ローカルにサーバが稼動していますか? Unixドメインソケット"/var/run/postgresql/.s.PGSQL.5432"で通信を受け付けていますか?```
sazi

2019/02/26 04:57

postgresのインストール先のOSは何ですか? アンインストール&インストールする方が手っ取り早そうですね。
kyotoinrn

2019/02/26 05:21

WSLを使っているので、Ubuntu、リポジトリはAPTです。
kyotoinrn

2019/02/26 05:23

シンプルにsudo apt remove postgresqlで大丈夫ですか?
kyotoinrn

2019/02/26 05:43 編集

上記のものと、sudo apt remove --purge postgresql を試し、どちらも直後にsudo apt install postgresqlしましたが、状況変わらずでした。 アンインストールした後でもpsqlコマンドが打てるのがなぜかわからないです
sazi

2019/02/26 11:06

psqlはpostgres本体では無いので、アンインストールの手順に含まれていなければ残りますよ。
kyotoinrn

2019/02/26 12:01

どういう手順でやれば解決できますかね…?
sazi

2019/02/26 12:59

wslの環境では利用したことがないので、ご期待に応えることはできません。 自分なら、WSLの環境再構築覚悟で、postgresをもう一度インストールするしてみるとか。 それでリカバリされる可能性もありますし。 上手く行かないときは、別フォルダにインストール。 それでもだめならフォルダ削除して再度インストールでしょうか。 同じ状況の事例がネットでも見つけられないので、どうしても試行錯誤になっちゃいますね。
kyotoinrn

2019/02/26 14:01

WSLですが、ふつうのUbuntuとそう変わらないと思うんですが、postgresインストールしてもダメだったんですよね、なぜか… 何はともあれ、ありがとうございました
guest

回答2

0

ベストアンサー

断定はできませんが、

データベースシステムはシャットダウン中に中断されました

上記のリカバリーが動作しようとするも、

ダーティーデータを書き出しできませんでした

という状況で、
リカバリーしようとするも書き込み権限が無く、リカバリできずに終了いているのではないかと思われます。

dataディレクトリに関する書き込み権限が、どのユーザーで有効になっているかなどを確認してみてはどうでしょうか。

pg_ctl — PostgreSQLサーバを初期化、起動、停止、制御する
バックアップからのリカバリが後処理として必須ですが、リカバリーもパスして強制再起動が出来ると良さそうで、$ pg_ctl -o "-F -p 5433" restartが該当するかもしれません。
※試していませんし、あくまで自己責任で。

バックアップがあれば、再インストール後にリストアするのが、最終手段かつ一番確実だと思います。
追記

WSLとのことで、postgresのインスタンス自体はwindowsでも問題ないのであれば、以下が参考になりそうです。
Bash on Ubuntu on Windows で Rails/PostgreSQL の開発環境を構築する [Creators Update 編]

投稿2019/02/25 15:41

編集2019/02/26 05:38
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyotoinrn

2019/02/26 03:41

素早いご返信ありがとうございます。試してみます。
guest

0

時間がたっていますが一応私の解決方法を載せておきます。
すでにある回答でも触れられてるdataディレクトリに問題があると思われるので作り直してしまおうという方法です。
(ただ私もPostgreSQL触り始めたばかりなので間違いがあるかもしれません)

dataディレクトリの場所は多分/etc/postgresql/バージョン名/main/postgresql.confの中の
data_directory = に書かれていると思います。(私はdata_directory = '/var/lib/postgresql/10/main'でした。)

そのディレクトリを削除、または移動などした状態でsudo su - postgresなどでpostgresユーザーになり、
/usr/lib/postgresql/バージョン名/bin/initdb dataディレクトリの場所を行うことでdataディレクトリがまた作られます。(私の場合だと/usr/lib/postgresql/10/bin/initdb /var/lib/postgresql/10/mainとなります。)

私はこれでまた起動するようになったためたぶん行けるのではないかと思います。

投稿2019/04/05 06:48

cometbeet

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問