美文网首页Docker容器MongoDB极简教程 · Mongo · NoSQL
Docker中安装MongoDB并数据持久化及备份还原数据

Docker中安装MongoDB并数据持久化及备份还原数据

作者: 纵马横刀pro | 来源:发表于2020-10-21 19:00 被阅读0次

    使用Docker的好处就是尽量减少了环境部署,开发交付环境一致,可靠性强,容易维护。使用Docker搭建MongoDB的最重要的一点是容器无状态化,即不在容器中保存数据,重新生成数据库容器,必须保证数据库数据不丢失,所有数据保存在数据卷中,方便随时备份和恢复。

    创建数据Volume

    docker volume create mongodbdata
    

    创建MongoDB容器,并将数据映射到数据Volume中

    docker run --name my-mongo --restart=always -v mongodbdata:/data/db -d mongo
    

    此时就可以正常使用了,其他容器要使用MongoDB只需要 --link my-mongo 就可以了

    备份数据库,这里有两种方法,分别是:通过创建挂载Volume的容器去备份数据到物理盘、直接从Volume的物理挂载点备份文件

    1. 通过创建挂载Volume的容器去备份数据到物理盘

    通过busybox容器的tar命令将数据Volume中的数据打包备份到本地

    cd到需要存放备份文件的目录
    docker run -v $(pwd):/backup -v mongodbdata:/mongodbdata busybox tar cvf /backup/$(date +%Y%m%d%H%M%S).tar /mongodbdata
    

    还原数据库,通过busybox容器的tar命令将本地备份文件覆盖到数据Volume中

    cd到存放备份文件的目录
    docker run -v $(pwd):/backup -v mongodbdata:/mongodbdata busybox tar xvf /backup/backup.tar -C ./
    

    2. 直接从Volume的物理挂载点备份文件

    所有的Volume从原理上都是直接挂载物理盘的某个挂载点,所以可以找到挂载点并直接打包复制文件出来做备份

    查看Volume的物理挂载点

    docker volume inspect mongodbdata
    
    [
        {
            "CreatedAt": "2019-07-05T09:57:27+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/mongodbdata/_data",
            "Name": "mongodbdata",
            "Options": {},
            "Scope": "local"
        }
    ]
    

    可见该Volume的物理挂载点是/var/lib/docker/volumes/mongodbdata/_data

    备份数据

    tar cvf /root/backup/mongodb/$(date +%Y%m%d%H%M%S).tar /var/lib/docker/volumes/mongodbdata/_data
    

    恢复备份

    tar xvf /root/backup/mongodb/backup.tar -C /var/lib/docker/volumes/mongodbdata/_data
    

    相关文章

      网友评论

        本文标题:Docker中安装MongoDB并数据持久化及备份还原数据

        本文链接:https://www.haomeiwen.com/subject/efbemktx.html