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!!!"
  • 相关阅读:
    近一年工作感悟2
    项目管理实践感想
    领导力思考
    ASP.NET内置对象
    asp.net 在GridView控件上实现修改、添加、删除
    asp.net导出excel和打印指定内容的简单代码
    js让网页适应屏幕大小
    只能选择GridView中的一个CheckBox(单选CheckBox)
    JQuery实现拖拽draggable()方法
    获取XML文件中的值
  • 原文地址:https://www.cnblogs.com/tben/p/8985041.html
Copyright © 2011-2022 走看看