MongoDB, Mac OS 10.15'e (Catalina) yükselttikten sonra veri dizinini bulamıyor


61

Bugün MacOS 10.15'e (Catalina) güncelledim. mongodTerminalde çalıştırdığımda /data/dbdizini bulamıyorum :

  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] MongoDB starting : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] build environment:
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] options: {}
2019-10-08T17:02:44.211+0800 I STORAGE  [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] now exiting
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] shutting down with code:100
  /Users/william > 

MongoDB'yi yüklemeye çalıştım brew:

brew install mongodb

  /Users/william > brew install mongodb
Updating Homebrew...
Error: mongodb: unknown version :mountain_lion

Herhangi bir yardım?

Yanıtlar:


91

Ana hata budur:

initAndListen'de istisna: NonExistentPath: Veri dizini / data / db bulunamadı., sonlandırma

Catalina'nun sürpriz bir değişikliği var: kök dizinde değişiklik yapılmasına izin vermiyor (bu bir forum başlığında da tartışıldı ):

% sudo mkdir -p /data/db
mkdir: /data/db: Read-only file system

Ne yazık ki, bu, Catalina özelliklerinde kısa bir açıklama dışında, Apple'ın Catalina sürüm notlarında açıkça belirtilmemiştir :

macOS Catalina özel, salt okunur bir sistem biriminde çalışır

Dizin /data/dbMongoDB varsayılanı olarak kodlandığından, geçici bir çözüm dbpathkök dizinde bulunmayan farklı bir değer belirtmektir . Örneğin:

mongod --dbpath ~/data/db

Bu, MongoDB'nin verilerini ana dizininize yerleştirir. Sadece yolun ~/data/dbgerçekten var olduğundan emin olun .

Alternatif yöntem

Alternatif bir yöntem talimatları takip etmektir MacOS yükle MongoDB Topluluk Sürümü yararlanarak brew:

brew tap mongodb/brew
brew install mongodb-community

Bu, varsayılan olarak bazı ek dosyalar oluşturur:

  • yapılandırma dosyası (/usr/local/etc/mongod.conf)
  • günlük dizini yolu (/ usr / local / var / log / mongodb)
  • veri dizini yolu (/ usr / local / var / mongodb)

Çalıştırmak için mongod:

  • Komutu komut satırından manuel olarak çalıştırın (kolaylık sağlamak için bu ad değiştirilebilir):

    mongod --config /usr/local/etc/mongod.conf
  • MongoDB'yi kullanarak bir hizmet olarak çalıştırın brew services. Bunun MongoDB'yi bağımsız bir düğüm olarak (çoğaltma kümesi değil) çalıştıracağını unutmayın, bu nedenle oplog'a bağlı özelliklerin, örneğin changestreams'i mongodyapılandırma dosyasını değiştirmedikçe çalışmayacaktır :

    brew services start mongodb-community

Cevabınız için teşekkür ederiz, bash_profile içinde dbpath yapılandırmak için herhangi bir yöntem var mı? böylece her seferinde db yolu ile mongod çalıştırmaya gerek yoktur.
Madhavan Sundararaj

Sanırım, güncellemeden sonra, OS mongodb altında bulunan OS / data / db klasörünü sildi
Madhavan Sundararaj

1
@MadhavanSundararaj mongodb --dbpath ...sadece mongodbash yazarak çalıştırmak istiyorsanız , sizin gibi bir takma ad kullanabilir alias mongod='mongod --dbpath ...'ve bu takma adı koyabilirsiniz bashrc. En temiz çözüm değil, ancak sizin amaçlarınız için işe yarayabilir.
kevinadi

son macOS zsh kullanmıyor mu? öyleyse, hala .bashrc kullanıyor mu? Yukarıda önerilen takma ad beklendiği gibi çalışmadığı için
Madhavan Sundararaj

1
@MadhavanSundararaj zshveya başka bir kabuk için, diğer adı bu kabuğun rc dosyasının altına koymanız gerekir. İçin zshbu kadar ~/.zshrc. Diğer ad oluşturma işleminde kabuğun söz dizimini de izlediğinizden emin olun.
kevinadi

61

Catalina'yı yükledikten sonra, Masaüstünüzde adlı bir klasörünüz olabilir Relocated Items. data/dbKlasörü klasörün içinde bulabilirsiniz Security.

Yapmam gereken tek şey Security/data/db, özellikle taşımak data/dbve ana klasöre yerleştirmekti.

Bunu aşağıdaki komutu çalıştırarak Finder uygulamasıyla veya terminalle yapabilirsiniz:

sudo mv /Users/Shared/Relocated\ Items/Security/data ~/

Bu çalışmadan sonra: mongod --dbpath ~/data/db

Takma adı daha önce oluşturmak size kalmış


6
Catalina güncellemesinin tüm verilerimi silebileceği konusunda neredeyse delirdim. Beni delilikten kurtardığın için teşekkürler!
Adam Bubela

1
Teşekkürler @MarnixHarderwijk, benim için çalışıyor.
Zeeyed


Mongod komutunu çalıştırdığımda, geliştirici doğrulanamadığı için “mongod” açılamıyor.
Raz


7

Kevinadi soruya zaten adalet yaptı, ancak sorunu şu şekilde çözdüm :

Mongodb-topluluğu kurduktan sonra

  1. sudo mkdir -p /System/Volumes/Data/data/db (Data / db klasörü oluşturun)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(İzin ver)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Mongodb'un db yolunu değiştirin)
  4. mongod (İyi çalışır)

Mongodb kurulumuyla ilgili bu makaleyi çok yararlı buldum


Bu sorunu çözmeye çalışırken 1 gün sonra yardımcı oldu! Makale dbpath değişen bahsetmiyorum ve ben eksikti bu
mhlavacka


1

İşte benim için işe yarayan:

  1. Bir yerde klasör oluşturun örn. Development / mongodb / data / db
  2. Mongod.conf dosyasını açın ve storage.dbPath değerini yeni oluşturulan klasör yoluna güncelleyin

1
mongod.conf dosyası nerede ??
ValRob

2
Varsayılan dosyadır. Bu bağlantıya gidin: docs.mongodb.com/manual/reference/configuration-options ve ardından "Yapılandırma Dosyası"
rolu


0

Mac sürümü Catalina artık kök klasörün yazılabilir olmadığını yaptı.

Brew, yeni bir yol kullanmak için güncellenmiş bir mongodb sürümüne sahiptir (bu da kendisini oluşturur) /usr/local/var/mongodbve bu talimatları izlemek sorunu çözecektir:

Güncellenmiş mongodb-community-edition kurulum kılavuzu

brew install mongodb-community@VERSION düzeltmeyle birlikte ilk SÜRÜM 4.2


Yukarıdaki komut sudo ile yürütülmelidir. Sonra dbPath yapılandırmasına saygı duyulur. Aksi takdirde /data/db, yapılandırma ne olursa olsun mongo varsayılan olarak kalır .
Matt Hagemann
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.