mongoDB搭建集群

(学习自黑马)

下载对应linux版本MongoDB

源码下载地址:https://www.mongodb.com/download-center#community

目前在一台服务器开三个端口模拟三个mongodb,

配置一个主节点27017,

一个从节点27018,

一个仲裁者27019

配置主节点,副节点,仲裁节点

(下面的创建文件一共有三份,通过不同的端口号实现 , 将配置文件的端口修改成对应节点端口即可,注意路径也要跟着修改)

#创建文件log日志文件data数据文件 conf配置文件

mkdir -p /mongodb/replica_sets/myrs_{端口号}/log \ &
mkdir -p /mongodb/replica_sets/myrs_{端口号}/data/db
vim /mongodb/replica_sets/myrs_{端口号}/mongod.conf

mongod.conf文件内容

systemLog:
  destination: file
  path: "/mongodb/replica_sets/myrs_{端口号}/log/mongod.log"
  logAppend: true
storage:
  dbPath: "/mongodb/replica_sets/myrs_{端口号}/data/db"
  journal:
  #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
    enabled: true
processManagement:
  #启用在后台运行mongos或mongod进程的守护进程模式。
  fork: true
  #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
  pidFilePath: "/mongodb/replica_sets/myrs_{端口号}/log/mongod.pid"
net:
  #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
  #bindIpAll: true
  #服务实例绑定的IP 本机ip
  bindIp: localhost,192.168.0.252  #bindIp
  #绑定的端口
  port: {端口号}
replication:
  #副本集的名称
  replSetName: myrs

启动mongodb: (三个都要启动)

/{你上传的mongodb路径}/mongod -f 
/mongodb/replica_sets/myrs_{端口号}/mongod.conf

查看启动状态 出现三个服务代表启动成功

ps -ef | grep 'mongo'

[root@CentOS7 ~]# ps -ef | grep 'mongo'
root     27598     1  0 10:15 ?        00:00:17 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27017/mongod.conf
root     29589     1  0 10:59 ?        00:00:06 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27018/mongod.conf
root     30045     1  0 11:08 ?        00:00:04 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27019/mongod.conf

进入主节点,这时使用show dbs命令会报错需要执行初始化副本集

rs.initiate()

执行完成后, show dbs 命令成功

添加从节点

rs.add("192.168.0.252:27018")

查看状态

rs.status()

members里面即为集群配置

"members" : [
        {
            "_id" : 0,
            "name" : "192.168.0.252:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 4840,
            "optime" : {
                "ts" : Timestamp(1678332988, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2023-03-09T03:36:28Z"),
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "electionTime" : Timestamp(1678331608, 1),
            "electionDate" : ISODate("2023-03-09T03:13:28Z"),
            "configVersion" : 2,
            "self" : true,
            "lastHeartbeatMessage" : ""
        },
        {
            "_id" : 1,
            "name" : "192.168.0.252:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 40,
            "optime" : {
                "ts" : Timestamp(1678332988, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1678332988, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2023-03-09T03:36:28Z"),
            "optimeDurableDate" : ISODate("2023-03-09T03:36:28Z"),
            "lastHeartbeat" : ISODate("2023-03-09T03:36:34.887Z"),
            "lastHeartbeatRecv" : ISODate("2023-03-09T03:36:34.099Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "192.168.0.252:27017",
            "syncSourceHost" : "192.168.0.252:27017",
            "syncSourceId" : 0,
            "infoMessage" : "",
            "configVersion" : 2
        }
    ]

添加仲裁节点

rs.addArb("192.168.0.252:27019") 

此时在查看状态members里面会多出仲裁节点

登录从节点

/{路径}/bin/mongo --host 192.168.0.252 --port=27018

此时使用show dbs报错

设置为从节点

rs.slaveOk()

此时使用show dbs 成功 现在可实现了读写分离,让主插入数据,让从来读取数据

登录仲裁者节点

/{路径}/bin/mongo --host 192.168.0.252 --port=27019

设置为仲裁节点

rs.slaveOk()

完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值