日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當前位置:軟件下載吧 > 數據庫 > DB2 > MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName

MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName

時間:2024-02-08 11:17作者:下載吧人氣:31

mongodb單臺服務器
數據會有丟失的風險
單臺服務器無法做高可用性
mongodb副本集能夠預防數據丟失,多臺mongodb數據一致
mongodb副本集能夠在有問題的時候自動切換

實戰說明
使用三臺服務器實戰mongodb副本集,生產環境中建議至少三臺服務器,本次使用三個容器
docker run –name mongo1 –privileged –ip 172.18.0.10 -p 30122:22 -p 27117:27117 -v /data/docker_data/Mongo1:/data –network=n-mongo -itd centos7 /usr/sbin/init
docker run –name mongo2 –privileged –ip 172.18.0.11 -p 30222:22 -p 27217:27217 -v /data/docker_data/Mongo2:/data –network=n-mongo -itd centos7 /usr/sbin/init
docker run –name mongo3 –privileged –ip 172.18.0.12 -p 30322:22 -p 27317:27317 -v /data/docker_data/Mongo3:/data –network=n-mongo -itd centos7 /usr/sbin/init

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dccec9ff0da centos7 “/usr/sbin/init” 4 hours ago Up 6 seconds 0.0.0.0:27317->27317/tcp, 0.0.0.0:30322->22/tcp mongo3
b48bee1209ef centos7 “/usr/sbin/init” 4 hours ago Up 3 seconds 0.0.0.0:27217->27217/tcp, 0.0.0.0:30222->22/tcp mongo2
5e7b4039fa6f centos7 “/usr/sbin/init” 4 hours ago Up 4 seconds 0.0.0.0:27117->27117/tcp, 0.0.0.0:30122->22/tcp mongo1

三臺服務器的ip為:
172.18.0.10
172.18.0.11
172.18.0.12
集群搭建實戰
172.18.0.10:27117
172.18.0.11:27217
172.18.0.12:27317

主節點模擬數據
for(i=1; i<=10000;i++){
db.myuser.insert( {name:’mytest’+i, age:i} )
}

解壓 mongodb
【mongo1、mongo2、mongo3】
創建 data logs 目錄

mongodb副本集配置文件
mongo1
[root@685e6baa229d mongodb]# more mongod.cnf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/logs/mongodb.log
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
processManagement:
fork: true
net:
port: 27117
bindIp: 0.0.0.0
replication:
replSetName: replSet
mongo2
[root@685e6baa229d mongodb]# more mongod.cnf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/logs/mongodb.log
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
processManagement:
fork: true
net:
port: 27217
bindIp: 0.0.0.0
replication:
replSetName: replSet

mongo3
[root@685e6baa229d mongodb]# more mongod.cnf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/logs/mongodb.log
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
processManagement:
fork: true
net:
port: 27317
bindIp: 0.0.0.0
replication:
replSetName: replSet

啟動三個mongodb服務器
需要對應更改端口、數據目錄、日志路徑
【mongo1、mongo2、mongo3】
mongod -f mongod.cnf

mongodb副本集的初始化及其狀態查看
config = { _id:”replSet”, members:[
{_id:0,host:”172.18.0.10:27117″},
{_id:1,host:”172.18.0.11:27217″},
{_id:2,host:”172.18.0.12:27317″}]
}
config = { _id:”replSet”, members:[
… {_id:0,host:”172.18.0.10:27117″},
… {_id:1,host:”172.18.0.11:27217″},
… {_id:2,host:”172.18.0.12:27317″}]
… }
{
“_id” : “replSet”,
“members” : [
{
“_id” : 0,
“host” : “172.18.0.10:27117”
},
{
“_id” : 1,
“host” : “172.18.0.11:27217”
},
{
“_id” : 2,
“host” : “172.18.0.12:27317”
}
]
}

use admin
rs.initiate( config )#副本集初始化,需要一定時間
rs.initiate(config)
{ “ok” : 1 }

