Centos上 Mongodb的主从配置,最简单有效的方法(详细过程+常见报错解析)

一、安装参考文档
二、配置主从

(一)切换到mongo所在的bin目录下,后面操作全部在bin下进行

  • 命令: cd /usr/mongodb/mongodb-linux-x86_64-3.4.18/bin (根据个人的mongo位置进行切换)

(二)修改主、从、仲裁节点配置文件

  • 命令:vi mongodb.conf
  • 主、从、仲裁的服务器上,mongo的配置只有bindIp不同,要设置好各自的ip值,不要写localhost;
  • 我的ip配置为192.168.2.222、223、224
  • 我的端口号修改了默认值为27022
  • 主从的名字是“rs”
    在这里插入图片描述

(三)分别在主、从、仲裁节点的服务器上启动mongo服务,后台启动

  • 命令:./monood -f mongo.conf &
    在这里插入图片描述

(四)在任一台服务器上链接mongo

  • 命令:./mongo 192.168.2.222:27022 # 指定ip和port登录
    在这里插入图片描述

(五)在mongo shell里操作

  • 使用管理员权限
    use admin
    在这里插入图片描述
  • 设置主从的参数, “_id"是主从关联的名字,和配置文件内的replSetName对应; “members”:是主从的成员列表,members内的”_id":是主从序列,"priority"是优先权重;"arbiterOnly"是仲裁标志,不做从属,只是负责仲裁。
    cfg={ "_id":"rs", "members":[ {"_id":0,"host":'192.168.2.222:27022',"priority":2}, {"_id":1,"host":'192.168.2.223:27022',"priority":1}, {"_id":2,"host":'192.168.2.224:27022',"arbiterOnly":true}] };
    在这里插入图片描述
  • 初始化主从配置信息,返回ok,即为配置成功。
    rs.initiate(cfg)
    { "ok" : 1 }
    在这里插入图片描述
  • 查看副本集的状态
    rs:OTHER> rs.status()
    {返回一长串主从信息… 不展示了}
    在这里插入图片描述
三、报错解析
1、没有配置成功。
{
    "info" : "run rs.initiate(...) if not yet done for the set",
    "ok" : 0,
    "errmsg" : "no replset config has been received",
    "code" : 94,
    "codeName" : "NotYetInitialized"
}
2、从属服务器mongo内有数据,需要删除数据库的数据。

解决:尝试注释掉掉服务器的从属关系,恢复为一个单纯的服务器,然后将数据库内的数据都删掉,再恢复从属关系并重启数据库。

{
    "ok" : 0,
    "errmsg" : "'192.168.2.224:27022' has data already, cannot initiate set.",
    "code" : 110,
    "codeName" : "CannotInitializeNodeWithData"
}
3、从属服务器没有设置读写功能。

解决:在从服务器上设置命令rs.slaveOk()后,再查询即可。

Error: error: {
    "ok" : 0,
    "errmsg" : "not master and slaveOk=false",
    "code" : 13435,
    "codeName" : "NotMasterNoSlaveOk"
}

在这里插入图片描述

4、有些从服务没有响应

解决:①查看selinux是关闭的,这个先排除;②iptables -nvL, wps, 这么多防火墙规则,关了它;③重启mongodb服务

{
    "ok" : 0,
    "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 192.168.3.221:27017 failed with Failed attempt to connect to 192.168.3.221:27017; couldn't connect to server 192.168.3.221:27017 (192.168.3.221), connection attempt failed",
    "code" : 74
}
四、重点提醒
  1. 一定要先把从属服务器的数据库数据删除再配置主从
  2. 报错了不要慌,看看防火墙什么的关了没有
  3. 配置文件只需要改ip和开启从属关系,其他的不要乱配置
  4. 如果莫名失败,那就mongo卸载了重新来过~大不了从头再来!!!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值