mongoDBが起動しない(Could not connect to a primary node for replica set)
環境
現象
Rails 4.2 x mongoDBのアプリをつくろうと思ったのですが、
rootのページを表示しようとしたときにいきなり以下のエラーになりました。
Error (Could not connect to a primary node for replica set #<Moped::Cluster:70060993022780 @seeds=[<Moped::Node resolved_address="0.0.0.0:27017">]>)
あれ?と思って、mongodbを再起動してみます。
$ sudo service mongod restart mongod stop/waiting mongod start/running, process 1971
正常に再起動してるっぽいけど、状況はかわりません...
で、mongoのログを確認。
/var/log/mongodb/mongod.log
2015-07-27T09:44:55.215+0900 I CONTROL ***** SERVER RESTARTED ***** 2015-07-27T09:44:55.241+0900 W - [initandlisten] Detected unclean shutdown - /var/lib/mongodb/mongod.lock is not empty. 2015-07-27T09:44:55.253+0900 I JOURNAL [initandlisten] journal dir=/var/lib/mongodb/journal 2015-07-27T09:44:55.253+0900 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2015-07-27T09:44:55.253+0900 I JOURNAL [initandlisten] 2015-07-27T09:44:55.253+0900 E JOURNAL [initandlisten] Insufficient free space for journal files 2015-07-27T09:44:55.253+0900 I JOURNAL [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles 2015-07-27T09:44:55.253+0900 I JOURNAL [initandlisten] 2015-07-27T09:44:55.253+0900 I STORAGE [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating 2015-07-27T09:44:55.253+0900 I CONTROL [initandlisten] now exiting 2015-07-27T09:44:55.253+0900 I NETWORK [initandlisten] shutdown: going to close listening sockets... 2015-07-27T09:44:55.253+0900 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock 2015-07-27T09:44:55.253+0900 I NETWORK [initandlisten] shutdown: going to flush diaglog... 2015-07-27T09:44:55.253+0900 I NETWORK [initandlisten] shutdown: going to close sockets... 2015-07-27T09:44:55.253+0900 I STORAGE [initandlisten] shutdown: waiting for fs preallocator... 2015-07-27T09:44:55.253+0900 I STORAGE [initandlisten] shutdown: final commit... 2015-07-27T09:44:55.253+0900 I STORAGE [initandlisten] shutdown: closing all files... 2015-07-27T09:44:55.253+0900 I STORAGE [initandlisten] closeAllFiles() finished 2015-07-27T09:44:55.253+0900 I CONTROL [initandlisten] dbexit: rc: 100
journalを利用するには少なくとも3379MBは必要とのこと。
解決方法
そもそも開発環境ではjournalはいらないので、設定でjournalを無効にしました。
/etc/mongod.conf
# Disables write-ahead journaling # nojournal = true ↓ nojournal = true
mongodbを再起動したら、今度は無事root画面を表示できました!