1. ホーム
  2. mongodb

[解決済み] Mac OS 10.15にアップグレードしたらMongoDBがデータディレクトリを見つけられなくなった (Catalina)

2023-06-20 04:56:35

質問

今日、MacOS 10.15 (Catalina) にアップデートしました。このとき mongod をターミナルで実行すると /data/db ディレクトリが見つかりません。

➜  /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をインストールしようとしたところ brew :

brew install mongodb

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

何かお手伝いできることはありますか?

どのように解決するのですか?

これが主なエラーです。

initAndListen で例外が発生しました。NonExistentPath: データディレクトリ /data/db が見つかりません。

Catalina には驚くべき変更がありました。ルートディレクトリへの変更を許可しないのです (これについては フォーラムスレッド でも議論されました)。

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

残念ながら、これは Apple の Catalina リリース ノート で簡単に触れているほかは Catalina の機能 :

macOS Catalina は、専用の読み取り専用システムボリュームで実行されます。

ディレクトリのため /data/db は MongoDB のデフォルトとしてコード化されているので、 回避するには別の dbpath を指定することです。たとえば

mongod --dbpath ~/data/db

これでMongoDBのデータがホームディレクトリに配置されます。ただ、パスが ~/data/db が実際に存在することを確認してください。

代替方法

別の方法として、次の手順で行います。 macOSにMongoDBコミュニティーエディションをインストールする を活用することで brew :

brew tap mongodb/brew
brew install mongodb-community

これは、デフォルトでいくつかの追加ファイルを作成します。

  • 設定ファイル (/usr/local/etc/mongod.conf)
  • ログディレクトリのパス(/usr/local/var/log/mongodb)
  • データディレクトリのパス(/usr/local/var/mongodb)

実行するには mongod を実行するには、次のどちらかを行います。

  • コマンドラインから手動でコマンドを実行します (これは便宜上エイリアスにすることができます)。

    mongod --config /usr/local/etc/mongod.conf
    
    
  • MongoDBをサービスとして動作させるには brew services . これは MongoDB を (レプリカセットではなく) 独立したノードとして実行するので、 たとえばチェンジストリームなど oplog に依存する機能は mongod 設定ファイルを変更しない限り動作しません。

    brew services start mongodb-community