ひとりMongoDB University 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']
-
https://docs.mongodb.com/manual/reference/method/db.serverStatus/index.html
-
Returns a document that provides an overview of the database process’s state.
- データベースプロセスの大枠のデータを提示してくれる
-
概ね
rs.isMaster()
の出力結果と同じ
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
単体での起動の時:
- localデータベースはコレクションを1つだけ持ちます
- startup_logコレクション
- Ref: https://docs.mongodb.com/manual/reference/local-database/#local.startup_log
レプリカセットでの起動の時:
- localデータベースはコレクションを複数持ちます
- Ref: https://docs.mongodb.com/manual/reference/local-database/#collections-on-replica-set-members
主なもの
-
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
いつも通りですが、おかげさまで毎日ちょっとずつ書けています!
-
M103: Basic Cluster Administration のコースになります。コースを開始すると、完了までの期限は2ヶ月以内です。 ↩︎
Discussion