zoukankan      html  css  js  c++  java
  • MongoDB数据库备份操作

    Linux服务器MongoDB数据库备份

    登录服务器

    • 使用SSH工具登录服务器
         ssh root@你服务器的ip地址 -p 你服务器ssh服务的端口
      
    • 输入密码登录成功

    下载MongoDB Tools

    • 首先去官方网站下载自己服务器对应的工具版本,个人推荐使用tgz的包进行安装.
      如:
         wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.4.1.tgz
      
    • 解压压缩文件并将文件复制到对应目录
         tar -zxvf mongodb-*-tools-*-100.4.1.tgz
         sudo cp <mongodb-database-tools-directory>/bin/* /usr/local/bin/
      
    • 将下载好的文件放置到Mongodb相同的目录(/usr/local/bin/)推荐查看我之前的Mongodb安装教程
    • 赋予执行权限
         chmod 777 /usr/local/bin/mongodump
      

    数据库备份脚本

    • 在Windows或者Linux上写入如下脚本.sh
        #!/bin/bash
    
        # Program:
        #   type title here
        # History:
        # 2021-07-24 dy first release
    
        PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin
        export PATH
        # DUMP=/usr/local/bin/mongodump                         #mongodump备份文件执行路径
        #由于mongodb官方的文件往往会放在上述path路径中,所以这里可以不指定
        OUT_DIR=/root/backup/mongo_bak_now                    #临时备份目录
        TAR_DIR=/root/backup/mongo_bak_list                   #备份存放路径
        DATE=`date +%Y_%m_%d`                                 #获取当前系统时间
        DB_USER=dbusername                                    #数据库账号
        DB_PASS=123456                                        #数据库密码
        AUTH_DB=admin                                         #认证数据库
        DB_IP=192.168.0.12                                    #数据库链接IP
        DAYS=5                                                #保留最近N天的备份
        TAR_BAK="mongo_bak_$DATE.tar.gz"                      #最终保存的数据库备份文件名
        mkdir -p /root/backup/mongo_bak_now                   #确保临时备份目录存在
        mkdir -p /root/backup/mongo_bak_list                  #确保备份存放目录存在
        cd $OUT_DIR
        rm -rf $OUT_DIR/*
        mkdir -p $OUT_DIR/$DATE
        #备份全部数据库
        mongodump -h $DB_IP -u $DB_USER -p $DB_PASS --authenticationDatabase $AUTH_DB -o $OUT_DIR/$DATE
        # 如下命令只备份 website这一个库,若是只备份部分数据库可以按照这个命令逐一添加
        # mongodump -h $DB_IP -u $DB_USER -p $DB_PASS --authenticationDatabase $AUTH_DB -d website -o $OUT_DIR/$DATE
        tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE            #压缩为.tar.gz格式
        find $TAR_DIR/ -mtime +$DAYS -delete                  #删除N天前的备份文件
        rm -rf $OUT_DIR/*                                     #删除临时文件只保留压缩包,进一步节约磁盘空间
    
    • 将上述文件保存为sh文件,本例命名为mongobak.sh
    • 生成上述sh文件后,放入到/root/bin目录下
    • 赋予执行权限
       chmod 777 /root/bin/mongobak.sh
    

    调整文件格式

    • 在Windows下编辑的上述脚本可能会存在问题,造成如下错误
      /bin/bash^M: 坏的解释器: 没有那个文件或目录
      这个问题主要是由于Linux和Windows之间的换行符差异造成.可使用 sed -i 's/ $//' filename 命令解决
       sed -i 's/
    $//' /root/bin/mongobak.sh
    
    • 执行成功后,可以先直接使用mongobak.sh命令测试看下是否能够成功备份.若是无错误可以进行如下配置实现每天定点执行备份.

    使用crontab执行每日定时备份

    • 若是系统中没有crontab,需要自行先安装根据各系统的差异执行相应命令
    • 修改crontab的配置
       crontab -e
    
    • 插入如下语句
    • 0 2 * * * /root/bin/mongobak.sh
    • 该语句表示每天早上2点整执行脚本备份数据库,若是想自定义其他时间,请自己查询crontab命令
    • 将上述添加好后,添加crontab开机自启动,可执行ntsysv命令选择crond.service并保存

    自此所有配置就已经完成.等待每日自动备份即可.本教程中的脚本备份文件只会保留5日并且是全数据库备份,若是需要自定义备份部分数据库,可自己参照上述脚本中的注释写相应的脚本.

  • 相关阅读:
    复习一些奇怪的题目
    NOIP 考前 KMP练习
    NOIP 考前 并查集复习
    NOIP 考前 Tarjan复习
    NOIP 考前 图论练习
    BZOJ 1468 树分治
    Codeforces Round #376 (Div. 2)
    CodeVS 线段覆盖1~5
    Luogu 3396 权值分块
    BZOJ 2743 树状数组
  • 原文地址:https://www.cnblogs.com/dygood/p/15056391.html
Copyright © 2011-2022 走看看