0%

mongodb数据库的备份与恢复

Docker下:mongodb数据库的备份与恢复

备份篇:

  • 备份数据库名称:ttd
  • 本地备份容器:126bf65cd37f

1、进入容器:

docker ps   # 查看正在运行的docker 容器
docker exec -it 126bf65cd37f /bin/bash # 进入ID:126bf65cd37f 的容器
mongodump --uri="mongodb://username:password@localhost:27017/ttd" --out /path/to/backup/ # 将数据库备份到/path/to/backup/ 文件夹下

2、打包备份文件

tar -cvf /path/to/ttd.tar /path/to/backup/      # 将/path/to/backup/ 文件夹下的备份数据库  打包到 /path/to/ttd.tar

3、复制备份打包文件到宿主机器

# 将备份的文件复制到宿主机
docker cp 126bf65cd37f:/path/to/ttd.tar /home/mycp/DataBases # 将打包文件 复制到宿主的/home/mycp/DataBases下

恢复篇:

  • 恢复数据库名称:ttd
  • 本地备份容器:126bf65cd37f

1、上传压缩包到恢复的宿主机器

这里就不讲怎么恢复了!

2、传入docker 机器(上传后的路径:/home/cdd/DataBases/ttd.tar)

mkdir /DBFiles   # 创建路径,不然可能报错
docker cp /home/cdd/DataBases/ttd.tar 8ba9426d45e3:/DBFiles # 复制到docker机器

3、解压缩

tar -xvf ttd.tar    # 解压完成会出现一个新的文件夹:ttd

4、恢复

  • 避坑1:备份的文件夹中存在 .json文件,如果直接用文件夹恢复命令是会报错的
  • 避坑2:必须要指定--authenticationDatabase admin 否则会提示权限
mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -u <username> -p <password> -d <database> /home/cdd/DataBases/ttd/Images.bson
# 如果没有 .json 文件 可以用下面的命令恢复
mongorestore --uri="mongodb://username:password@localhost:27017" /home/cdd/DataBases/ttd