从这一期开始,将分几期聊聊 MongoDB 的一些基础实战经验,包括副本集、备份、常用命令等。欢迎关注“悦专栏”公众号,第一时间接收系列文章。
由于能力有限,系列文章难免会存在错误或者遗漏,如果您有任何建议,可以加文末“小悦”微信进行私信或进 MongoDB 交流群讨论,我们会第一时间进行反馈。
1 架构介绍
这篇文章介绍的是 Primary + Secondary + Arbiter 的架构,架构图如下:
Secondary 持续复制 Primary 节点的数据;Arbiter 用于心跳检测和选举,不接收数据。
实验环境:
节点 | 角色 | 环境 |
---|---|---|
192.168.150.123 | Primary | CentOS 7.4、MongoDB 5.0.2 |
192.168.150.232 | Secondary | CentOS 7.4、MongoDB 5.0.2 |
192.168.150.253 | Arbiter | CentOS 7.4、MongoDB 5.0.2 |
2 配置 yum 源
在三台机器配置 yum 源:
vim /etc/yum.repos.d/mongo.repo
复制
加入如下内容:
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
复制
3 安装 mongoDB
yum install -y mongodb-org
复制
4 创建文件夹
mkdir -p data/{mongodb27001/data/configdb,mongodb27001/data/sharddb,mongodb27001/conf,mongodb27001/run,mongodb27001/logs}
复制
5 编辑配置文件
vim data/mongodb27001/conf/mongod.conf
复制
加入如下内容:复制
systemLog:
destination: file
logAppend: true
path: /data/mongodb27001/logs/mongod.log
storage:
dbPath: /data/mongodb27001/data
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /data/mongodb27001/run/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27001
bindIp: 0.0.0.0
复制
6 配置 keyfile
在其中一台机器执行下面语句
openssl rand -base64 745 > /data/mongodb27001/conf/keyfile
chmod 600 data/mongodb27001/conf/keyfile
复制
然后将生成的 keyfile 复制到另外两台机器的 data/mongodb27001/conf/ 目录下。
7 启动 MongoDB
mongod -f data/mongodb27001/conf/mongod.conf
复制
登录 MongoDB复制
mongo --port 27001
复制
8 用户创建
创建管理员账户
use admin
db.createUser(
{
user: "root",
pwd: "xxxxxx",
roles: [ { role: "root",db:"admin" } ]
}
)
复制
创建业务用户
use xxx
# xxx 表示业务使用的 DB
db.createUser(
{
user: "xxx_user",
pwd: "xxxxxx",
roles: [ { role: "readWriteAnyDatabase",db:"admin" } ]
}
)
复制
9 增加集群配置
编辑配置文件:
vim data/mongodb27001/conf/mongod.conf
复制
增加集群及认证相关配置:复制
systemLog:
destination: file
logAppend: true
path: /data/mongodb27001/logs/mongod.log
storage:
dbPath: /data/mongodb27001/data
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /data/mongodb27001/run/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27001
bindIp: 0.0.0.0
replication:
oplogSizeMB: 4096
replSetName: xxx_repl
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /data/mongodb27001/conf/keyfile
复制
10 重启服务
登录 MongoDB
mongo --port 27001 -uroot -pxxxxxx admin
复制
关闭 MongoDB
db.shutdownServer()
复制
重新启动 MongoDB
mongod -f data/mongodb27001/conf/mongod.conf
复制
11 创建集群
在第一个节点上登录 MongoDB:
mongo --port 27001 -uroot -pxxxxxx admin
复制
执行下面命令增加集群配置:
config={
_id:'xxx_repl',
members:[
{_id: 0, host: '192.168.150.123:27001',priority:1},
{_id: 1, host: '192.168.150.232:27001',priority:1},
{_id: 2, host: '192.168.150.253:27001',arbiterOnly:true},
]
}
复制
初始化配置
rs.initiate(config)
复制
12 查看集群
rs.status()
复制
如果一切顺利,就可以看到如下结果:
{
"set" : "xxx_repl",
......
"members" : [
{
"_id" : 0,
"name" : "192.168.150.123:27001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
......
},
{
"_id" : 1,
"name" : "192.168.150.232:27001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
......
},
{
"_id" : 2,
"name" : "192.168.150.253:27001",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
......
}
......
}
复制
到这里,MongoDB 5.x 副本集就搭建完成啦。


文章转载自悦专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国内独家|阿里云首发MongoDB 8.0,性能提升“快”人一步
阿里云瑶池数据库
215次阅读
2025-04-24 09:53:13
腾讯云与 MongoDB 续签战略合作协议
腾讯云
134次阅读
2025-04-14 09:59:46
知识点 | 主流的开源协议有哪些?
戏说数据那点事
75次阅读
2025-04-21 10:35:19
OceanBase 单机版可以大批量快速部署吗? YES
AustinDatabases
61次阅读
2025-04-21 10:35:14
鸿门宴讲PostgreSQL -- 被拉去央企救场一天
AustinDatabases
58次阅读
2025-04-24 09:53:40
打破DBA的局限:像架构师一样思考,提升你的技术价值-- 访蚂蚁金服P9 朱春茂
AustinDatabases
47次阅读
2025-04-28 10:18:46
DBA 有心眼,难搞的SQL实际案例分析--都是别人的错
AustinDatabases
45次阅读
2025-04-16 10:33:49
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
AustinDatabases
41次阅读
2025-04-23 11:19:10
MongoDB增删改查操作
鲁鲁
37次阅读
2025-04-14 22:41:51
谨献给“国产数据库”培训机构 专贴
AustinDatabases
36次阅读
2025-04-30 12:17:59