• Shell脚本备份Mongodb数据库


    诚邀访问我的个人博客:我在马路边
    更好的阅读体验点击查看原文:Shell脚本备份Mongodb数据库
    原创博客,转载请注明出处

    @

    项目需要对Mongodb的数据进行定期备份,以免出现什么差错难以追回,但是数据量比较大,本机硬盘不够用,还要异地备份,于是乎通过通过dump远程链接目标库,然后将数据dump到另一个位置,暂时还在执行中,如果有错误再进行修改。


    环境还原

    • Mongodb服务器A(Linux),备份机器B(Windows),备份移动硬盘C。
    • B机器可以远程A服务器,由于AB服务器的硬盘剩余空间都不够备份,在B机器插入移动硬盘C。
    • 在B机器上通过VirtualBox创建Linux虚拟机,与B机器的移动硬盘C进行共享文件夹D
    • Linux虚拟机创建shell脚本,将数据备份到共享文件夹D
    • Linux虚拟机需要安装Mongodb数据库,如何安装数据库请参考 Centos7安装MongoDB4.0,以便执行mongodump命令。

    环境创建

    Linux虚拟机在共享目录<folder>下创建导出dump的文件夹和将dump文件压缩的目标文件夹,命令如下:

    注:执行的时候请将下面提到的所有<folder>替换成你的目标目录,比如/media/sf_mongobak/

    # 切换到你的目标目录
    $ cd <folder>
    
    # 创建文件夹
    $ mkdir -p dump_bak
    $ mkdir -p tar_bak
    

    编写shell脚本

    创建好文件夹后只需要编写shell脚本就可以了,shell脚本里会用到上述创建的文件夹,如果写错了执行的时候会报错,请注意。

    准备文件

    # 切换到你的目标目录
    $ cd <folder>
    
    # 创建shell文件
    $ sudo touch mongobak.sh
    
    # 编写文件
    $ vi mongobak.sh
    
    

    创建shell脚本

    mongobak.sh文件中插入如下内容,为了方便理解下面写的路径都是临时编写,请将/media/sf_mongobak自行修改成你的目录。

    # 在文件中编写如下内容
    ## 指定到你安装的Mongodb bin目录下的mongodump
    dump=/usr/local/mongodb/bin/mongodump
    ## 填写你创建dump_bak文件的绝对路径
    out_dir=/media/sf_mongobak/dump_bak
    ## 填写你创建tar_bak文件的绝对路径
    tar_dir=/media/sf_mongobak/tar_bak
    ## 记录备份时间
    sysdate=`date +%Y_%m_%d`
    db_user=***
    db_pass=***
    ## 设置删除期限,删除10天前的备份
    days=10
    ## 设置最终压缩的文件名称,带有日期
    tar_bak="mondodb_bak_$sysdate.tar.gz"
    
    cd $out_dir
    # 删除之前的dump文件
    sudo rm -rf $out_dir
    # 创建新的文件夹存放dump文件
    sudo mkdir -p $out_dir/$sysdate
    # 导出172.18.9.123机器上的masterdata库的所有表到$out_dir/$sysdate文件夹
    $dump -h 172.18.9.123 -u $db_user -p $db_pass -d masterdata -o $out_dir/$sysdate
    # 压缩$out_dir/$sysdate到目标文件夹
    sudo tar -zcvf $tar_dir/$tar_bak $out_dir/$sysdate
    # 删除指定期限钱的备份文件
    sudo find $tar_dir/ -mtime +$days -delete
    # 退出
    exit
    
    

    注:上面插入的内容请注意空格,比如date +%Y_%m_%d获取时间date+号之间就有空格。

    导出dump数据的时候根据自己的需求自行修改,dump命令可参考:Mongo的备份和恢复(mongodump 和mongorestore )

    执行shell脚本

    给文件添加权限,然后shell命令执行。

    # 添加权限
    $ chmod +x mongobak.sh
    
    # 执行shell脚本
    sh +x mongobak.sh
    

    在执行过程中遇到错误error running listCollections,还有其他的错误一般就是mongodump命令使用不对,这里参考了一篇文章:Not able to run mongodump,其他的请自行百度或者Google。

    进阶版

    以上满足了备份的脚本化,但是如果要做定时任务定期执行,那么就要结合linux的crontab完成,具体使用可参考文章Linux定时任务Crontab使用

    感谢

    参考来源:用shell脚本实现MongoDB数据库自动备份

    诚邀访问我的个人博客:我在马路边
    更好的阅读体验点击查看原文:Shell脚本备份Mongodb数据库
    原创博客,转载请注明出处

  • 相关阅读:
    获取iframe中的元素
    用npm安装express后express命令找不到
    Openfire 单人聊天和多人聊天(发送消息、接收消息)
    openfire拦截数据包与发送广播
    xmpp with openfire 插件-利用Broadcast实现群
    Smack 结合 Openfire服务器,建立IM通信,发送聊天消息
    openfire默认数据库与应用系统数据库整合
    ios即时通讯客户端开发之-mac上安装MySQL
    ios即时通讯客户端开发之-mac上搭建openfire服务器
    IOS block使用中碰到的一个小坑
  • 原文地址:https://www.cnblogs.com/kerbside/p/10212836.html
Copyright © 2020-2023  润新知