一、下載&解壓:
1、版本及下載:
版本:mongodb-4.2.5
解壓版
網盤下載地址:mongodb-linux-x86_64-rhel70-4.2.5(解壓版).tgz
2、集羣列表:
副本名 | IP | 端口 | 系統版本 |
---|---|---|---|
1、從節點 | 192.168.101.150 | 40000 |
CentOS7.5.0 |
2、主節點 |
192.168.101.150 | 50000 |
CentOS7.5.0 |
3、從節點 | 192.168.101.150 | 60000 |
CentOS7.5.0 |
3、上傳文件到集羣服務器並解壓、修改名稱:
[root@localhost ~]# mkdir -p /opt
[root@localhost ~]# cd /opt/
[root@localhost opt]# rz
[root@localhost opt]# tar -zxvf mongodb-linux-x86_64-rhel70-4.2.5(解壓版).tgz
[root@localhost opt]# ll
total 129596
drwxr-xr-x. 3 root root 135 May 10 17:40 mongodb-linux-x86_64-rhel70-4.2.5
-rw-r--r--. 1 root root 132702741 Mar 31 19:11 mongodb-linux-x86_64-rhel70-4.2.5(解壓版).tgz
[root@localhost opt]#
[root@localhost opt]# mv mongodb-linux-x86_64-rhel70-4.2.5 mongodb-4.2.5
[root@localhost opt]# ll
total 129596
drwxr-xr-x. 3 root root 135 May 10 17:40 mongodb-4.2.5
-rw-r--r--. 1 root root 132702741 Mar 31 19:11 mongodb-linux-x86_64-rhel70-4.2.5(解壓版).tgz
[root@localhost opt]#
[root@localhost opt]# cd mongodb-4.2.5/
[root@localhost mongodb-4.2.5]# ll
total 312
drwxr-xr-x. 2 root root 231 May 10 17:40 bin
-rw-r--r--. 1 root root 30608 Mar 24 12:47 LICENSE-Community.txt
-rw-r--r--. 1 root root 16726 Mar 24 12:47 MPL-2
-rw-r--r--. 1 root root 2617 Mar 24 12:47 README
-rw-r--r--. 1 root root 75405 Mar 24 12:47 THIRD-PARTY-NOTICES
-rw-r--r--. 1 root root 183512 Mar 24 12:49 THIRD-PARTY-NOTICES.gotools
[root@localhost mongodb-4.2.5]#
二、創建資源目錄:
4、創建40000、50000、60000端口對應的儲存數據文件夾:
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/40000/logs/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/40000/data/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/40000/key/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/40000/pid/
[root@localhost mongodb-4.2.5]#
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/50000/logs/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/50000/data/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/50000/key/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/50000/pid/
[root@localhost mongodb-4.2.5]#
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/60000/logs/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/60000/data/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/60000/key/
[root@localhost mongodb-4.2.5]# mkdir -p /opt/mongodb-4.2.5/60000/pid/
備註:
- logs文件夾:存儲日誌
- data文件夾:存儲mongodb數據
- key文件夾:存儲密鑰
- pid文件夾:存放啓動文件
三、創建 & 修改配置文件:
5、創建mongo-40000.conf
、mongo-50000.conf
、mongo-60000.conf
配置文件:
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/mongo-40000.conf
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/mongo-50000.conf
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/mongo-60000.conf
6、mongo-40000.conf配置:
修改命令:vi /opt/mongodb-4.2.5/mongo-40000.conf
systemLog:
destination: file
path: "/opt/mongodb-4.2.5/40000/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/opt/mongodb-4.2.5/40000/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 40000
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 開啓授權認證
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
7、mongo-50000.conf配置:
修改命令:vi /opt/mongodb-4.2.5/mongo-50000.conf
systemLog:
destination: file
path: "/opt/mongodb-4.2.5/50000/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/opt/mongodb-4.2.5/50000/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 50000
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 開啓授權認證
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
8、mongo-60000.conf配置:
修改命令:vi /opt/mongodb-4.2.5/mongo-60000.conf
systemLog:
destination: file
path: "/opt/mongodb-4.2.5/60000/logs/mongodb.log"
logAppend: true
storage:
dbPath: "/opt/mongodb-4.2.5/60000/data"
journal:
enabled: true
# mmapv1:
# smallFiles: true
wiredTiger:
engineConfig:
configString: cache_size=500m
processManagement:
fork: true
net:
port: 60000
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
# 開啓授權認證
security:
authorization: disabled
replication:
oplogSizeMB: 100
replSetName: sszh
enableMajorityReadConcern: true
四、創建 & 修改啓動服務shell腳本:
9、創建start-40000
、start-50000
、start-60000
的shell啓動腳本:
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/start-40000
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/start-50000
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/start-60000
10、start-40000內容:
修改命令:vi /opt/mongodb-4.2.5/start-40000
/opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-40000.conf
11、start-50000內容:
修改命令:vi /opt/mongodb-4.2.5/start-50000
/opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-50000.conf
12、start-60000內容:
修改命令:vi /opt/mongodb-4.2.5/start-60000
/opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-60000.conf
五、創建 & 修改停止服務shell腳本:
13、創建start-40000
、start-50000
、start-60000
的shell啓動腳本:
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/stop-40000
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/stop-50000
[root@localhost mongodb-4.2.5]# touch /opt/mongodb-4.2.5/stop-60000
14、stop-40000內容:
修改命令:vi /opt/mongodb-4.2.5/stop-40000
ps -ef|grep /opt/mongodb-4.2.5/mongo-40000.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
15、stop-50000內容:
修改命令:vi /opt/mongodb-4.2.5/stop-50000
ps -ef|grep /opt/mongodb-4.2.5/mongo-50000.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
16、stop-60000內容:
修改命令:vi /opt/mongodb-4.2.5/stop-60000
ps -ef|grep /opt/mongodb-4.2.5/mongo-60000.conf|grep -v grep|awk '{printf $2}'|xargs kill -9
六、賦予權限:
17、給/opt/mongodb-4.2.5/
文件夾及全部文件添加權限(正式環境酌情考慮是否開放外部權限
):
[root@localhost mongodb-4.2.5]# chmod -R 777 /opt/mongodb-4.2.5/
備註:
- 參數-R是遞歸的意思
- 777表示開放所有權限
- 如果給所有人添加可執行權限:chmod a+x 文件名;
- 如果給文件所有者添加可執行權限:chmod u+x 文件名;
- 如果給所在組添加可執行權限:chmod g+x 文件名;
- 如果給所在組以外的人添加可執行權限:chmod o+x 文件名;
七、啓動mongodb:
18、先留意下如下錯誤信息:
- 錯誤1:
mongodb.conf文件粘貼時缺少字母,報錯誤信息如下:
Unrecognized option: ystemLog.destination
try ‘/opt/mongodb-4.2.5/bin/mongod --help’ for more information - 解決1:
修改mongo.config文件,將ystemLog
替換成systemLog
,啓動成功
19、啓動mongodb服務:
[root@localhost mongodb-4.2.5]# sh start-40000
about to fork child process, waiting until server is ready for connections.
forked process: 5866
child process started successfully, parent exiting
[root@localhost mongodb-4.2.5]#
[root@localhost mongodb-4.2.5]# sh start-50000
2020-05-10T18:27:42.526+0800 I STORAGE [main] Engine custom option: cache_size=500m
about to fork child process, waiting until server is ready for connections.
forked process: 5928
child process started successfully, parent exiting
[root@localhost mongodb-4.2.5]#
[root@localhost mongodb-4.2.5]# sh start-60000
2020-05-10T18:27:53.770+0800 I STORAGE [main] Engine custom option: cache_size=500m
about to fork child process, waiting until server is ready for connections.
forked process: 5976
child process started successfully, parent exiting
[root@localhost mongodb-4.2.5]#
20、查看是否啓動成功:
[root@localhost mongodb-4.2.5]# ps -ef|grep mongo
root 5866 1 1 18:27 ? 00:00:01 /opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-40000.conf
root 5928 1 1 18:27 ? 00:00:01 /opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-50000.conf
root 5976 1 1 18:27 ? 00:00:00 /opt/mongodb-4.2.5/bin/mongod --config /opt/mongodb-4.2.5/mongo-60000.conf
root 6054 3308 0 18:28 pts/0 00:00:00 grep --color=auto mongo
[root@localhost mongodb-4.2.5]#
七、添加集羣節點:
21、登錄數據庫192.168.101.150:40000
,命令如下:
[root@localhost mongodb-4.2.5]# cd /opt/mongodb-4.2.5/bin/
[root@localhost bin]# ./mongo --port=50000
MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:50000/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c06d47bb-3012-44d8-a53d-f26c6ce32e35") }
MongoDB server version: 4.2.5
Server has startup warnings:
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten]
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten]
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten]
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-05-10T18:35:07.614+0800 I CONTROL [initandlisten]
---
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()
---
>
22、登入後在 mongodb 命令行模式,執行 ’ >
’ 後面的命令:
> use admin
switched to db admin
> config={_id:"sszh", members:[{_id:0,host:'192.168.101.150:40000'}, {_id:1,host:'192.168.101.150:50000'}, {_id:2,host:'192.168.101.150:60000'}]};
{
"_id" : "sszh",
"members" : [
{
"_id" : 0,
"host" : "192.168.101.150:40000"
},
{
"_id" : 1,
"host" : "192.168.101.150:50000"
},
{
"_id" : 2,
"host" : "192.168.101.150:60000"
}
]
}
> rs.initiate(config)
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1589107742, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1589107742, 1)
}
sszh:SECONDARY>
sszh:PRIMARY> rs.status()
{
"set" : "sszh",
"date" : ISODate("2020-05-10T10:49:52.275Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2020-05-10T10:49:43.308Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2020-05-10T10:49:43.308Z"),
"appliedOpTime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2020-05-10T10:49:43.308Z"),
"lastDurableWallTime" : ISODate("2020-05-10T10:49:43.308Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1589107753, 3),
"lastStableCheckpointTimestamp" : Timestamp(1589107753, 3),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2020-05-10T10:49:13.299Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1589107742, 1),
"t" : NumberLong(-1)
},
"numVotesNeeded" : 2,
"priorityAtElection" : 1,
"electionTimeoutMillis" : NumberLong(10000),
"numCatchUpOps" : NumberLong(0),
"newTermStartDate" : ISODate("2020-05-10T10:49:13.306Z"),
"wMajorityWriteAvailabilityDate" : ISODate("2020-05-10T10:49:14.729Z")
},
"members" : [
{
"_id" : 0,
"name" : "192.168.101.150:40000",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 50,
"optime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-05-10T10:49:43Z"),
"optimeDurableDate" : ISODate("2020-05-10T10:49:43Z"),
"lastHeartbeat" : ISODate("2020-05-10T10:49:51.314Z"),
"lastHeartbeatRecv" : ISODate("2020-05-10T10:49:50.722Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.101.150:50000",
"syncSourceHost" : "192.168.101.150:50000",
"syncSourceId" : 1,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 1,
"name" : "192.168.101.150:50000",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 886,
"optime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-05-10T10:49:43Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1589107753, 1),
"electionDate" : ISODate("2020-05-10T10:49:13Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 2,
"name" : "192.168.101.150:60000",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 50,
"optime" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1589107783, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-05-10T10:49:43Z"),
"optimeDurableDate" : ISODate("2020-05-10T10:49:43Z"),
"lastHeartbeat" : ISODate("2020-05-10T10:49:51.314Z"),
"lastHeartbeatRecv" : ISODate("2020-05-10T10:49:50.723Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.101.150:50000",
"syncSourceHost" : "192.168.101.150:50000",
"syncSourceId" : 1,
"infoMessage" : "",
"configVersion" : 1
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1589107783, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1589107783, 1)
}
sszh:PRIMARY>
備註:
- 語句 use admin 解釋:使用admin數據庫
- 語句 config={} 解釋:臨時參數
- 語句 rs.initiate(config) 解釋:使用config臨時參數初始化副本集
- 語句 rs.status() 解釋:查看集羣狀態
- 集羣狀態參數 members[0].stateStr 解釋:PRIMARY 表示
主節點
、SECONDARY表示從節點
- PRIMARY 主節點:
可讀
、可寫
- SECONDARY 從節點:
可讀
,不可寫
- 更多參數解釋:請查閱官網解釋
23、使用工具連接測試:
- Java連接副本集羣url:
mongodb://192.168.101.150:40000,192.168.101.150:50000,192.168.101.150:60000/?replicaSet=sszh
- 連接工具:
注:以上內容僅提供參考和交流,請勿用於商業用途,如有侵權聯繫本人刪除!
持續更新中…
如有對思路不清晰或有更好的解決思路,歡迎與本人交流,微信:seesun2012(非緊急項目請加QQ羣解答
),QQ羣:273557553
你遇到的問題是小編創作靈感的來源!