详解mongodb搭建Replica Set的方法
1.创建数据文件夹:
mkdir-p/data/master mkdir-p/data/slaver mkdir-p/data/arbiter
效果:
data文件夹包含arbiter master slaver三个文件夹
2.创建日志存放文件
vi/log/master.log vi/log/slaver.log vi/log/arbiter.log
效果:
log文件夹包含master.log slaver.log arbiter.log三个文件(注意,data文件夹和lon文件夹均无上级文件夹,可自行创建不同名称不同位置的文件夹,注意路径与下文中的配置文件一致即可)
3.创建配置文件
在第一步创建的三个文件中创建文件夹同名.conf后缀文件,即:master文件夹中应有master.conf文件,slaver文件夹中应有slaver.conf文件,arbiter文件夹中应有arbiter.conf文件。
各配置文件内容如下:
master.conf
dbpath=/data/master logpath=/log/master.log pidfilepath=/data/master.pid directoryperdb=true logappend=true replSet=away bind_ip=localhost port=27018 #fork=true
slaver.conf
dbpath=/data/slaver logpath=/log/slaver.log pidfilepath=/data/slaver.pid directoryperdb=true logappend=true replSet=away bind_ip=localhost port=27019 #fork=true
arbiter.conf
dbpath=/data/arbiter logpath=/log/arbiter.log pidfilepath=arbiter.pid directoryperdb=true logappend=true replSet=away bind_ip=localhost port=27020 #fork=true
replSet、bind_ip、port三个属性可根据自己情况进行更改。
属性大致解释如下:
dbpath:数据存放目录
logpath:日志存放路径
pidfilepath:进程文件,方便停止mongodb
directoryperdb:为每一个数据库按照数据库名建立文件夹存放
logappend:以追加的方式记录日志
replSet:replicaset的名字
bind_ip:mongodb所绑定的ip地址
port:mongodb进程所使用的端口号,默认为27017
oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
fork:以后台方式运行进程
noprealloc:不预先分配存储
4.启动mongod程序
mongod--config<配置路径>
例如:
lhd@lhd:~$sudomongod--config/data/master/master.conf [sudo]lhd的密码:
输入密码即可,此出应注意启动权限。
5.主从配置
1).启动mongo客户端:
mongolocalhost:27018
运行结果如下:
mongolocalhost:27018
MongoDBshellversionv4.4.2
connectingto:mongodb://localhost:27018/test?compressors=disabled&gssapiServiceName=mongodb
Implicitsession:session{"id":UUID("0078e025-5485-4967-85c8-160755ac3d58")}
MongoDBserverversion:4.4.2
---
Theservergeneratedthesestartupwarningswhenbooting:
2020-12-22T09:39:40.347+08:00:UsingtheXFSfilesystemisstronglyrecommendedwiththeWiredTigerstorageengine.Seehttp://dochub.mongodb.org/core/prodnotes-filesystem
2020-12-22T09:39:41.093+08:00:Accesscontrolisnotenabledforthedatabase.Readandwriteaccesstodataandconfigurationisunrestricted
2020-12-22T09:39:41.094+08:00:Youarerunningthisprocessastherootuser,whichisnotrecommended
2020-12-22T09:39:41.095+08:00:Softrlimitstoolow
2020-12-22T09:39:41.095+08:00: currentValue:1024
2020-12-22T09:39:41.095+08:00: recommendedMinimum:64000
---
---
EnableMongoDB'sfreecloud-basedmonitoringservice,whichwillthenreceiveanddisplay
metricsaboutyourdeployment(diskutilization,CPU,operationstatistics,etc).
ThemonitoringdatawillbeavailableonaMongoDBwebsitewithauniqueURLaccessibletoyou
andanyoneyousharetheURLwith.MongoDBmayusethisinformationtomakeproduct
improvementsandtosuggestMongoDBproductsanddeploymentoptionstoyou.
Toenablefreemonitoring,runthefollowingcommand:db.enableFreeMonitoring()
Topermanentlydisablethisreminder,runthefollowingcommand:db.disableFreeMonitoring()
---
2).设置主,从,仲裁点
useadmin switchedtodbadmin
zjd={_id:"one",members:[{_id:0,host:"localhost:27018",priority:2},{_id:1,host:"localhost:27019",priority:1},{_id:2,host:"localhost:27020",arbiterOnly:true}]};
zjd是可以任意的名字,不要用mongodb的关键字,conf,config都可以。
第一个_id表示replicaset的名字,这个数据必须和第三步配置文件中的replicaset一致,不然会报错。
members里包含的是所有节点的地址以及优先级,优先级最高的即成为主节点,值为0则不会参加选举成为主节点,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。
配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。
3).使配置生效
rs.initiate(zjd)
显示:
{
"operationTime":Timestamp(0,0),
"ok":0,
"errmsg":"Rejectinginitiatewithasetnamethatdiffersfromcommandlinesetname,initiatesetname:one,commandlinesetname:away",
"code":93,
"codeName":"InvalidReplicaSetConfig",
"$clusterTime":{
"clusterTime":Timestamp(0,0),
"signature":{
"hash":BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId":NumberLong(0)
}
}
}
4).查看状态
>rs.status()
显示:
{
"set":"away",
"date":ISODate("2020-12-22T02:07:27.058Z"),
"myState":2,
"term":NumberLong(0),
"syncSourceHost":"",
"syncSourceId":-1,
"heartbeatIntervalMillis":NumberLong(2000),
"majorityVoteCount":2,
"writeMajorityCount":2,
"votingMembersCount":3,
"writableVotingMembersCount":2,
"optimes":{
"lastCommittedOpTime":{
"ts":Timestamp(0,0),
"t":NumberLong(-1)
},
"lastCommittedWallTime":ISODate("1970-01-01T00:00:00Z"),
"appliedOpTime":{
"ts":Timestamp(1608602837,1),
"t":NumberLong(-1)
},
"durableOpTime":{
"ts":Timestamp(1608602837,1),
"t":NumberLong(-1)
},
"lastAppliedWallTime":ISODate("2020-12-22T02:07:17.467Z"),
"lastDurableWallTime":ISODate("2020-12-22T02:07:17.467Z")
},
"lastStableRecoveryTimestamp":Timestamp(0,0),
"members":[
{
"_id":0,
"name":"localhost:27018",
"health":1,
"state":2,
"stateStr":"SECONDARY",
"uptime":1667,
"optime":{
"ts":Timestamp(1608602837,1),
"t":NumberLong(-1)
},
"optimeDate":ISODate("2020-12-22T02:07:17Z"),
"syncSourceHost":"",
"syncSourceId":-1,
"infoMessage":"Couldnotfindmembertosyncfrom",
"configVersion":1,
"configTerm":0,
"self":true,
"lastHeartbeatMessage":""
},
{
"_id":1,
"name":"localhost:27019",
"health":1,
"state":2,
"stateStr":"SECONDARY",
"uptime":9,
"optime":{
"ts":Timestamp(1608602837,1),
"t":NumberLong(-1)
},
"optimeDurable":{
"ts":Timestamp(1608602837,1),
"t":NumberLong(-1)
},
"optimeDate":ISODate("2020-12-22T02:07:17Z"),
"optimeDurableDate":ISODate("2020-12-22T02:07:17Z"),
"lastHeartbeat":ISODate("2020-12-22T02:07:26.714Z"),
"lastHeartbeatRecv":ISODate("2020-12-22T02:07:26.768Z"),
"pingMs":NumberLong(0),
"lastHeartbeatMessage":"",
"syncSourceHost":"",
"syncSourceId":-1,
"infoMessage":"",
"configVersion":1,
"configTerm":0
},
{
"_id":2,
"name":"localhost:27020",
"health":1,
"state":7,
"stateStr":"ARBITER",
"uptime":9,
"lastHeartbeat":ISODate("2020-12-22T02:07:26.713Z"),
"lastHeartbeatRecv":ISODate("2020-12-22T02:07:25.991Z"),
"pingMs":NumberLong(0),
"lastHeartbeatMessage":"",
"syncSourceHost":"",
"syncSourceId":-1,
"infoMessage":"",
"configVersion":1,
"configTerm":0
}
],
"ok":1,
"$clusterTime":{
"clusterTime":Timestamp(1608602837,1),
"signature":{
"hash":BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId":NumberLong(0)
}
},
"operationTime":Timestamp(1608602837,1)
}
配置完成!
到此这篇关于mongodb搭建ReplicaSet的方法的文章就介绍到这了,更多相关mongodb搭建ReplicaSet内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!