场景:
需求:
解决方案:
步骤:
Stage 1:【生产环境】修改备份文件映射
Stage 2:【生产环境】重新构建mongodb
Stage 3:【客户环境】修改备份文件映射,同 Stage 1
Stage 4:【客户环境】重新构建mongodb,同 Stage 2
Stage 5:【生产环境】进入mongodb容器,并备份到/backup中
Stage 6:【生产环境】下载备份 /backup
Stage 7:【客户环境】备份迁移至客户环境 /backup
Stage 8:【客户环境】进入mongodb容器,并恢复
场景:
- 【系统】生产环境:Ubuntu 22
- 【mongo】生产环境:docker 中安装 mongodb
- 【数据库】: xph
- 【集合个数】:1万个+
- 【系统】客户环境:windows server 2020
- 【mongo】客户环境:docker 中安装 mongodb
- 【数据库】: xph
需求:
将生产上33个集合数据迁移到客户环境中
解决方案:
- 【备份】mongodump
- 【恢复】mongorestore
步骤:
Stage 1:【生产环境】修改备份文件映射
- 作用:映射出备份文件,方便后面下载到客户服务器上
- ./backup:/backup :映射到docker-compose.yaml所在同级backup目录中
- 这里重新构建mongodb时backup文件夹自动创建
version: '3.1'
services:
mongo:
image: mongo:4.2.1
container_name: mongo
restart: always
ports:
- 27017:27017
volumes:
- ./db:/data/db
- ./backup:/backup
- ./export:/data/export
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: xxxxxxxx
command:
--wiredTigerCacheSizeGB 30
deploy:
resources:
limits:
memory: 30G
reservations:
memory: 5G
networks:
default:
external:
name: xph-network
Stage 2:【生产环境】重新构建 mongodb
- docker-compose --compatibility up -d --build
- 或 docker-compose up -d --build
Stage 3:【客户环境】修改备份文件映射,同 Stage 1
- E:\docker\mongodb\backup
Stage 4:【客户环境】重新构建 mongodb,同 Stage 2
- docker-compose --compatibility up -d --build
- 或 docker-compose up -d --build
Stage 5:【生产环境】进入 mongodb 容器,并备份到 /backup 中
- docker exec -it mongo /bin/bash
- 备份指令如下(33个集合)
mongodump --username root --password "xxx" --collection 16068044 --db xph --out /backup
mongodump --username root --password "xxx" --collection 16068045 --db xph --out /backup
.
.
.
Stage 6:【生产环境】下载备份 /backup
Stage 7:【客户环境】备份迁移至客户环境 /backup
- 迁移至客户该目录下:E:\docker\mongodb\backup
Stage 8:【客户环境】进入 mongodb 容器,并恢复
- docker exec -it mongo /bin/bash
- 输入如下指令恢复
mongorestore --authenticationDatabase admin --username root --password "xxx" --dir=/backup/
- 恢复中