• docker安装mongodb并备份


    安装

    官方镜像地址: https://hub.docker.com/_/mongo?tab=description

    可以查看对应的dockerfile, 通过观察docker-entrypoint.sh可以看出,docker版的mongo移除了默认的/etc/mongo.conf, 修改了db数据存储路径为 /data/db.

     docker run  
    --name mongod 
    -p 27017:27017  
    -v /data/opt/mongodb/data/configdb:/data/configdb/ 
    -v /data/opt/mongodb/data/db/:/data/db/ 
    -d mongo:4 --auth 
    

    设置账号和密码

    登陆镜像,设置admin

     docker exec -it mongod mongo admin
     
     >db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
    

    设置一个其他用户

     db.auth("admin", "admin123456")
     db.createUser({ user: 'yapi', pwd: 'yapi123456', roles: [ { role: "readWrite", db: "yapi" } ] });
     
    

    远程登陆

    我们从一个其他的服务器去登陆刚才创建的mongo。

    先来获取刚才创建的mongo的host,可以通过docker inspect,也可以

     docker exec -it mongod cat /etc/hosts
    

    先用docker创建另一个mongo_client并连接我们的mongo

     docker run -it --name mongo mongo:4 mongo -host 172.17.0.5 -u yapi -p yapi123456
     
     > db
    test
    > use yapi
    switched to db yapi
    > show collections
    test
    >  db.test.find();
    { "_id" : ObjectId("5c9dca2b4d225a0ca0fb29c9"), "name" : "ryan" }
    

    备份

    创建mongodb服务的时候已经导出了我们的数据文件,现在干掉docker,重新跑,看我们的数据是否丢失。

     docker kill mongod
     docker rm mongod
      docker run  
    --name mongod 
    -p 27017:27017  
    -v /data/opt/mongodb/data/configdb:/data/configdb/ 
    -v /data/opt/mongodb/data/db/:/data/db/ 
    -d mongo:4 --auth 
    
    去登陆查看数据,发现没有丢失
    

    接下来就是备份我们的/data/opt/mongodb/data 目录即可。当然,这是全量备份,想要增量备份,参照官方文档进行备份。

    全量备份/data/opt/mongodb/data

    创建备份目录/data/opt/mongodb/backup/data

    创建备份日志目录: /data/log/backup/mongodb

    创建备份脚本backup-mongodb.sh

     source /etc/profile
    
    LOG_DIR=/data/log/backup/mongodb
    SOURCE_DIR=/data/opt/mongodb/data
    BACKUP_DIR=/data/opt/mongodb/backup/data
    
    REMOTE_IP=192.168.1.98
    REMOTE_USER=root
    REMOTE_DIR=/data/opt/backup/mongodb
    
    
    function log()
    {
      echo "[ `date '+%Y-%m-%d %H:%M:%S'` ] $1"
    }
    
    
    # 备份
    function main(){
        d=`date "+%Y%m%d%H%M%S"`
        fname=${BACKUP_DIR}/backup_${d}.tgz
        log "开始备份 ${fname}"
        tar -zcf ${fname} ${SOURCE_DIR}
    
        scp ${fname} $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
        log "备份到远程成功"
    
    
        log "开始删除7天前的备份"
        find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
        log "删除完毕"
    }
    
    
    main >> ${LOG_DIR}/backup.log  2>&1
    

    创建定时任务,每天2点全量备份

     0 2 * * * sh /data/opt/mongodb/backup/backup-mongodb.sh
    

    同时,远程备份服务器的定时清理脚本

    source /etc/profile
    
    BACKUP_DIR=/data/opt/backup
    LOG_DIR=/data/log/backup
    
    function log()
    {
      echo "[ `date '+%Y-%m-%d %H:%M:%S'` ] $1"
    }
    
    
    # 
    function main(){
    
        log "开始删除7天前的备份"
        find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
        log "删除完毕"
    }
    
    main >> ${LOG_DIR}/clean_backup.log 2>&1
    
  • 相关阅读:
    springboot(10)logback日志配置
    springboot(9)springboot整合redis
    springboot(8)springboot整合mybatis
    springboot(7)springboot整合freemarker和thymeleaf
    springboot(6)过滤器 监听器 拦截器
    springboot(5)单元测试及MockMVC类的使用及自定义异常处理
    springboot(4)springboot热部署插件及idea热部署及配置文件注解注入
    springboot(3)使用MultipartFile上传数据文件及项目打成jar包
    springboot(2)内置序列化框架为Jackson及springboot文件目录结构
    git rebase
  • 原文地址:https://www.cnblogs.com/woshimrf/p/docker-install-mongodb-and-backup.html
Copyright © 2020-2023  润新知