zoukankan      html  css  js  c++  java
  • Mongo Backup

    #!/bin/sh
    
    # This script is run on every mongo node. However, it checks to see if this node is the primary mongo node.
    # If it is, mongo db is backed up and deleted the user session collection files.
    # If this node is not primary mong node, nothing is done.
    
    MONGO_BACKUP_FOLDER=/backup/mongo-prod
    
    HOST_IP=`/sbin/ifconfig | sed -n 's/.*inet addr:([0-9.]+)s.*/1/p' | head -n1`
    echo "HOST_IP: " $HOST_IP
    
    HOST_NAME=`hostname`
    echo "HOST_NAME: " $HOST_NAME
    
    IS_PRIMARY=`mongo --quiet $HOST_IP --eval "print(db.isMaster().ismaster);"`
    echo "IS_PRIMARY: " $IS_PRIMARY
    
    PRIMARY_HOST=`mongo --quiet $HOST_IP --eval " var primary = db.isMaster().primary;
    if(primary && primary.indexOf(':') > 0 ) primary = primary.substring(0, primary.indexOf(':'));
    print(primary);"`
    if [ $PRIMARY_HOST == "undefined" ]
    then
        PRIMARY_HOST=`hostname`
    fi
    echo "PRIMARY_HOST: " $PRIMARY_HOST
    
    if [ "${IS_PRIMARY}" == "false" ]
    then
        echo "$PRIMARY_HOST is primary mongo node. Backing up data...."
        BACKUP_FOLDER=`date +'%Y-%m-%d_%H%M%S'`
        BACKUP_DIR=$MONGO_BACKUP_FOLDER/$BACKUP_FOLDER/$PRIMARY_HOST
    
        mkdir -p $BACKUP_DIR
        cd $BACKUP_DIR
        echo "PWD:" `pwd`
    
        EXPORT_RESULT=`mongodump -h $HOST_IP`
        echo "Backed up data in $BACKUP_DIR"
    
        #delete user session collection
        if [ -d ${BACKUP_DIR}/dump/sxa ]
        then
            if [ -f  ${BACKUP_DIR}/dump/sxa/userSessionCollection.bson ]
            then
                rm -f ${BACKUP_DIR}/dump/sxa/userSessionCollection.bson
                echo "Deleted user session data bson"
            fi
            if [ -f  ${BACKUP_DIR}/dump/sxa/userSessionCollection.metadata.json ]
            then
                rm -f ${BACKUP_DIR}/dump/sxa/userSessionCollection.metadata.json
                echo "Deleted user session metadata json"
            fi
        fi
    
        KEEP_DAYS=15
        #Delete back-up folder olders than KEEP_DAYS
        echo "Removing backup data older than $KEEP_DAYS days....."
        find $MONGO_BACKUP_FOLDER -mtime +$KEEP_DAYS -exec rm {} ;
        echo "Done removing backup data older than $KEEP_DAYS days"
    else
        echo "$HOST_NAME is not primary mongo server ($PRIMARY_HOST is primary). Back-ups are run only on the primary."
    fi
    
    echo "Complete!!!"
  • 相关阅读:
    推荐一款在IntelliJ IDEA中使用微信/QQ的插件
    springboot整合easyexcel实现Excel导入导出
    Spring Boot 跨域访问
    springboot整合mybatis-plus逆向工程
    给你自己的博客加个 Markdown
    Spring Boot实战:拦截器与过滤器
    CentOS软件的安装,更新与卸载命令
    Springboot整合pagehelper分页
    ajax请求成功回调函数没有执行问题
    ubuntu git生成ssh key (公钥私钥)配置github或者码云
  • 原文地址:https://www.cnblogs.com/tben/p/8985041.html
Copyright © 2011-2022 走看看