目录
1 操作系统信息
root@u24-mongo-70:~# cat /etc/issue
Ubuntu 24.04.2 LTS \n \l
2 MongoDB 集群架构图
IP 主机名 端口 角色
192.168.254.70 u24-mongo-70 27017 primary
192.168.254.71 u24-mongo-71 27017 secondary
192.168.254.72 u24-mongo-72 27017 secondary
3 MongoDB 软件安装及配置
源码编译安装参考:https://blog.csdn.net/zyb378747350/article/details/148307411
修改配置文件
root@u24-mongo-70:~# cat /usr/local/mongodb-6.0.24/conf/mongodb.conf
#系统日志有关
systemLog:
destination: file
logAppend: true
path: /mongodb/log/mongdb.log
#数据库存储有关
storage:
dbPath: /mongodb/data
journal:
enabled: true
wiredTiger:
engineConfig:
directoryForIndexes: true
configString: cache_size=1G
#进程
processManagement:
fork: true #后台运行
pidFilePath: /mongodb/log/mongodb.pid
timeZoneInfo: /usr/share/zoneinfo
#网络
net:
port: 27017
bindIp: 0.0.0.0
maxIncomingConnections: 1000
unixDomainSocket:
enabled: true
pathPrefix: /mongodb/data
filePermissions: 0700
#安全
security:
keyFile: /usr/local/mongodb-6.0.24/auth/keyfile.key
authorization: enabled
#主从配置
replication:
replSetName: repl
4 初始化存储集群和配置
root@u24-mongo-70:~# mongosh --port=27017
#配置
admin>config={_id:"repl",members:[{_id:0,host:"192.168.254.70:27017"},{_id:1,host:"192.168.254.71:27017"},{_id:2,host:"192.168.254.72:27017"}]}
{
_id: 'repl',
members: [
{ _id: 0, host: '192.168.254.70:27017' },
{ _id: 1, host: '192.168.254.71:27017' },
{ _id: 2, host: '192.168.254.72:27017' }
]
}
#初始化
admin> rs.initiate(config)
{ ok: 1 }
备注:如果添加arbiter,要添加 { _id: 2, host: '192.168.254.72:27017',arbiterOnly: ture}
#开通账号和设置密码
repl [direct: primary] admin> use admin
repl [direct: primary] admin> db.createUser({
user:"root",
pwd:"root123456",
roles:[{role:"root",db:"admin"}]
})
#查看状态
repl [direct: primary] test> rs.status();
5 MongoDB主从复制集群测试
mongosh --port=27017
repl [primary] admin> use test
switched to db test
#插入
repl [primary] test> db.movies.insert([{"title":"Jaws","year":1975,"imdb_rating":8.1},{"title":"Batman","year":1989,"imdb_rating":7.6}]);
#查询
repl [direct: primary] test> db.movies.find();
[
{
_id: ObjectId('683ebfc0b128f3aee3c59f35'),
title: 'Jaws',
year: 1975,
imdb_rating: 8.1
},
{
_id: ObjectId('683ebfc0b128f3aee3c59f36'),
title: 'Batman',
year: 1989,
imdb_rating: 7.6
}
]
6 MongoDB运维管理
#查看主从复制集群的从库状态信息(延迟、成员)
repl [direct: primary] test> rs.printSecondaryReplicationInfo();
source: 192.168.254.71:27017
{
syncedTo: 'Tue Jun 03 2025 18:05:18 GMT+0800 (China Standard Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
---
source: 192.168.254.72:27017
{
syncedTo: 'Tue Jun 03 2025 18:05:18 GMT+0800 (China Standard Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
#查看主从复制集群oplog信息:
repl [direct: primary] test> rs.printReplicationInfo();
actual oplog size
'1456.2060546875 MB'
---
configured oplog size
'1456.2060546875 MB'
---
log length start to end
'2971 secs (0.83 hrs)'
---
oplog first event time
'Tue Jun 03 2025 17:17:47 GMT+0800 (China Standard Time)'
---
oplog last event time
'Tue Jun 03 2025 18:07:18 GMT+0800 (China Standard Time)'
---
now
'Tue Jun 03 2025 18:07:22 GMT+0800 (China Standard Time)'
#主从复制集群管理操作
rs.status() #查看整体复制集群状态
rs.isMaster() #查看当前是否是主节点
rs.add("ip:port") #新增从节点
rs.addArb("ip:port") #新增仲裁节点
rs.remove("ip:port") #删除一个节点
rs.conf() #查看配置
#修改配置
cfg=rs.conf()
cfg.members[1].priority=0
rs.reconfig(cfg)
7 主从复制集群扩容一个secondary节点
repl [direct: primary] admin>rs.add("192.168.254.73:27017");
8 主从复制集群缩容一个节点
repl [direct: primary] admin>rs.remove("192.168.254.73:27017");