MongoDB servisini başlatamadığınızda bu hatayla karşılaşabilirsiniz. Bu hata genellikle servis başlatılamadığında, dosya izinlerinde sorun olduğunda veya veritabanı dosyaları bozulduğunda karşımıza çıkar.
Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xeu mongod.service" for details.
Bu iki komutu sunucunuzda çalıştırın:
sudo rm -rf /tmp/mongodb-27017.sock
sudo service mongod start
Hatanın sebebi ise .sock dosyasındaki kullanıcı izinlerinden dolayıdır, sahibini monogdb kullanıcısı olarak değiştirmeniz gerekebilir.
Bunun için ise:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
Kurulum esnasında anlatılmış. Buradan ziyaret edebilirsiniz.
Kullanıcı izinine dikkat etmelisiniz. Sorununuz üstteki ilk iki komutla çözülmeyebilir. Yapmanız gereken şet “tmp” klasörü içerisindeki mongodb-27017.sock dosyasına erişmek. Kısacası komutlarımız şöyle olacak:
chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock
sudo systemctl restart mongod
sudo systemctl status mongod
Diğer alternatif ise:
1. sudo systemctl stop mongod
2. sudo mongod --repair --dbpath /var/lib/mongodb
3. chown -R mongodb:mongodb /var/lib/mongodb
4. chown mongodb:mongodb /tmp/mongodb-27017.sock
5. sudo systemctl start mongod
Şimdi bu komutları açılayalım.
- sudo rm -rf /tmp/mongodb-27017.sock: MongoDB çalıştığında istemcilerle iletişim kurmak için /tmp klasörü altında bir socket (.sock) dosyası oluşturur. Eğer bu dosya silinmeden kalmışsa veya yanlış izinlere sahipse servis yeniden başlatılamaz. Bu komut dosyayı siler.
- sudo service mongod start: MongoDB servisinin yeniden başlatılmasını sağlar.
- sudo chown -R mongodb:mongodb /var/lib/mongodb: MongoDB verilerinin tutulduğu dizinin (default olarak /var/lib/mongodb) sahipliğini mongodb kullanıcısına verir. MongoDB servisinin bu dosyalara erişmesi için gereklidir.
- sudo chown mongodb:mongodb /tmp/mongodb-27017.sock: Socket dosyasının sahipliğini MongoDB’ye atar.
- sudo mongod –repair –dbpath /var/lib/mongodb: Eğer veritabanı düzgün kapanmadıysa veya dosya bozulduysa, bu komut onarım yapar.
- sudo systemctl status mongod: Servisin çalışıp çalışmadığını, hata mesajlarını görmenizi sağlar.
- journalctl -xeu mongod: Daha detaylı log kayıtlarını görüntülemek için kullanılır.
.sock dosyası, Unix domain socket dosyasıdır. MongoDB istemci-sunucu arasındaki iletişimi bu dosya üzerinden sağlar (özellikle aynı sunucu içinden bağlantılar için). Eğer bu dosya silinmeden kalmışsa MongoDB açılmaz. Yanlış kullanıcıya aitse erişim reddedilir.
Servis sorunu hala çözülmüyorsa, sunucu disk taraması yaptırmalısınız.
Ayrıca servis sorununun sebebi /var/lib/mongodb/WiredTiger.turtle dosyasındaki izin sorunundan kaynalı olabilir. Şayet bu dosyanın izni “root” üzerinde görünüyorsa sorun oluşturur. Buradaki izin mongodb:mongodb olmalı.

Buradaki izinleri chmod ile düzenledikten sonra servisi yeniden çalıştırmayı deneyin.
WiredTiger.turtle, MongoDB’nin WiredTiger storage engine için kullandığı özel bir dosyadır. İçinde veritabanının metadata bilgileri bulunur. MongoDB başlatılırken ilk okunan dosyalardan biridir.Eğer bu dosya root gibi yanlış bir kullanıcıya aitse veya bozulmuşsa servis açılmaz.
Kaynaklar:
https://www.mongodb.com/community/forums/t/what-are-the-content-in-wiredtiger-turtle-and-wiredtiger-wt-files/326759
https://www.mongodb.com/docs/manual/reference/program/mongod
https://mongoc.org/libmongoc/1.5.4/advanced-connections.html
Yorum bırakın