mongo docker版配置副本集

文章目录

配置步骤

拉取image, mongo docker版本:

$ docker pull mongo:5.0.2

keyfile生成:

$ mkdir -p /data/keyfile  
$ openssl rand -base64 745 > /data/keyfile/mongoReplSet-keyfile  
$

#启动日志出现"errmsg":"Error reading file /data/keyfile/mongoReplSet-keyfile: Permission denied"
#容器启动时增加--privileged, 配置文件权限:
$ chmod 600 /data/keyfile/mongoReplSet-keyfile  
$ chown 999:root  /data/keyfile/mongoReplSet-keyfile

docker容器创建:

docker run -itd --name mongo \
  		--privileged \
  		-e MONGO_INITDB_ROOT_USERNAME=root \
  		-e MONGO_INITDB_ROOT_PASSWORD=123456 \
 		-p 27018:27017 \
  		-v /data/keyfile/:/data/keyfile \
  		mongo:5.0.2 --auth --keyFile /data/keyfile/mongoReplSet-keyfile --bind_ip_all --replSet rs1

初始化副本集:

$ docker exec -it mongo bash  
$ mongo -uroot -p123456  
> use admin
> conf={ _id : 'rs1', members: [   { _id : 0, host : "192.168.10.88:27018" } ] } 
> rs.initiate(conf)

为指定库创建连接用户:

> use test  
> db.createUser( {user: "test",pwd: "123456",roles: [ { role: "readWrite",db:"test"} ]})

增加节点:

> rs.add("192.168.10.88:27019")

删除节点:

> rs.remove("192.168.10.88:27019")

设置节点优先级:

> conf=rs.conf()  

可从打印中看到节点_id,将_id为1的节点优先级设为2
在这里插入图片描述

> conf.members[1].priority=2  
> rs.reconfig(conf)  
> rs.status()  

#打印中可以看到member中的stateStr发生变化
在这里插入图片描述

要在Docker上安装MongoDB副本,你可以按照以下步骤进行操作: 1. 首先,创建一个网络以便于容器之间的通信,可以使用以下命令创建网络: ``` docker network create mongo-cluster ``` 2. 然后,创建一个配置服务器的容器。使用以下命令创建容器: ``` docker run --name config-server -d \ --net=mongo-cluster \ --privileged=true \ -p 20011:20011 \ -v /docker/mongo-cluster/config-server:/data/db \ mongo:latest \ --configsvr --replSet rs_config_server --bind_ip_all ``` 3. 接下来,创建三个数据节点的容器。使用以下命令创建容器: ``` docker run --name data-node1 -d \ --net=mongo-cluster \ --privileged=true \ -p 20021:20021 \ -v /docker/mongo-cluster/data-node1:/data/db \ mongo:latest \ --shardsvr --replSet rs_data_node --bind_ip_all docker run --name data-node2 -d \ --net=mongo-cluster \ --privileged=true \ -p 20022:20022 \ -v /docker/mongo-cluster/data-node2:/data/db \ mongo:latest \ --shardsvr --replSet rs_data_node --bind_ip_all docker run --name data-node3 -d \ --net=mongo-cluster \ --privileged=true \ -p 20023:20023 \ -v /docker/mongo-cluster/data-node3:/data/db \ mongo:latest \ --shardsvr --replSet rs_data_node --bind_ip_all ``` 4. 运行以下命令以配置和启动副本: ``` docker exec -it config-server mongo --port 20011 rs.initiate( { _id: "rs_config_server", configsvr: true, members: [ { _id : 0, host : "config-server:20011" } ] } ) ``` ``` docker exec -it data-node1 mongo --port 20021 rs.initiate( { _id : "rs_data_node", members: [ { _id : 0, host : "data-node1:20021" } ] } ) ``` ``` docker exec -it data-node2 mongo --port 20022 rs.add("data-node1:20021") ``` ``` docker exec -it data-node3 mongo --port 20023 rs.add("data-node1:20021") ``` 5. 最后,创建一个mongos路由服务器的容器。使用以下命令创建容器: ``` docker run --name mongos -d \ --net=mongo-cluster \ --privileged=true \ -p 27017:27017 \ -v /docker/mongo-cluster/mongos:/data/db \ mongo:latest \ --configdb rs_config_server/config-server:20011 --bind_ip_all ``` 现在你已经成功安装了MongoDB副本。你可以使用以下命令连接到mongos服务器并进行操作: ``` docker exec -it mongos mongo --port 27017 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值