rs.status()#副本集狀態,一個primary,其它SECONDARY。primary是主,只有primary能寫入
replSet:SECONDARY> rs.status
function() {
return db._adminCommand(“replSetGetStatus”);
}
replSet:SECONDARY> rs.status()
{
“set” : “replSet”,
“date” : ISODate(“2022-11-02T12:22:51.726Z”),
“myState” : 1,
“term” : NumberLong(1),
“syncSourceHost” : “”,
“syncSourceId” : -1,
“heartbeatIntervalMillis” : NumberLong(2000),
“majorityVoteCount” : 2,
“writeMajorityCount” : 2,
“votingMembersCount” : 3,
“writableVotingMembersCount” : 3,
“optimes” : {
“lastCommittedOpTime” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“lastCommittedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
“readConcernMajorityOpTime” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“appliedOpTime” : {
“ts” : Timestamp(1667391771, 8),
“t” : NumberLong(1)
},
“durableOpTime” : {
“ts” : Timestamp(1667391771, 8),
“t” : NumberLong(1)
},
“lastAppliedWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
“lastDurableWallTime” : ISODate(“2022-11-02T12:22:51.602Z”)
},
“lastStableRecoveryTimestamp” : Timestamp(1667391760, 1),
“electionCandidateMetrics” : {
“lastElectionReason” : “electionTimeout”,
“lastElectionDate” : ISODate(“2022-11-02T12:22:51.544Z”),
“electionTerm” : NumberLong(1),
“lastCommittedOpTimeAtElection” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“lastSeenOpTimeAtElection” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“numVotesNeeded” : 2,
“priorityAtElection” : 1,
“electionTimeoutMillis” : NumberLong(10000),
“numCatchUpOps” : NumberLong(0),
“newTermStartDate” : ISODate(“2022-11-02T12:22:51.580Z”)
},
“members” : [
{
“_id” : 0,
“name” : “172.18.0.10:27117”,
“health” : 1,
“state” : 1,
“stateStr” : “PRIMARY”,
“uptime” : 302,
“optime” : {
“ts” : Timestamp(1667391771, 8),
“t” : NumberLong(1)
},
“optimeDate” : ISODate(“2022-11-02T12:22:51Z”),
“lastAppliedWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
“lastDurableWallTime” : ISODate(“2022-11-02T12:22:51.602Z”),
“syncSourceHost” : “”,
“syncSourceId” : -1,
“infoMessage” : “Could not find member to sync from”,
“electionTime” : Timestamp(1667391771, 1),
“electionDate” : ISODate(“2022-11-02T12:22:51Z”),
“configVersion” : 1,
“configTerm” : 1,
“self” : true,
“lastHeartbeatMessage” : “”
},
{
“_id” : 1,
“name” : “172.18.0.11:27217”,
“health” : 1,
“state” : 2,
“stateStr” : “SECONDARY”,
“uptime” : 11,
“optime” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“optimeDurable” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“optimeDate” : ISODate(“2022-11-02T12:22:40Z”),
“optimeDurableDate” : ISODate(“2022-11-02T12:22:40Z”),
“lastAppliedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
“lastDurableWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
“lastHeartbeat” : ISODate(“2022-11-02T12:22:51.556Z”),
“lastHeartbeatRecv” : ISODate(“2022-11-02T12:22:51.570Z”),
“pingMs” : NumberLong(0),
“lastHeartbeatMessage” : “”,
“syncSourceHost” : “”,
“syncSourceId” : -1,
“infoMessage” : “”,
“configVersion” : 1,
“configTerm” : 0
},
{
“_id” : 2,
“name” : “172.18.0.12:27317”,
“health” : 1,
“state” : 2,
“stateStr” : “SECONDARY”,
“uptime” : 11,
“optime” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“optimeDurable” : {
“ts” : Timestamp(1667391760, 1),
“t” : NumberLong(-1)
},
“optimeDate” : ISODate(“2022-11-02T12:22:40Z”),
“optimeDurableDate” : ISODate(“2022-11-02T12:22:40Z”),
“lastAppliedWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
“lastDurableWallTime” : ISODate(“2022-11-02T12:22:40.450Z”),
“lastHeartbeat” : ISODate(“2022-11-02T12:22:51.556Z”),
“lastHeartbeatRecv” : ISODate(“2022-11-02T12:22:51.558Z”),
“pingMs” : NumberLong(0),
“lastHeartbeatMessage” : “”,
“syncSourceHost” : “”,
“syncSourceId” : -1,
“infoMessage” : “”,
“configVersion” : 1,
“configTerm” : 0
}
],
“ok” : 1,
“$clusterTime” : {
“clusterTime” : Timestamp(1667391771, 8),
“signature” : {
“hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
“keyId” : NumberLong(0)
}
},
“operationTime” : Timestamp(1667391771, 8)
}

