使用环境: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
#上面的是全部复制,直接粘贴运行,不能一行一行运行。
#运行后,副本集模式的集群就搭建好了。
#只有主节点才能插入数据,其他子节点只能查询主节点插入的数据
#关闭副本集:
#注释上面添加配置文件
# replication:
# replSetName: mongo-replica
#进入mongo
mongo
#运行命令停止副本集功能
use admin
db.shutdownServer()
#重启服务,变成单节点模式
sudo service mongod restart
上面是直接安装的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折。更多优惠微信关注公众号:【折价寄件】
感谢阅读!!!!