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

相关推荐
zyseo83 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai5 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o5 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
这个DBA有点耶6 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户6279947182627 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹7 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿7 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪7 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛7 小时前
导出mysql数据结构
数据库·mysql
GlobalTradercrb7 小时前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo