Centos系统:Docker安装MongoDB,并备份还原数据

88 阅读2分钟

mongo安装

# 拉取最新mongo镜像
docker pull mongo
# 创建数据文件存储地址,防止误删docker,数据被清
mkdir -p /mnt/docker-data/mongo/data/db
# 运行容器
docker run -itd --name mongo -p 27017:27017 -v /mnt/docker-data/mongo/data/db:/data/db mongo
# 直接进入容器,使用admin登录
## 6.0以上命令
docker exec -it mongo mongosh admin
## 6.0以下命令
docker exec -it mongo mongo admin

mongo操作

创建用户并授权

db.createUser({ 
	user: "账号", 
	pwd: "账号密码", 
	roles: [{role: "角色权限编码", db: "数据库名"}]
})
  • mongoDb用户角色权限说明
    • 数据库用户角色 read、readWrite
    • 数据库管理角色 dbAdmin、dbOwner、userAdmin
    • 集群管理角色 clusterAdmin、clusterManager、clusterMonitor、 hostManager
    • 备份恢复角色 backup、restore
    • 所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    • 超级用户角色 root
    • 内部角色 __system
  • 角色说明
    • Read 允许用户读取指定数据库
    • readWrite 允许用户读写指定数据库
    • dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    • userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    • clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    • readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
    • readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
    • userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    • dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    • root 只在admin数据库中可用。超级账号,超级权限

数据备份

# 进入容器
docker exec -it mongo /bin/bash
# 执行数据备份命令
## 有用户模式
mongodump -h 127.0.0.1:27017 -u 用户 -p 密码 -d 数据库名称 -o /dump
## 无用户模式
mongodump -h 127.0.0.1:27017 -d 数据库名称 -o /dump
# 打包备份文件夹
tar -zcvf practice.tar.gz practice/
# 退出容器
exit
# 将文件复制至宿主机器  docker cp 容器名:/来源文件地址 目标地址
docker cp mongo:/dump/practice.tar.gz /mnt/docker-data/mongo/dump

数据恢复

# 将文件复制至容器内
docker cp /mnt/docker-data/mongo/dump/practice.tar.gz  mongo:/dump/
# 进入容器
docker exec -it mongo /bin/bash
# 进入备份文件夹
cd /dump
# 解压备份文件 至当前文件夹
tar -xzvf /dump/practice.tar.gz
# 执行数据还原命令
## 有用户模式
mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 备份文件地址 -u 用户 -p 密码
## 无用户名称
mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 备份文件地址

结果