LOADING...
データを取得中です。少々お待ちください。
LOADING...
データを取得中です。少々お待ちください。
https://www.mongodb.com/docs/manual/release-notes/6.0-compatibility/#legacy-mongo-shell-removed
PRIMARY:レプリカセット中に1台だけ存在する書き込み可能なサーバー。
SECONDARY:Primaryのデータ更新を行う読み取り専用のサーバー。
ARBITER:データは保持せず、Primaryへの昇格投票のみを行うサーバー。自身がPrimaryになることはなく、Arbiterは必須ではない。
(1). レプリケーション(レプリカセット)を構築するにあたり、ディレクトリ構成は以下になります。
(2). 上記のディレクトリ構成に基づき必要なディレクトリを作成します。
(3). docker-compose.ymlファイルを新規作成し、以下を記載して保存します。
※各サーバーの役割はそれぞれ以下になります。
mongodb-primary:PRIMARY
mongodb-secondary:SECONDARY
mongodb-arbiter:ARBITER
(4). 認証鍵(キーファイル)を作成します。
(5). 初期化スクリプトを作成し、以下を記載して保存します。
(6). コンテナを起動します。
(7). コンテナが正しく起動しているか確認します。
(8). 初期化スクリプトを実行します。
mongodb-primary:PRIMARY
mongodb-secondary:SECONDARY
mongodb-arbiter:ARBITER
(1). mongodb-primaryへ接続します。
(2). MongoDBへログインします。
(3). レプリケーション(レプリカセット)の状態を表示します。
(4). 正しくレプリケーション(レプリカセット)設定を行えていた場合は以下のようなステータス(一部抜粋)が表示されます。
※stateStrが各サーバーのレプリケーション(レプリカセット)における役割を示しています。上記のコマンド結果から現在各サーバーに以下の役割が設定されています。
mongodb-primary:PRIMARY
mongodb-secondary:SECONDARY
mongodb-arbiter:ARBITER
(1). mongodb-secondaryへ接続します。
(2). MongoDBへログインします。
(3). mongodb-secondaryで読取操作を行うために以下のコマンドを入力し
ます。
※rs.slaveOk()とrs.secondaryOk()は非推奨になったため上記コマンドを使用しています。
(4). ドキュメントを検索します。
※この時点では検索結果は0件になります。
※(3)のコマンドを事前に実行していないと以下のエラーが表示されます。
MongoServerError: not primary and secondaryOk=false - consider using db.getMongo().setReadPref() or readPreference in the connection string
(5). mongodb-primaryでドキュメントを挿入します。
※ドキュメントを挿入したため検索結果は1件表示されます。
(6). mongodb-secondaryでドキュメントを検索します。
※データが同期され検索結果は1件表示されます。
(1). mongodb-primaryを停止します。
(2). mongodb-primaryが表示されないことを確認します。
(3). mongodb-secondaryへ接続します。
(4). MongoDBへログインします。PRIMARYに昇格したため、replset:PRIMARYと表示されることを確認します。
(5). レプリケーション(レプリカセット)の状態を表示します。
(6). mongodb-secondaryがPRIMARYに昇格していることを確認します。
(1). mongodb-primaryを起動します。
(2). mongodb-primaryが表示されていることを確認します。
(3). mongodb-secondaryへ接続します。
(4). MongoDBへログインします。SECONDARYに降格したため、replset:SECONDARYと表示されることを確認します。
(5). レプリケーション(レプリカセット)の状態を表示します。
(6). mongodb-primaryサーバーが復帰し、PRIMARYとして設定されていることを確認します。
※復帰したmongodb-primaryサーバーをPRIMARYとするかSECONDARYにするかはpriorityにより決定します。
本手順書ではmongodb-primaryサーバーのpriorityを100に設定し、mongodb-secondaryサーバーのpriorityを10に設定しているため、mongodb-primaryサーバーはPRIMARYとして復帰します。
以上で全ての手順は完了になります