🙆

ひとりMongoDB University 12/07 - デーモン / mongod

2020/12/07に公開

この記録は、アドベントカレンダー形式の、MongoDB Universityの学習コースの記録、7日目になります!
ただいまM103を進めています。目標は12/25までにChapter1の完走!

Chapter 1: The Mongod (動画)

まずはMongod (mongod) についての説明の動画。

Mongodってなに?

  • デーモンです
    • デーモンって何?
    • プログラムとして動くプロセスです
    • mongodはMongoDB用のメインのプロセスです
  • mongodの役割は?
    • クライアントからのリクエストを受け取り、MongoDB本体に渡して結果を返します
    • 接続を管理します
    • データの管理をします
    • アクセスコントロールも担います
  • オプション無しで起動した場合は、デフォルトの設定に従って動きます

デフォルトの設定

  • ポート: 27017
  • データの配置場所: /data/db
    • データファイル
    • ジャーナルファイル(クラスタ間の整合性を担保したり、クラッシュ時のリカバリに利用)
  • bind_ip: localhost
    • クライアントはデフォルトで外部サーバからではなく、MongoDBが起動しているのと同じサーバに接続
  • auth: disabled
    • デフォルトでは接続はユーザなどで制限はしていない
    • このため、最初は接続をlocalhostで縛っている

デフォルトではアクセスコントロールは設定されていないので、mongodを起動した際は、WARNINGが出るよ!

...Mongodのプロセスを起動してみよう、起動したmongodに対してmongo (Mongo shell)で接続してみよう、という流れになっているので、確認のためには環境が必要。

MongoDB CommpassやMongoDB Atlas (Webの管理画面)では、プロセスを起動するといったことはできないので、手元に仮想サーバを立ててMongoDBを入れるところまでにする。

Mongo Shellからの操作

  • dbの作成
  • collectionの作成
  • mongodのシャットダウン

Quiz: The Mongod

Problem:

Which of these are default configurations for mongod?

答え

  • mongod listens on port 27017
  • database files are stored in the directory /data/db/

Mongod Options

Mongodの起動オプションについて。概ねhelpを見ていけば良さそうですが、初めて知ることもあるので、その分だけピックアップ。

bind_ip
The bind_ip option allows us to specify which IP addresses mongod should bind to. When mongod binds to an IP address, clients from that address are able to connect to mongod.

bind_ipは、どのIPがmondodがどこからの接続を許可するかを規定するオプションです。
デフォルトはlocalhostのみ。

mongod --dbpath <directory path>

データファイルやジャーナルファイルの格納場所を指定できる。

Lab: Launching Mongod

IDEを使ってmongodを起動してみよう!
このコース向けのブラウザ内IDEは、mongodもmongoコマンドも入っているので、手元でサーバを用意しなくても良かった!
ということでやってみました。

課題

  • mongod をport 27000で起動してみましょう
  • 起動したら、"Run Tests" を実行してみましょう
bash-4.4# mongod
2020-12-07T12:15:59.197+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2020-12-07T12:15:59.210+0000 I CONTROL  [initandlisten] MongoDB starting : pid=343 port=27017 dbpath=/data/db 64-bit host=vKsedEFa15Mf6kQV6I

... [ 中略 ] ...

2020-12-07T12:16:00.334+0000 I INDEX    [LogicalSessionCacheRefresh]     building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2020-12-07T12:16:00.336+0000 I INDEX    [LogicalSessionCacheRefresh] build index done.  scanned 0 total records. 0 secs

起動前

テストはエラーになります。

起動後

テストが通りました!

このままブラウザのみでこのコースは進めることができそうです!
必要に応じてVagrantでサーバを立ててみようと思います。

本日の進捗

Chapter1の5つ分まで進みました!

きょうのzenn

7日目の記事作成。

zenn-contents $ npx zenn new:article --slug 20201207-mongodb-univ
📄20201207-mongodb-univ.md created.

VSCodeを使って書いているので、簡単なプレビュー用のタスクを追加。

.vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "プレビュー",
      "cwd": "${workspaceFolder}",
      "runtimeExecutable": "npx",
      "runtimeArgs": ["zenn", "preview"]
    }
  ]
}

Discussion