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

相关推荐
秃了也弱了。30 分钟前
DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
数据库·mysql·开源
玄辰星君44 分钟前
PostgreSQL 入门教程
数据库·postgresql
泽韦德1 小时前
【Redis】笔记|第9节|Redis Stack扩展功能
数据库·redis·笔记
喜欢踢足球的老罗1 小时前
使用 Spring Boot 3.3 和 JdbcTemplate 操作 MySQL 数据库
数据库·spring boot·mysql
文牧之1 小时前
PostgreSQL 的扩展pg_prewarm
运维·数据库·postgresql
行星0081 小时前
Postgresql字符串操作函数
数据库·postgresql
清风~徐~来2 小时前
【Redis】类型补充
数据库·redis·缓存
代码探秘者2 小时前
【Redis从入门到精通实战文章汇总】
数据库·redis·缓存
weixin_748877002 小时前
【Redis实战:缓存与消息队列的应用】
数据库·redis·缓存
····懂···3 小时前
PostgreSQL 技术峰会,为您打造深度交流优质平台
数据库·postgresql