1、搭建单机mongodb容器
1.1、编辑docker-compose.yml
[root@localhost mongo]# vim docker-compose.yml
version: '3.7'
services:
mongo:
image: mongo:4.2
container_name: mongo
#command: mongod --replSet cdcReplset --bind_ip_all --auth
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
volumes:
- "/opt/dockerstore/mongo/data:/data/db"
- "/opt/dockerstore/mongo/logs:/var/log/mongodb"
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"
ports:
- 27017:27017
networks:
mongodb_network:
aliases:
- docker.mongo
networks:
mongodb_network:
1.2、启动mongodb单库容器
docker-compose up -d --build
2、准备数据
2.1、从其他环境导出数据
[root@localhost backup_from_e9]# mongodump --host 192.168.xx.xxx --port 27017 --authenticationDatabase "admin" -u "root" -p "123456" -d e9 -c invoiceOrder -o /opt/mongo/backup_from_e9/
2024-07-04T17:32:30.372+0800 writing e9.invoiceOrder to /opt/mongo/backup_from_e9/e9/invoiceOrder.bson
2024-07-04T17:32:30.882+0800 done dumping e9.invoiceOrder (41106 documents)
2.2、导入数据
mongorestore --authenticationDatabase "admin" -u "root" -p "123456" -d e9 --drop /opt/mongo/backup_from_e9/e9/invoiceOrder.bson
2.3、查看数据
mongo --authenticationDatabase "admin" -u "root" -p "123456"
> show dbs
admin 0.000GB
config 0.000GB
e9 0.019GB
local 0.000GB
> use e9
switched to db e9
> show tables
invoiceOrder
> db.invoiceOrder.count()
41106
确认导入了一个集合invoiceOrder有41106个文档记录,导入库名为e9。
3、修改单库为副本集
3.1、修改启动文件
修改docker-compose.yml,添加副本集命令行:
[root@localhost mongo]# vim docker-compose.yml
version: '3.7'
services:
mongo:
image: mongo:4.2
container_name: mongo
command: mongod --replSet cdcReplset --bind_ip_all --auth
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
volumes:
- "/opt/dockerstore/mongo/data:/data/db"
- "/opt/dockerstore/mongo/logs:/var/log/mongodb"
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"
ports:
- 27017:27017
networks:
mongodb_network:
aliases:
- docker.mongo
networks:
mongodb_network:
其中,command: mongod --replSet cdcReplset --bind_ip_all --auth这句就是以副本集方式启动的命令。
3.2、重启容器
docker-compose down
docker-compose up -d --build
3.3、初始化副本集
[root@localhost mongo]# docker exec -it mongo bash
root@57e191cf6aae:/# mongo
> use admin
switched to db admin
> db.auth("root","123456")
1
> rs.initiate({_id: "cdcReplset", members: [{_id: 0, host: "docker.mongo:27017"}]})
{ "ok" : 1 }
cdcReplset:OTHER> exit
3.4、检查数据是否正常
root@57e191cf6aae:/# mongo --authenticationDatabase "admin" -u "root" -p "123456"
MongoDB shell version v4.2.17
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2739fc57-c4e9-458f-81ed-410c29f7831a") }
MongoDB server version: 4.2.17
Server has startup warnings:
2024-07-03T10:15:30.415+0800 I CONTROL [initandlisten]
2024-07-03T10:15:30.415+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2024-07-03T10:15:30.416+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2024-07-03T10:15:30.416+0800 I CONTROL [initandlisten]
2024-07-03T10:15:30.416+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2024-07-03T10:15:30.416+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2024-07-03T10:15:30.416+0800 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
cdcReplset:PRIMARY> use admin
switched to db admin
cdcReplset:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
e9 0.019GB
local 0.000GB
cdcReplset:PRIMARY> use e9
switched to db e9
cdcReplset:PRIMARY> show tables
invoiceOrder
cdcReplset:PRIMARY> db.invoiceOrder.count()
41106
可以看到,单库模式下导入的集合依然还在,到此mongodb从单库改成但服务器副本集模式操作完成!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




