🗂

ひとりMongoDB University 12/23 - レプリケーション関連コマンド

2020/12/23に公開

この記録は、アドベントカレンダー形式の、MongoDB Universityの学習コースの記録、23日目になります!
ただいまコース: M103[1]を進めています。Chapter2を1日3つぐらいずつ進めたい。
25日までに15stepが目標です。

Chapter 2: Replication Commands (動画)

今回はレプリカセットの情報を収集するためのコマンドについて。
レプリカセットはたくさんの情報を持っており、また、情報の観点もさまざままことから、いくつかのコマンドがあります。

1. rs.status()

Returns the replica set status from the point of view of the member where the method is run. This method provides a wrapper around the replSetGetStatus command.
replSetGetStatusコマンドのラッパーで、このコマンドをどのメンバー上で実行したかという観点を元にデータを収集&表示する

This output reflects the current status of the replica set, using data derived from the heartbeat packets sent by the other members of the replica set.
このコマンドの出力は、レプリカセットのステータスも表示してくれる。各メンバーのステータスはハードビートを元に判断できる。

  • 各ノードのステータスを収集してくれる

    • 正しく、問題なく稼働しているかどうか(healthyかどうか)
    • プライマリからその他のnodeへのハードビートの情報
  • Memberがプライマリノードの場合

    • uptime
    • 最新のoplogへの書き出し時間
    • ハードビートの実行感覚
  • Memberがセカンダリノードの場合

    • 直前のハートビートの時間

などなど....

2. rs.isMaster()

  • プリカセットのノードのロールを提示してくれる。
  • rs.status() よりは結果は短い
  • プライマリノードで実行した場合は、isMaster: true になる

3. db.serverStatus()['repl']

4. rs.printReplicationInfo()

  • そのノードのoplogの情報を返してくれる
    - 全てのデータではなく、oplogの最初のイベント時刻と最新のイベント時刻を返す

Chapter 2: Replication Commands(クイズ)

Problem

What information can be obtained from running rs.printReplicationInfo()?
rs.printReplicationInfo()を実行するとどんな情報が取れますか?

こたえ

  • The time of the earliest entry in the oplog.
  • The time of the latest entry in the oplog.

※イベント時刻のみで、処理内容をしゅとくするわけじゃないよ!

Chapter 2: Local DB: Part 1(動画)

関連: https://docs.mongodb.com/manual/reference/local-database/

Every mongod instance has its own local database, which stores data used in the replication process, and other instance-specific data. The local database is invisible to replication: collections in the local database are not replicated.

  • 全てのmongodインスタンスは、それ自身のlocalデータベースを持ちます
  • ここには、レプリケーションプロセスや、インスタンスごとに特化した情報が保持されます
  • ローカルデータベースは、レプリケーション間では見えないようになっています
    • つまり、local databaseの内容はレプリケーションの対象にはなりません

localデータベースは学習を通して何回も出てきましたが、ここで初めて詳細が!

local databaseにアクセスしてみる

動画に沿ってコマンドを打ってみます(レプリケーション構成でなくてもlocalデータベースは存在するので)

# Dockerを使ってMongoDBのコンテナを起動してから
mondgo

# 接続後
> use local
switched to db local
> show collections
startup_log

単体での起動の時:

レプリカセットでの起動の時:

主なもの

  • me

  • local.replset.minvalid

  • local.replset.election

  • local.oplog.rs

  • local.system.replset

  • local.system.rollback.id

  • local.startup_log

  • oplog.rsはレプリケーションメカニズムの中でも、重要なものになります

  • これは、oplogのコレクションに該当します

今日の進捗

Localデータベースの1つめまで。3つ進みました。

きょうのzenn

いつも通りですが、おかげさまで毎日ちょっとずつ書けています!

脚注
  1. M103: Basic Cluster Administration のコースになります。コースを開始すると、完了までの期限は2ヶ月以内です。 ↩︎

Discussion