共计 1413 个字符,预计需要花费 4 分钟才能阅读完成。
本例子使用 docker-compose
首先构建一个但节点的 MongoDB,接下来是一主两从的 MongoDB。
单节点 MongoDB
docker-compose.yml 文件内容如下
version: '3.1'
services:
singleinstance-mongo:
image: mongo
container_name: mongodb
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
ports:
- "27017:27017"
volumes:
- "/root/data/mongodb:/data/db"
command: mongod
执行
docker-compose up -d
查看状态
docker-compose ps
Name Command State Ports
------------------------------------------------------------------------
mongodb docker-entrypoint.sh mongod Up 0.0.0.0:27017->27017/tcp
远程连接确认
mongo admin --host xxx.xxx.84.205 -u root -p 123456
其中 xxx.xxx.84.205 是运行 docker 的宿主机的 IP(不是 docker 的 ip 地址)
停止 MonggoDB
docker-compose stop singleinstance-mongo
创建一主两从 MongoDB
优点:可进行读写分离,主节点只写,从节点只读。可提高并发效率
docker-compose.yml 内容如下
version: '3.1'
services:
rs1:
image: mongo
volumes:
- /data/mongodb2/replset/rs1:/data/db
command: mongod --dbpath /data/db --replSet myset
rs2:
image: mongo
volumes:
- /data/mongodb2/replset/rs2:/data/db
command: mongod --dbpath /data/db --replSet myset
rs3:
image: mongo
volumes:
- /data/mongodb2/replset/rs3:/data/db
command: mongod --dbpath /data/db --replSet myset
登入 rs1,初始化节点
docker-compose exec rs1 mongo
rs.initiate()
rs.add('rs2:27017')
rs.add('rs3:27017')
查看配置以及节点信息
rs.conf()
rs.status()
进入节点的 Mongo
docker-compose exec rs1 mongo
插入信息到主节点
docker-compose exec rs1 mongo
use test
db.test.insert({msg: 'Hello world msg from mongodb', ts: new Date()})
在从节点查看信息
docker-compose exec rs2 mongo
rs.slaveOk() //allow queries on secondary nodes
use test
db.test.find()
查看帮助
rs.help()
正文完