成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MongoDB副本集調整節點

數據庫 MongoDB
在本文中,我們將探討如何在一個已經包含三個數據節點的副本集集群中,添加一個仲裁節點,并同時刪除原先的一個數據節點。

MongoDB的副本集(Replica Set)是一個高可用性、可擴展性和冗余性的數據庫解決方案。它能夠確保數據庫的高可用性,同時保障了數據的安全性。在本文中,我們將探討如何在一個已經包含三個數據節點的副本集集群中,添加一個仲裁節點,并同時刪除原先的一個數據節點。

1、副本集的基本概念

MongoDB副本集由多個數據節點+若干個仲裁節點(可以沒有)組成,其中一個數據節點被選舉為主節點(Primary),其余節點為次要節點(Secondary)。在故障時,副本集會自動進行主節點的切換,確保服務的高可用性。副本集中的仲裁節點(Arbiter)不存儲數據,僅用于選舉過程,幫助副本集進行決策。

例如,當前配置一個3節點的數據節點集群,組件集群命令如下:

> use admin
> rs.initiate( {_id: "test1",members: [{ _id: 0, host: "192.168.122.36:27017" },{ _id: 1, host: "192.168.122.36:27018" },{ _id: 2, host: "192.168.122.36:27019" } ] })

圖片

查看狀態:

