mongodb副本集配置部署
mongodb副本集部署和配置
版本:mongodb4.4.2
mongodb单机副本集部署步骤如下:
[root@localhost software]# pwd
/data/software
[root@localhost software]# ll
total 87720
-rw-r--r--. 1 root root 16137908 Jan 3 21:58 gcc-9.3.0.tar.gz
-rw-r--r--. 1 root root 71386000 Nov 16 11:21 mongodb-linux-x86_64-rhel70-4.4.2.tgz
-rw-r--r--. 1 root root 25548 Apr 7 2017 mysql57-community-release-el7-10.noarch.rpm
drwxrwxr-x. 7 root root 4096 Jan 3 22:30 redis-6.0.9
-rw-r--r--. 1 root root 2261418 Oct 27 03:14 redis-6.0.9.tar.gz
解压mongodb且进入mongodb目录,创建27011,27012,27013端口对应的储存数据文件夹:
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.2.tgz
mv mongodb-linux-x86_64-rhel70-4.4.2 mongodb-4.4.2
cd mongodb-4.4.2/
mkdir -p /data/software/mongodb-4.4.2/27011/logs/
mkdir -p /data/software/mongodb-4.4.2/27011/data/
mkdir -p /data/software/mongodb-4.4.2/27011/key/
mkdir -p /data/software/mongodb-4.4.2/27011/pid/
mkdir -p /data/software/mongodb-4.4.2/27012/logs/
mkdir -p /data/software/mongodb-4.4.2/27012/data/
mkdir -p /data/software/mongodb-4.4.2/27012/key/
mkdir -p /data/software/mongodb-4.4.2/27012/pid/
mkdir -p /data/software/mongodb-4.4.2/27013/logs/
mkdir -p /data/software/mongodb-4.4.2/27013/data/
mkdir -p /data/software/mongodb-4.4.2/27013/key/
mkdir -p /data/software/mongodb-4.4.2/27013/pid/
创建和修改配置文件:
touch /data/software/mongodb-4.4.2/mongo-27011.conf
touch /data/software/mongodb-4.4.2/mongo-27012.conf
touch /data/software/mongodb-4.4.2/mongo-27013.conf
mongo-27011.conf配置:
[root@localhost mongodb-4.4.2]# cat mongo-27011.conf
systemLog:
destination: file
path: "/data/software/mongodb-4.4.2/27011/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/data/software/mongodb-4.4.2/27011/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 27011
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 开启授权认证
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
mongo-27012.conf配置:
[root@localhost mongodb-4.4.2]# cat mongo-27012.conf
systemLog:
destination: file
path: "/data/software/mongodb-4.4.2/27012/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/data/software/mongodb-4.4.2/27012/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 27012
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 开启授权认证
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
mongo-27013.conf 配置:
[root@localhost mongodb-4.4.2]# cat mongo-27013.conf
systemLog:
destination: file
path: "/data/software/mongodb-4.4.2/27013/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/data/software/mongodb-4.4.2/27013/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 27013
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 开启授权认证
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
创建和修改启动服务shell脚本:
创建start-27011,start-27012,start-27013 shell启动脚本:
touch /data/software/mongodb-4.4.2/start-27011
[root@localhost mongodb-4.4.2]# more start-27011
/data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27011.conf
touch /data/software/mongodb-4.4.2/start-27012
[root@localhost mongodb-4.4.2]# more start-27012
/data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27012.conf
touch /data/software/mongodb-4.4.2/start-27013
[root@localhost mongodb-4.4.2]# more start-27013
/data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27013.conf
创建和修改停止服务shell脚本:
touch /data/software/mongodb-4.4.2/stop-27011
[root@localhost mongodb-4.4.2]# more stop-27011
ps -ef|grep /data/software/mongodb-4.4.2/mongo-27011.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
touch /data/software/mongodb-4.4.2/stop-27012
[root@localhost mongodb-4.4.2]# more stop-27012
ps -ef|grep /data/software/mongodb-4.4.2/mongo-27012.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
touch /data/software/mongodb-4.4.2/stop-27013
[root@localhost mongodb-4.4.2]# more stop-27013
ps -ef|grep /data/software/mongodb-4.4.2/mongo-27013.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
授权限:
给/data/software/mongodb-4.4.2文件夹和全部文件添加权限(生产环境需要酌情考虑是否开放外部权限):
chmod -R 777 /data/software/mongodb-4.4.2/
启动mongodb:
[root@localhost mongodb-4.4.2]# pwd
/data/software/mongodb-4.4.2
[root@localhost mongodb-4.4.2]# sh start-27011
about to fork child process, waiting until server is ready for connections.
forked process: 17307
child process started successfully, parent exiting
[root@localhost mongodb-4.4.2]# echo $?
0
[root@localhost mongodb-4.4.2]# sh start-27012
{"t":{"$date":"2021-01-04T05:39:15.648Z"},"s":"I", "c":"STORAGE", "id":22293, "ctx":"main","msg":"Engine custom option","attr":{"option":"cache_size=500m"}}
about to fork child process, waiting until server is ready for connections.
forked process: 17354
child process started successfully, parent exiting
[root@localhost mongodb-4.4.2]# sh start-27013
about to fork child process, waiting until server is ready for connections.
forked process: 17402
child process started successfully, parent exiting
查看mongodb是否启动成功:出现如下所示,说明启动成功。
[root@localhost mongodb-4.4.2]# ps -ef|grep mongo
root 17307 1 0 00:38 ? 00:00:01 /data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27011.conf
root 17354 1 0 00:39 ? 00:00:01 /data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27012.conf
root 17402 1 0 00:39 ? 00:00:01 /data/software/mongodb-4.4.2/bin/mongod --config /data/software/mongodb-4.4.2/mongo-27013.conf
root 17453 16723 0 00:42 pts/3 00:00:00 grep --color=auto mongo
添加集群节点:
登录mongodb数据库:192.168.42.60:27011,具体登录命令如下:
[root@localhost bin]# pwd
/data/software/mongodb-4.4.2/bin
[root@localhost bin]# ./mongo --port=27012
MongoDB shell version v4.4.2
connecting to: mongodb://127.0.0.1:27012/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("00efb4f8-29e5-4595-b80e-abef7d619eb0") }
MongoDB server version: 4.4.2
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
https://community.mongodb.com
---
The server generated these startup warnings when booting:
2021-01-04T00:39:15.934-05:00: You are running this process as the root user, which is not recommended
2021-01-04T00:39:15.934-05:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
2021-01-04T00:39:15.934-05:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
2021-01-04T00:39:15.934-05:00: Soft rlimits too low
2021-01-04T00:39:15.934-05:00: currentValue: 1024
2021-01-04T00:39:15.934-05:00: recommendedMinimum: 64000
---
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
登入后在 mongodb 命令行模式,执行 ’ > ’ 后面的命令:
> use admin
switched to db admin
> config={_id:"sszh", members:[{_id:0,host:'192.168.42.60:27011'}, {_id:1,host:'192.168.42.60:27012'}, {_id:2,host:'192.168.42.60:27013'}]};
{
"_id" : "sszh",
"members" : [
{
"_id" : 0,
"host" : "192.168.42.60:27011"
},
{
"_id" : 1,
"host" : "192.168.42.60:27012"
},
{
"_id" : 2,
"host" : "192.168.42.60:27013"
}
]
}
> rs.initiate(config)
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1609739977, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1609739977, 1)
}
sszh:SECONDARY>
sszh:PRIMARY> rs.status()
{
"set" : "sszh",
"date" : ISODate("2021-01-04T06:01:49.682Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"votingMembersCount" : 3,
"writableVotingMembersCount" : 3,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2021-01-04T06:01:48.093Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2021-01-04T06:01:48.093Z"),
"appliedOpTime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2021-01-04T06:01:48.093Z"),
"lastDurableWallTime" : ISODate("2021-01-04T06:01:48.093Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1609740108, 1),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2021-01-04T05:59:48.028Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1609739977, 1),
"t" : NumberLong(-1)
},
"numVotesNeeded" : 2,
"priorityAtElection" : 1,
"electionTimeoutMillis" : NumberLong(10000),
"numCatchUpOps" : NumberLong(0),
"newTermStartDate" : ISODate("2021-01-04T05:59:48.053Z"),
"wMajorityWriteAvailabilityDate" : ISODate("2021-01-04T05:59:48.994Z")
},
"members" : [
{
"_id" : 0,
"name" : "192.168.42.60:27011",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 132,
"optime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2021-01-04T06:01:48Z"),
"optimeDurableDate" : ISODate("2021-01-04T06:01:48Z"),
"lastHeartbeat" : ISODate("2021-01-04T06:01:48.159Z"),
"lastHeartbeatRecv" : ISODate("2021-01-04T06:01:49.126Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncSourceHost" : "192.168.42.60:27012",
"syncSourceId" : 1,
"infoMessage" : "",
"configVersion" : 1,
"configTerm" : 1
},
{
"_id" : 1,
"name" : "192.168.42.60:27012",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1354,
"optime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2021-01-04T06:01:48Z"),
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1609739988, 1),
"electionDate" : ISODate("2021-01-04T05:59:48Z"),
"configVersion" : 1,
"configTerm" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 2,
"name" : "192.168.42.60:27013",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 132,
"optime" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1609740108, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2021-01-04T06:01:48Z"),
"optimeDurableDate" : ISODate("2021-01-04T06:01:48Z"),
"lastHeartbeat" : ISODate("2021-01-04T06:01:48.159Z"),
"lastHeartbeatRecv" : ISODate("2021-01-04T06:01:49.126Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncSourceHost" : "192.168.42.60:27012",
"syncSourceId" : 1,
"infoMessage" : "",
"configVersion" : 1,
"configTerm" : 1
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1609740108, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1609740108, 1)
}
sszh:PRIMARY>
备注:
use admin:使用admin数据库
config={}:临时参数
rs.initiate(config):使用config临时参数初始化副本集
rs.status:查看集群状态
members[0].stateStr:PRIMARY 表示主节点,SECONDARY表示从节点
PRIMARY主节点:可读可写
SECONDARY从节点:可读不可写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
2017-01-15 python自动化开发-2