前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB 实战笔记 第01期:5.x 副本集部署

MongoDB 实战笔记 第01期:5.x 副本集部署

作者头像
数据库交流
发布2022-04-25 09:08:06
3720
发布2022-04-25 09:08:06
举报
文章被收录于专栏:悦专栏

从这一期开始,将分几期聊聊 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 源:

代码语言:javascript
复制
vim /etc/yum.repos.d/mongo.repo

加入如下内容:

代码语言:javascript
复制
[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

代码语言:javascript
复制
yum install -y mongodb-org

4 创建文件夹

代码语言:javascript
复制
mkdir -p /data/{mongodb27001/data/configdb,mongodb27001/data/sharddb,mongodb27001/conf,mongodb27001/run,mongodb27001/logs}

5 编辑配置文件

代码语言:javascript
复制
vim /data/mongodb27001/conf/mongod.conf
代码语言:javascript
复制
加入如下内容:
代码语言:javascript
复制
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

在其中一台机器执行下面语句

代码语言:javascript
复制
openssl rand -base64 745 > /data/mongodb27001/conf/keyfile

chmod 600 /data/mongodb27001/conf/keyfile

然后将生成的 keyfile 复制到另外两台机器的 /data/mongodb27001/conf/ 目录下。

7 启动 MongoDB

代码语言:javascript
复制
mongod -f /data/mongodb27001/conf/mongod.conf
代码语言:javascript
复制
登录 MongoDB
代码语言:javascript
复制
mongo --port 27001

8 用户创建

创建管理员账户

代码语言:javascript
复制
use admin

db.createUser(  
  {  
    user: "root",  
pwd: "xxxxxx",  
    roles: [ { role: "root",db:"admin" } ]  
  }  
)

创建业务用户

代码语言:javascript
复制
use xxx
# xxx 表示业务使用的 DB

db.createUser(  
  {  
    user: "xxx_user",  
pwd: "xxxxxx",  
    roles: [ { role: "readWriteAnyDatabase",db:"admin" } ]  
  }  
)

9 增加集群配置

编辑配置文件:

代码语言:javascript
复制
vim /data/mongodb27001/conf/mongod.conf
代码语言:javascript
复制
增加集群及认证相关配置:
代码语言:javascript
复制
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

代码语言:javascript
复制
mongo --port 27001 -uroot -pxxxxxx admin

关闭 MongoDB

代码语言:javascript
复制
db.shutdownServer()

重新启动 MongoDB

代码语言:javascript
复制
mongod -f /data/mongodb27001/conf/mongod.conf

11 创建集群

在第一个节点上登录 MongoDB:

代码语言:javascript
复制
mongo --port 27001 -uroot -pxxxxxx admin

执行下面命令增加集群配置:

代码语言:javascript
复制
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},
    ]
}

初始化配置

代码语言:javascript
复制
rs.initiate(config)

12 查看集群

代码语言:javascript
复制
rs.status()

如果一切顺利,就可以看到如下结果:

代码语言:javascript
复制
{
  "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 副本集就搭建完成啦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悦专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 架构介绍
  • 2 配置 yum 源
  • 3 安装 mongoDB
  • 4 创建文件夹
  • 5 编辑配置文件
  • 6 配置 keyfile
  • 7 启动 MongoDB
  • 8 用户创建
  • 9 增加集群配置
  • 10 重启服务
  • 11 创建集群
  • 12 查看集群
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档