測試副本集的數據同步
mongo mongo1
use wyzgs
db.myuser.remove({age:{$lt:1000}})
主庫執行刪除:
replSet:PRIMARY> use wygzs
switched to db wygzs
replSet:PRIMARY> db.myuser.count()
10000
replSet:PRIMARY>
replSet:PRIMARY> db.myuser.remove({age:{$lt:1000}})
WriteResult({ “nRemoved” : 999 })
備庫檢查數據同步
rs.slaveOk()#SECONDARY需要聲明是slave才能查看數據
從庫無法插入數據, 會提示
“errmsg” : “not master”
“code” : 10107,
“codeName” : “NotWritablePrimary”,
replSet:SECONDARY> use wygzs
switched to db wygzs
replSet:SECONDARY>
replSet:SECONDARY>
replSet:SECONDARY> rs.slaveOk()
WARNING: slaveOk() is deprecated and may be removed in the next major release. Please use secondaryOk() instead.
replSet:SECONDARY>
replSet:SECONDARY> db.myuser.count()
9001
replSet:SECONDARY> db.myuser.insert({name: “name1”})
WriteCommandError({
“topologyVersion” : {
“processId” : ObjectId(“63625f9ba54de6ea1ed4018c”),
“counter” : NumberLong(4)
},
“ok” : 0,
“errmsg” : “not master”,
“code” : 10107,
“codeName” : “NotWritablePrimary”,
“$clusterTime” : {
“clusterTime” : Timestamp(1667393091, 1),
“signature” : {
“hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
“keyId” : NumberLong(0)
}
},
“operationTime” : Timestamp(1667393091, 1)
})

查看slave的延時情況
rs.printSlaveReplicationInfo()
rs.printSecondaryReplicationInfo()
replSet:PRIMARY> rs.printSecondaryReplicationInfo()
source: 172.18.0.11:27217
syncedTo: Wed Nov 02 2022 12:46:29 GMT+0000 (UTC)
0 secs (0 hrs) behind the primary
source: 172.18.0.12:27317
syncedTo: Wed Nov 02 2022 12:46:29 GMT+0000 (UTC)
0 secs (0 hrs) behind the primary

主庫模擬批量插入數據,備庫會出現演示
replSet:PRIMARY> for(i=500001; i<=1000000;i++){
… db.myuser.insert({name:’mytest’+i, age:i} )
… }

replSet:PRIMARY> rs.printSecondaryReplicationInfo()
source: 172.18.0.11:27217
syncedTo: Wed Nov 02 2022 12:49:45 GMT+0000 (UTC)
2 secs (0 hrs) behind the primary
source: 172.18.0.12:27317
syncedTo: Wed Nov 02 2022 12:49:45 GMT+0000 (UTC)
2 secs (0 hrs) behind the primary

MongoDB入門到進階筆記:07-Mongo 副本集的搭建 添加 刪除 延時 仲裁 rs.status replSetName
標簽MongoDB,學習筆記,技術文檔,數據庫,MongoDB

相關下載

查看所有評論+

網友評論

網友
您的評論需要經過審核才能顯示

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 久久综合久久88 | 亚洲一区二区三区中文字幕 | 一级做a爱片久久毛片 | 国产性精品| 一级特黄一欧美俄罗斯毛片 | 台湾三级香港三级在线理论 | 欧美最刺激好看的一级毛片 | 欧美一级在线观看播放 | 国产在线观看精品一区二区三区91 | 香港经典a毛片免费观看看 香港经典a毛片免费观看爽爽影院 | 亚洲国产一区在线二区三区 | 色综合a | 中美日韩在线网免费毛片视频 | 欧美精品一区视频 | 91麻精品国产91久久久久 | 亚洲精品视频专区 | 午夜视频国产 | 高清国产在线观看 | 成a人v| 手机看片日韩国产 | 免费观看欧美一区二区三区 | 国产精品免费看久久久香蕉 | 久久国产影视免费精品 | 天堂8资源在线官网资源 | 99热久久免费精品首页 | 免费观看成人www精品视频在线 | 精品一区二区三区五区六区 | 黑色丝袜美美女被躁视频 | 一级黄色毛片免费看 | 免费一级毛片女人图片 | 日韩欧美一级毛片视频免费 | 日本不卡一二三 | 美女一级毛片视频 | 在线观看aaa | 免费一看一级毛片全播放 | 成人午夜大片免费看爽爽爽 | 7m视频精品凹凸在线播放 | 亚洲www视频 | 国产永久免费高清动作片www | 热re66久久精品国产99热 | 91久久另类重口变态 |