zoukankan      html  css  js  c++  java
  • mongodb 数据库备份脚本

    写了小shell bash, 用于给mongodb数据进行备份

     #!/bin/bash  
     #backup MongoDB  
     
    #文件目录
    #backup MongoDB  
     #!/bin/bash  
    #backup MongoDB  
    #文件目录
    MONGO_HOME=/usr/work/mongoDB
    #mongodump命令路径  
     
    DUMP=$MONGO_HOME/mongo/bin/mongodump
     #临时备份目录  
    if [ ! -d "$MONGO_HOME/mongodb_bak_now" ]; then
             mkdir $MONGO_HOME/mongodb_bak_now
    fi
    OUT_DIR=$MONGO_HOME/mongodb_bak_now
    #备份存放路径  
    if [ ! -d "$MONGO_HOME/mongodb_bak_list" ]; then
             mkdir $MONGO_HOME/mongodb_bak_list
    fi
    TAR_DIR=/usr/work/mongoDB/mongodb_bak_list
    #获取当前系统时间  
    DATE=`date +%Y_%m_%d`
    #DAYS=15代表删除15天前的备份,即只保留近15天的备份  
    DAYS=15
    #最终保存的数据库备份文件  
    TAR_BAK="mongodb_bak_$DATE.tar.gz"
    
    cd $OUT_DIR
    rm -rf $OUT_DIR/*
    mkdir -p $OUT_DIR/$DATE
    #备份全部数据库  
    $DUMP -h dev.iwhere.com:27017 -o $OUT_DIR/$DATE

    # 带密码链接方式
    mongodump -h 172.27.137.26:36137 -d ssdb -o f:datassdb170505 -u=administrator -p=qqddd.222
    #压缩为.tar.gz格式 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #删除15天前的备份文件 find $TAR_DIR/ -mtime +$DAYS -delete

    exit

    写了个远程的, 不太管用

    #!/usr/bin/expect 
    set host_ip [index $argv 0]
    set username [index $argv 1]
    set passwd [index $argv 2]
    
    spawn scp  -r $TAR_DIR/$TAR_BAK $username@$host_ip:/opt/mongodb_bak/
    expect {
            "(yes/no)?"
                    {
                            send "yes
    "
                            expect "*assword:" {send "$password
    "}
                    }
            "*assword:"
                    {
                            send "$password
    "
                    }
    }
    expect "100%"
    expect eof

     可加入到linux执行计划里面, 就会实现自动备份了

    vim /etc/crontab
    00 00 * * 7 root /usr/work/mongoDB_back.sh
    #秒, 分  时, 日 周, 用户  执行脚本

     ps: 当带有密码的备份报错时, 需要添加: 

    当备份时报错: 
    Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.
    
    需要添加--authenticationDatabase admin

    然后, 数据恢复( 使用mongorestore)

    ./mongorestore -h www.wenbronk:27017 -d test /opt/wenbronk_soft
    /mongo/mongodb-3.4v/datas/iwhere/project/bak/mongdb_136/mongodb_bak_now/2017_05_03/test/

    参数解释: 

    -h 指定要同步的服务器
    -d 指定要同步后的数据库名, 可不同名
    然后是本地保存的数据存放路径
    –drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用.
  • 相关阅读:
    MSN无法登录(错误代码80072745)的解决方法
    C#3.0新体验(二) 扩展方法
    My DreamTech
    让IE崩溃的bug, IE8也一样崩溃
    多线程的相关概念
    10条PHP经验总结
    PHP框架 CI与TP之MVC比较
    多线程设计要点
    Linux yum命令的使用技巧
    BigPipe 的工作原理
  • 原文地址:https://www.cnblogs.com/wenbronk/p/6515192.html
Copyright © 2011-2022 走看看