linux ubuntu 配置mongodb集群-副本集模式

使用环境:linux ubuntu 20.04.2

我这里是在同一台电脑上,启动了3个mongo服务,分配不同的端口。一个主节点,2个从节点。

#如果是直接在ubuntu用命令安装的mongo
#启动mongo
sudo service mongod start

#停止mongo
sudo service mongod stop

#修改mongo配置表
sudo nano /etc/mongod.conf
#修改两个地方
#设置bindIp,表示允许任何IP访问mongo
bindIp: 0.0.0.0
#设置副本集名称,每个版本设置方式不一样。根据版本设置,
#如果mongo启动不了,就有可能是这里配置的问题
replication:
  replSetName: mongo-replica
#修改后按ctrl+o,然后回车键保存,再按ctrl+x,退出编辑

#子节点上也需要修改上述配置表。修改的地方和值一样。



#主节点运行 对应替换ip和端口 priority为选举优先级,数字大,优先级越高

mongo --host 172.16.1.188:27017 <<EOF
 var cfg = {
   "_id": "mongo-replica",
   "version": 1,
   "members": [
     {
       "_id": 0,
       "host": "172.16.1.188:27017",
       "priority": 2
     },
     {
       "_id": 1,
       "host": "172.16.1.188:27018",
       "priority": 1
     },
     {
       "_id": 2,
       "host": "172.16.1.188:27019",
       "priority": 0
     }
   ]
 };
 rs.initiate(cfg, { force: true });
 rs.reconfig(cfg, { force: true });
 rs.secondaryOk();
 
 rs.status();
 
 db.getMongo().setReadPref('nearest');
 db.getMongo().setSecondaryOk();
EOF


#上面的是全部复制,直接粘贴运行,不能一行一行运行。

#运行后,副本集模式的集群就搭建好了。
#只有主节点才能插入数据,其他子节点只能查询主节点插入的数据

上面是直接安装的mongo操作方式,这里再附加一个docker运行的mongo集群

docker-compose.yml

version: "3.5"
services:
  mongodb-primary:
    image: mongo:4.4
    command: --bind_ip_all --replSet mongo-replica
    volumes:
      - ./data/mongodb1:/data/modelDb
    ports:
      - 27018:27017

  mongodb-secondary-1:
    image: mongo:4.4
    command: --bind_ip_all --replSet mongo-replica
    volumes:
      - ./data/mongodb2:/data/modelDb
    ports:
      - 27019:27017

  mongodb-secondary-2:
    image: mongo:4.4
    command: --bind_ip_all --replSet mongo-replica
    volumes:
      - ./data/mongodb3:/data/modelDb
    ports:
      - 27020:27017


会使用docker的,用这个更简单,直接运行docker-compose up -d。

本质和上面的差不多,不需要改配置表的操作。

docker里的command: --bind_ip_all --replSet mongo-replica,这一段就类似改配置表了。

docker运行后,只需要进入主节点的容器里面。

运行主节点的那一串代码就行了。注意更改主节点的端口,按docker的代码就要把27017改成27018,其他子节点的也是。

如果有什么问题,欢迎大佬指正。

 最后如果对你有一点点帮助,麻烦支持一下。

全国寄快递5元起,电影票8.8折。更多优惠微信关注公众号:【折价寄件】

感谢阅读!!!!