设为首页 收藏本站
查看: 4893|回复: 6

[经验分享] 使用LVM对Mongodb进行速度快照和压缩备份

[复制链接]

尚未签到

发表于 2013-5-8 08:40:27 | 显示全部楼层 |阅读模式

这里使用LVM 逻辑磁盘对 Mongodb进行超速备份,mongodb到了几十G以上,用mongodb工具备份的速度,会让我们感到相当蛋疼的慢,这时候我们可以进行mongdb的data目录进行LVM快照备份。



000927115.jpg


原理:通过lvm快照给lvm真身拍个照片,当lvm真身发送改变时,lvm快照把lvm真身改变之前的内容存放在快照上,这样在lvm快照有效的这段时间内,我们看到的lvm快照上的内容始终是lvm真身在创建lvm快照时内容,通过备份lvm快照即可达到在线备份lvm真身的目的。需要注意的是,当lvm快照比lvm真身小时,若lvm真身发生的改变大于lvm快照,则lvm快照将变得无法读取而失效; 若lvm快照大于等于lvm真身,则不会发生前面的情况。



用法:

-g 是VG组     -v 是具体的lv逻辑盘


  • ./mongolvmbackup.sh -g myvolgroup -v mongodata

地址: http://rfyiamcool.blog.

脚本:

  • [Shell] 纯文本查看 复制代码
    #!/bin/bash -e 
     
    # Backup the local MongoDB database by: 
    # 
    #  
    #  1  lvm snapshot mongodb's data volume 
    #  2  unlock mongodb 
    #  3   bzip2 the snapshot into tempdir 
     
    #在压缩的备份将暂时分级传输 
     
    TARGET_DIR=/mnt/mongosnaps 
     
    #保留的天数 
    LOCAL_RETENTION_DAYS=7 
     
    #压缩的等级 
    COMPRESS_PROG=bzip2 
    COMPRESS_SUFFIX=tbz2 
    COMPRESS_LEVEL=6 
     
     
    print_help() { 
      echo 
      echo "$0: -g <lvmgroup> -v <lvmvolume> -b <s3 bucket>" 
      echo 
      echo "Snapshot & compress MongoDB databases present on this host.  Place them in" 
      echo "$TARGET_DIR and create a 'latest' symlink." 
      echo 
      exit 0 
    } 
     
     
    # Check for some required utilities 
    command lvcreate --help >/dev/null 2>&1 || { echo "Error: lvcreate is required.  Cannot continue."; exit 1; } 
    command lvremove --help >/dev/null 2>&1 || { echo "Error: lvremove is required.  Cannot continue."; exit 1; } 
    command $COMPRESS_PROG -V >/dev/null 2>&1 || { echo "Error: compression util required.  Cannot continue."; exit 1; } 
     
     
    s3bucket='' 
    vgroup='' 
    volume='' 
     
    while [ $# -gt 0 ] 
    do 
      case $1 in 
        -h) print_help ;; 
        --help) print_help ;; 
        -b) s3bucket=$2 ; shift 2 ;; 
        -g) vgroup=$2 ; shift 2 ;; 
        -v) volume=$2 ; shift 2 ;; 
        *) shift 1 ;; 
      esac 
    done 
     
     
    #检查卷 
    if [ "$vgroup" == "" ] 
    then 
      echo "No group set, won't continue" 
      exit 1 
    fi 
    if [ "$volume" == "" ] 
    then 
      echo "No volume set, won't continue" 
      exit 1 
    fi 
     
     
    # Check volume is a real LVM volume 
    if ! lvdisplay "/dev/$vgroup/$volume" >/dev/null 2>/dev/null 
    then 
      echo "/dev/$vgroup/$volume is not a real LVM volume!" 
      exit 1 
    fi 
     
     
    # Figure out where to put it 
    date=`date +%F_%H%M` 
    targetfile="${volume}-${date}-snap.${COMPRESS_SUFFIX}" 
     
     
    # ============================================================================= 
    # Print a meaningful banner! 
     
     
    echo "==================== LVM MONGODB SNAPSHOT SCRIPT =====================" 
    echo 
    echo "  Snapshotting: /dev/${vgroup}/${volume}" 
    echo "  Target:       ${TARGET_DIR}/${targetfile}" 
    echo 
     
    #如果目标文件夹不存在的话,创建 
    if [ ! -d "$TARGET_DIR" ] 
    then 
      echo "Your target dir ${TARGET_DIR} doesn't exist and I'm too cowardly to create it" 
      exit 1 
    fi 
     
     
    # 创建快照 
    snapvol="$volume-snap" 
    echo "Freezing MongoDB before LVM snapshot" 
    mongo -eval "db.fsyncLock()" 
    echo 
    echo "Taking snapshot $snapvol" 
    lvcreate --snapshot "/dev/$vgroup/$volume" --name "$snapvol" --extents '90%FREE' 
    echo 
    echo "Snapshot OK; unfreezing DB" 
    mongo -eval "db.fsyncUnlock()" 
    echo 
    echo 
     
    # 挂载LVM快照 
    mountpoint=`mktemp -t -d mount.mongolvmbackup_XXX` 
    mount -v -o ro "/dev/${vgroup}/${snapvol}" "${mountpoint}" 
    echo 
     
     
    find "$TARGET_DIR" -iname "*-snap.${COMPRESS_SUFFIX}" -mtime +${LOCAL_RETENTION_DAYS} -delete 
    echo 
     
    # 按照我们先前设置的比率进行压缩 
    echo "Compressing snapshot into ${TARGET_DIR}/${targetfile}" 
    cd "${mountpoint}" 
    tar cv * | $COMPRESS_PROG "-${COMPRESS_LEVEL}" -c > "${TARGET_DIR}/${targetfile}" 
    echo 
    cd - 
    cd "$TARGET_DIR" 
    rm -vf latest.${COMPRESS_SUFFIX} 
    ln -v -s ${targetfile} latest.${COMPRESS_SUFFIX} 
    cd - 
     
    echo 
    echo 
     
    # 卸载并删除用于备份的那个快照 
    echo "Removing temporary volume..." 
    umount -v "$mountpoint" 
    rm -rvf "$mountpoint" 
    echo 
    lvremove -f "/dev/${vgroup}/${snapvol}" 
    echo 
    echo 




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5702-1-1.html 上篇帖子: win7下MongoDB集群告别裸奔 下篇帖子: ubuntu12.04 下搭建LNMP+memcahce+memcahced+redis+mongodb扩展 恢复

尚未签到

发表于 2013-5-8 08:48:39 | 显示全部楼层
人生自古谁无死,啊个拉屎不用纸!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-23 17:52:18 | 显示全部楼层
人生自古谁无死,啊个拉屎不用纸!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-6 21:47:40 | 显示全部楼层
啥时硬件也可以COPY就好了!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-20 17:08:43 | 显示全部楼层
饭在锅里,我在床上*^_^*

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-28 14:33:32 | 显示全部楼层
只有假货是真的,别的都是假的!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-8-22 06:03:38 | 显示全部楼层
锻炼肌肉,防止挨揍!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表