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

相关推荐
DBA_G42 分钟前
南大通用GBase 8s数据库新存储引擎核心能力二
数据库·微服务·架构
衣乌安、2 小时前
数据库事务原理与回滚机制
数据库
CodexDave3 小时前
PostgreSQL 明明有索引却选了 Nested Loop:从行数误判修正执行计划
数据库·postgresql·执行计划·扩展统计·nestedloop
czhaii5 小时前
STC ai助手单片机工程项目创建实例
数据库·mongodb
山峰哥5 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
oradh6 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
YOU OU6 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水6 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务
瞬间&永恒~6 小时前
【MySQL】 主从复制多拓扑搭建实验
运维·数据库·mysql·云原生
han_hanker7 小时前
sql语法 DECODE, CASE ... WHEN
数据库·sql·oracle