test1:PRIMARY> use admin
switched to db admin
test1:PRIMARY> rs.status()
{
        "set" : "test1",
        "date" : ISODate("2023-10-23T02:31:02.345Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 2,
        "writeMajorityCount" : 2,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1698028254, 1),
                        "t" : NumberLong(1)
                },
                "lastCommittedWallTime" : ISODate("2023-10-23T02:30:54.919Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1698028254, 1),
                        "t" : NumberLong(1)
                },
                "readConcernMajorityWallTime" : ISODate("2023-10-23T02:30:54.919Z"),
                "appliedOpTime" : {
                        "ts" : Timestamp(1698028254, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1698028254, 1),
                        "t" : NumberLong(1)
                },
                "lastAppliedWallTime" : ISODate("2023-10-23T02:30:54.919Z"),
                "lastDurableWallTime" : ISODate("2023-10-23T02:30:54.919Z")
        },
        "lastStableRecoveryTimestamp" : Timestamp(1698028224, 3),
        "lastStableCheckpointTimestamp" : Timestamp(1698028224, 3),
        "electionCandidateMetrics" : {
                "lastElectionReason" : "electionTimeout",
                "lastElectionDate" : ISODate("2023-10-23T02:30:24.838Z"),
                "electionTerm" : NumberLong(1),
                "lastCommittedOpTimeAtElection" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "lastSeenOpTimeAtElection" : {
                        "ts" : Timestamp(1698028214, 1),
                        "t" : NumberLong(-1)
                },
                "numVotesNeeded" : 2,
                "priorityAtElection" : 1,
                "electionTimeoutMillis" : NumberLong(10000),
                "numCatchUpOps" : NumberLong(0),
                "newTermStartDate" : ISODate("2023-10-23T02:30:24.912Z"),
                "wMajorityWriteAvailabilityDate" : ISODate("2023-10-23T02:30:25.497Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.122.36:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 183,
                        "optime" : {
                                "ts" : Timestamp(1698028254, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T02:30:54Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "could not find member to sync from",
                        "electionTime" : Timestamp(1698028224, 1),
                        "electionDate" : ISODate("2023-10-23T02:30:24Z"),
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "192.168.122.36:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 47,
                        "optime" : {
                                "ts" : Timestamp(1698028254, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1698028254, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T02:30:54Z"),
                        "optimeDurableDate" : ISODate("2023-10-23T02:30:54Z"),
                        "lastHeartbeat" : ISODate("2023-10-23T02:31:00.889Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T02:31:01.443Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "192.168.122.36:27017",
                        "syncSourceHost" : "192.168.122.36:27017",
                        "syncSourceId" : 0,
                        "infoMessage" : "",
                        "configVersion" : 1
                },
                {
                        "_id" : 2,
                        "name" : "192.168.122.36:27019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 47,
                        "optime" : {
                                "ts" : Timestamp(1698028254, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1698028254, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T02:30:54Z"),
                        "optimeDurableDate" : ISODate("2023-10-23T02:30:54Z"),
                        "lastHeartbeat" : ISODate("2023-10-23T02:31:00.890Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T02:31:01.446Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "192.168.122.36:27017",
                        "syncSourceHost" : "192.168.122.36:27017",
                        "syncSourceId" : 0,
                        "infoMessage" : "",
                        "configVersion" : 1
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1698028254, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1698028254, 1)
}

此時可以用一個程序驗證集群的可用情況:

from pymongo import MongoClient
from pymongo.errors import ConnectionFailure


# MongoDB副本集的連接信息
replica_set = "test1"
mongo_host = ["192.168.122.36:27017", "192.168.122.36:27018", "192.168.122.36:27019"]  # 主機和端口號列表


# 嘗試連接MongoDB副本集
try:
    client = MongoClient(mongo_host, replicaSet=replica_set, serverSelectinotallow=5000)
    db = client["testdb"]
    print("Successfully connected to MongoDB replica set.")
    collection = db['test1']
    data = {"b":2}
    result = collection.insert_one(data)




except ConnectionFailure:
    print("Failed to connect to MongoDB replica set. Please check your connection settings.")

運行結果如下:

圖片

查看數據庫中運行結果:

圖片


2、添加節點

要添加一個仲裁節點,我們需要在現有副本集中的任一節點上執行如下操作:

rs.add( { host: "IP:PORT", arbiterOnly:true } )

執行這個命令后,MongoDB將會在副本集中添加一個仲裁節點,增加了選主的穩定性,同時不會增加數據存儲的壓力。具體實際案例如下

test1:PRIMARY> use  admin
switched to db admin
test1:PRIMARY> rs.add( { host: "192.168.122.36:27020", arbiterOnly:true } )
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1698030806, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1698030806, 1)
}
test1:PRIMARY> rs.status();
{
        "set" : "test1",
        "date" : ISODate("2023-10-23T03:13:32.511Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 3,
        "writeMajorityCount" : 3,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1698030806, 1),
                        "t" : NumberLong(1)
                },
                "lastCommittedWallTime" : ISODate("2023-10-23T03:13:26.379Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1698030806, 1),
                        "t" : NumberLong(1)
                },
                "readConcernMajorityWallTime" : ISODate("2023-10-23T03:13:26.379Z"),
                "appliedOpTime" : {
                        "ts" : Timestamp(1698030806, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1698030806, 1),
                        "t" : NumberLong(1)
                },
                "lastAppliedWallTime" : ISODate("2023-10-23T03:13:26.379Z"),
                "lastDurableWallTime" : ISODate("2023-10-23T03:13:26.379Z")
        },
        "lastStableRecoveryTimestamp" : Timestamp(1698030805, 1),
        "lastStableCheckpointTimestamp" : Timestamp(1698030805, 1),
        "electionCandidateMetrics" : {
                "lastElectionReason" : "electionTimeout",
                "lastElectionDate" : ISODate("2023-10-23T02:30:24.838Z"),
                "electionTerm" : NumberLong(1),
                "lastCommittedOpTimeAtElection" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "lastSeenOpTimeAtElection" : {
                        "ts" : Timestamp(1698028214, 1),
                        "t" : NumberLong(-1)
                },
                "numVotesNeeded" : 2,
                "priorityAtElection" : 1,
                "electionTimeoutMillis" : NumberLong(10000),
                "numCatchUpOps" : NumberLong(0),
                "newTermStartDate" : ISODate("2023-10-23T02:30:24.912Z"),
                "wMajorityWriteAvailabilityDate" : ISODate("2023-10-23T02:30:25.497Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.122.36:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 2733,
                        "optime" : {
                                "ts" : Timestamp(1698030806, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T03:13:26Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1698028224, 1),
                        "electionDate" : ISODate("2023-10-23T02:30:24Z"),
                        "configVersion" : 2,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "192.168.122.36:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 2597,
                        "optime" : {
                                "ts" : Timestamp(1698030806, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1698030806, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T03:13:26Z"),
                        "optimeDurableDate" : ISODate("2023-10-23T03:13:26Z"),
                        "lastHeartbeat" : ISODate("2023-10-23T03:13:32.393Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T03:13:32.420Z"),
                        "pingMs" : NumberLong(1),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 2
                },
                {
                        "_id" : 2,
                        "name" : "192.168.122.36:27019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 2597,
                        "optime" : {
                                "ts" : Timestamp(1698030806, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1698030806, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T03:13:26Z"),
                        "optimeDurableDate" : ISODate("2023-10-23T03:13:26Z"),
                        "lastHeartbeat" : ISODate("2023-10-23T03:13:32.393Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T03:13:32.445Z"),
                        "pingMs" : NumberLong(1),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 2
                },
                {
                        "_id" : 3,
                        "name" : "192.168.122.36:27020",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 6,
                        "lastHeartbeat" : ISODate("2023-10-23T03:13:32.405Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T03:13:32.455Z"),
                        "pingMs" : NumberLong(4),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 2
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1698030806, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1698030806, 1)
}

此時修改python中程序(插入的數據),運行結果如下:

圖片


3、刪除數據節點


如果你需要刪除一個數據節點,首先,你要確保副本集的健康狀態,然后執行如下操作來刪除一個Secondary節點。

rs.remove("IP:PORT");

執行這個命令后,MongoDB將從副本集中移除該數據節點,副本集會重新進行選舉,確保副本集的高可用性。

test1:PRIMARY> rs.remove("192.168.122.36:27019")
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1698038888, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1698038888, 1)
}
test1:PRIMARY> rs.status
function() {
    return db._adminCommand("replSetGetStatus");  # 選舉中
}
test1:PRIMARY> rs.status()
{
        "set" : "test1",
        "date" : ISODate("2023-10-23T05:28:15.398Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 2,
        "writeMajorityCount" : 2,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1698038888, 1),
                        "t" : NumberLong(1)
                },
                "lastCommittedWallTime" : ISODate("2023-10-23T05:28:08.335Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1698038888, 1),
                        "t" : NumberLong(1)
                },
                "readConcernMajorityWallTime" : ISODate("2023-10-23T05:28:08.335Z"),
                "appliedOpTime" : {
                        "ts" : Timestamp(1698038888, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1698038888, 1),
                        "t" : NumberLong(1)
                },
                "lastAppliedWallTime" : ISODate("2023-10-23T05:28:08.335Z"),
                "lastDurableWallTime" : ISODate("2023-10-23T05:28:08.335Z")
        },
        "lastStableRecoveryTimestamp" : Timestamp(1698038845, 1),
        "lastStableCheckpointTimestamp" : Timestamp(1698038845, 1),
        "electionCandidateMetrics" : {
                "lastElectionReason" : "electionTimeout",
                "lastElectionDate" : ISODate("2023-10-23T02:30:24.838Z"),
                "electionTerm" : NumberLong(1),
                "lastCommittedOpTimeAtElection" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "lastSeenOpTimeAtElection" : {
                        "ts" : Timestamp(1698028214, 1),
                        "t" : NumberLong(-1)
                },
                "numVotesNeeded" : 2,
                "priorityAtElection" : 1,
                "electionTimeoutMillis" : NumberLong(10000),
                "numCatchUpOps" : NumberLong(0),
                "newTermStartDate" : ISODate("2023-10-23T02:30:24.912Z"),
                "wMajorityWriteAvailabilityDate" : ISODate("2023-10-23T02:30:25.497Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.122.36:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 10816,
                        "optime" : {
                                "ts" : Timestamp(1698038888, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T05:28:08Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1698028224, 1),
                        "electionDate" : ISODate("2023-10-23T02:30:24Z"),
                        "configVersion" : 3,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "192.168.122.36:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 10680,
                        "optime" : {
                                "ts" : Timestamp(1698038888, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1698038888, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2023-10-23T05:28:08Z"),
                        "optimeDurableDate" : ISODate("2023-10-23T05:28:08Z"),
                        "lastHeartbeat" : ISODate("2023-10-23T05:28:14.347Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T05:28:15.388Z"),
                        "pingMs" : NumberLong(1),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 3
                },
                {
                        "_id" : 3,
                        "name" : "192.168.122.36:27020",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 8088,
                        "lastHeartbeat" : ISODate("2023-10-23T05:28:14.342Z"),
                        "lastHeartbeatRecv" : ISODate("2023-10-23T05:28:14.369Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 3
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1698038888, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1698038888, 1)
}

注意:復制集將會短暫的關閉連接并進入選舉,選舉出一個新的主節點。接口將會自動重連。接口可能將會報錯 DBClientCursor::init call() failed 。

責任編輯:姜華 來源: 數據庫干貨鋪
相關推薦

2023-03-14 23:24:27

Mongodb副本集架構

2013-01-29 10:45:19

MongoDB

2018-12-13 09:09:49

MongoDB運維部署

2023-11-28 16:35:40

MongoDB遷移Oplog

2019-10-11 10:52:42

Web架構MongoDB

2024-05-20 09:51:53

MongoDB數據庫管理數據庫服務器

2020-06-01 16:05:17

MongoDB復制集數據庫

2023-04-18 08:45:28

MongoDB部署模式

2015-12-21 16:59:16

2025-06-09 07:30:00

Kubernetes節點自動伸縮集群

2012-07-27 10:39:16

MongoDB

2009-06-12 09:03:30

Linuxinode節點數量調節

2022-06-21 14:02:29

MongoDB數據庫存儲

2016-12-20 07:59:51

系統OS

2020-07-09 08:26:42

Kubernetes容器開發

2019-11-04 10:37:53

MongoDB宕機日志

2020-05-19 11:46:50

MongoDB圖形開源

2022-02-25 08:02:41

集群ceph16集群恢復

2009-08-21 10:30:45

杜比音響耳機

2013-09-27 11:14:09

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产中文字幕在线观看 | 久久久久久亚洲精品 | 91精品国产一区 | 精品一区二区久久久久久久网站 | 国产99在线 | 欧美 | 在线伊人网 | 伊色综合久久之综合久久 | 国产精品久久 | 国产一区二区视频在线 | 中文字幕高清av | 亚洲精品视频在线播放 | 亚洲精品91 | 国产亚洲成av人片在线观看桃 | 一区二区三区四区av | 蜜桃综合在线 | 日韩在线精品视频 | 黄色片在线网站 | 免费在线性爱视频 | 国产毛片久久久 | 久久一二 | 亚洲一区二区在线电影 | 亚洲入口| 欧美日韩一区不卡 | 午夜视频在线 | 国产精品1区2区 | 最新超碰 | 日本黄色片免费在线观看 | 国产91一区 | 国产精品久久久久不卡 | 操人网站| 国产丝袜一区二区三区免费视频 | 亚洲精品短视频 | 国产九九av| 日本精品久久久久久久 | 国产探花| 黄色一级毛片免费看 | 中文字幕在线网 | 九九九视频在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 精品成人一区二区 | 欧美日韩精品一区 |