MongoDB复制集部署及运维

环境:centos7 、 MongoDB 5

准备三台服务器(4核 16G)
10.200.1.77 、 10.200.1.78 、 10.200.1.79
开放 27017 端口
确保三台服务器所有端口可相互访问

1、安装MongoDB

创建/etc/yum.repos.d/mongodb-org-5.0.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

yum安装

yum install -y mongodb-org

修改配置 vi /etc/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
#  engine:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1
  bindIpAll: true

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
#  authorization: enabled
#  keyFile: /etc/mongo/keyFilers0.key

#operationProfiling:

replication:
  oplogSizeMB: 150
  replSetName: tech-repl

## Enterprise-Only Options:

#auditLog:

#snmp:

注意!!!:
如果修改了数据目录,要进行以下操作
1)先给数据目录设置权限:

chown -R mongod:mongod <directory>

2)并关闭SELinux
查看是否开启:getenforce

setenforce 0

修改/etc/selinux/config文件SELINUX=disable

启动应用

service mongod start

如果启动失败,则编辑/usr/lib/systemd/system/mongod.service,注释掉 Type=forking,修改后执行systemctl daemon-reload

2、配置复制集

执行mongo --port 27017进入命令行,执行以下命令初始化

rs.initiate({
	_id:'tech-repl', 
	members:[
		{
		_id:0,
		host:'10.200.1.77:27017'
		},
		{
		_id:1,
		host:'10.200.1.78:27017'
		},
		{
		_id:2,
		host:'10.200.1.79:27017'
		}
	]
})

通过 rs.conf() 查看配置是否成功
至此,复制集部署完成,可通过 rs.status() 查看集群状态

3、连接使用

使用客户端进行连接
在这里插入图片描述
连接成功
在这里插入图片描述
创建数据后,三个节点均同步数据
在这里插入图片描述

4、测试

在这里插入图片描述
停止主节点服务,在10.200.1.78上执行

service mongod stop

主节点自动切换至其他节点
在这里插入图片描述

添加数据
在这里插入图片描述

重新启动10.200.1.78服务

service mongod start

10.200.1.78重新加入集群
在这里插入图片描述
且新增的数据同步至10.200.1.78
在这里插入图片描述
集群测试成功!!!

5、常用运维

官方文档地址:https://www.mongodb.com/docs/v5.0/administration/replica-set-deployment/

1)移除集合

tech-repl:PRIMARY> rs.remove("10.200.1.79:27017")
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1678155168, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1678155168, 1)
}

移除成功
在这里插入图片描述
2)添加集合

tech-repl:PRIMARY> rs.add( { host: "10.200.1.79:27017" } )
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1678155329, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1678155329, 1)
}

添加成功
在这里插入图片描述
3)重新添加新节点
先从集群中移除79,并停止79上的mongodb服务,删除数据目录下的文件
在这里插入图片描述
在77上执行

tech-repl:PRIMARY> rs.add( { host: "10.200.1.79:27017" } )
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1678156013, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1678156013, 1)
}

添加成功
在这里插入图片描述
4)修改节点信息

修改节点地址:

cfg = rs.conf()
cfg.members[0].host = "mongo2.example.net"
rs.reconfig(cfg)

修改节点优先级:

cfg = rs.conf()
cfg.members[0].priority = 0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2
rs.reconfig(cfg)

6、spring-boot接入

spring:
  data:
    mongodb:
      uri: mongodb://10.200.1.77:27017,10.200.1.78:27017,10.200.1.79:27017/aaatest
      auto-index-creation: false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值