使用环境: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折。更多优惠微信关注公众号:【折价寄件】
感谢阅读!!!!