Mongoレプリカセットに追加する新しいバックアップサーバーがあります。私が知る限り、レプリカセットプライマリにログオンし、次のコマンドを追加するだけで簡単です。
rs.add( { Host: "mongobackup:10003", priority: 0, votes: 0, hidden: true } )
私の理解では、そうすることで、プライマリーはすべての構成とデータを新しいノードと同期するはずです。
さらに、レプリカセットから削除したい古いバックアップサーバーがあります。これは、次のコマンドをレプリカセットのプライマリに入力するだけです。
rs.remove( "oldmongobackup:10003" )
他に欠けているものはありますか?
rs2:PRIMARY> rs.conf()
{
"_id" : "rs2",
"version" : 26,
"members" : [
{
"_id" : 7,
"Host" : "mongo03:10001",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 20,
"tags" : {
"dc" : "maid"
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 8,
"Host" : "mongo01:10002",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 10,
"tags" : {
"dc" : "maid"
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 9,
"Host" : "mongo02:10003",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 10,
"Host" : "oldmongobackup:10003",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : true,
"priority" : 0,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatTimeoutSecs" : 10,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}
}
}
コマンドは正常に実行されるはずです。なぜ ???
rs.add()
とrs.remove()
はそれぞれ選挙をトリガーする必要があります。残りのノードの優先順位には一意の値があるため、次のようになります。
_id : 7
なので priority : 20
_id : 8
なので priority : 10
_id : 9
なので priority : 1
あなたは選挙が不正であると言うことができます。プライマリノードはプライマリのままである必要があります。