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.