MongoDB-6.0.24 主从复制搭建和扩容缩容详解

目录

[1 操作系统信息](#1 操作系统信息)

[2 MongoDB 集群架构图](#2 MongoDB 集群架构图)

[3 MongoDB 软件安装及配置](#3 MongoDB 软件安装及配置)

[4 初始化存储集群和配置](#4 初始化存储集群和配置)

[5 MongoDB主从复制集群测试](#5 MongoDB主从复制集群测试)

[6 MongoDB运维管理](#6 MongoDB运维管理)

[7 主从复制集群扩容一个secondary节点](#7 主从复制集群扩容一个secondary节点)

[8 主从复制集群缩容一个节点](#8 主从复制集群缩容一个节点)


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");

相关推荐
huihui45021 分钟前
一天一道Sql题(day01)
数据库
~尼卡~23 分钟前
软考(软件设计师)数据库原理:事务管理,备份恢复,并发控制
数据库·软件设计师-软考
八九燕来31 分钟前
Django双下划线查询
数据库·django·sqlite
眠りたいです1 小时前
Mysql常用内置函数,复合查询及内外连接
linux·数据库·c++·mysql
paopaokaka_luck1 小时前
智能推荐社交分享小程序(websocket即时通讯、协同过滤算法、时间衰减因子模型、热度得分算法)
数据库·vue.js·spring boot·后端·websocket·小程序
He.ZaoCha2 小时前
函数-1-字符串函数
数据库·sql·mysql
二当家的素材网2 小时前
Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
linux·数据库·centos
白仑色2 小时前
Oracle 存储过程、函数与触发器
数据库·oracle·数据库开发·存储过程·plsql编程
头发那是一根不剩了3 小时前
Spring Boot 多数据源切换:AbstractRoutingDataSource
数据库·spring boot·后端
草履虫建模4 小时前
Redis:高性能内存数据库与缓存利器
java·数据库·spring boot·redis·分布式·mysql·缓存