zoukankan      html  css  js  c++  java
  • Linux中mongodb定时远程备份

    下载mongodb

    https://www.cnblogs.com/tartis/p/5291580.html

    mongodb定时备份文档

    虚拟机报错要改BIOS 虚拟技术开启

    进入root账户  su root 回车输入密码

    一、创建MongoDB备份目录

    mkdir -p /data1/mongodb_bak/mongodb_bak_now

    mkdir -p /data1/mongodb_bak/mongodb_bak_list  

     

    二、新建MongoDB数据库备份脚本(/data1/mongodb_bak

    创建:touch 文件名。

    如:touch mongodtask.sh

    编辑:sudo gedit mongodtask.sh  复制一下脚本代码按需要修改

    脚本:

    #!/bin/bash

    #backup MongoDB

    #mongodump命令路径

    DUMP=/home/test/Downloads/mongodb/bin/mongodump

    #临时备份目录

    OUT_DIR=/data1/mongodb_bak/mongodb_bak_now

    #备份存放路径

    TAR_DIR=/data1/mongodb_bak/mongodb_bak_list

    #获取当前系统时间

    DATE=`date +%Y_%m_%d`

    #数据库账号

    DB_USER=root

    #数据库密码

    DB_PASS=p2005

    #DAYS=15代表删除15天前的备份,即只保留近15天的备份

    DAYS=15

    #最终保存的数据库备份文件

    TAR_BAK="mongodb_bak_$DATE.tar.gz"

    cd $OUT_DIR

    rm -rf $OUT_DIR/*

    mkdir -p $OUT_DIR/$DATE

    #备份全部数据库

    $DUMP -h 127.0.0.1:27017 -d test -o $OUT_DIR/$DATE

    #压缩为.tar.gz格式

    tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

    #copy to  192.168.33.129

    scp $TAR_DIR/$TAR_BAK root@192.168.33.129:/data/mongodb_bak

    #删除15天前的备份文件

    find $TAR_DIR/ -mtime +$DAYS -delete

    exit   

     

    省略了连接文件存储系统的账号和密码因为没设若需要按照下面格式:

     

    1. $DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE  

     

    三、修改文件属性,使其可执行(目录下执行)

    给该脚本赋权限:chmod +755 mongodtask.sh

    四、修改/etc/crontab,添加计划任务

    1 进入编辑界面 记得要用root用户登录操作不然没有权限

    1

    crontab -e

    2 添加任务 分钟开始执行MongoDB数据库备份脚本

    1

    * * * * * /data1/mongodb_bak/mongodtask.sh

    注意点:linux 下按A为编辑模式ctrl+z中断操作

    Ctrl+c 退出编辑模式

    SHIFT+Z 两次保存文件

    或输入冒号然后输入wq

    保存后退出,启动

    1

    service crond start

    设置开机自启动

    要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可

    注意此脚本在mongodb开启时有效,否则会出错。

    是否成功只需要看是否定时能在/data1/mongodb_bak 有文件生成

    查看当前用户的crontab,输入 crontab -l

    编辑crontab,输入 crontab -e

    删除crontab,输入 crontab -r   慎用

    五、A、B端免密登录(为了进行copy不用输入密码和安全性)

    一、证书登录的过程:(了解性资料)

           1.客户端生成证书的私钥和公钥。

             私钥放在客户端,公钥上传到服务端(远程登陆端)。

            一般为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密码,以后每次登录ssh服务器时,客户端都要输入密码解开私钥(如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。

            2.服务器添加信用公钥。

            把客户端生成的公钥,上传到ssh服务器,添加到指定的文件中,这样,就完成ssh证书登录的配置了。

            假设客户端想通过私钥要登录其他ssh服务器,同理,可以把公钥上传到其他ssh服务器。

    二、具体操作:(生成的证书在/root/.ssh/ 目录下

    环境:A通过ssh方式登陆B,即:A为本地机,B为远程登陆server

               1.A机配置

              ①生成公钥和私钥

             ssh-keygen -t rsa           (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

     

             ②将公钥拷到B端

    先在B端/root/目录下输入:mkdir .ssh
             scp /root/.ssh/id_rsa.pub 192.168.33.129:./.ssh/id_rsa.pub 

    2. B机配置

    输入:vi /etc/ssh/sshd_config

    找到

    RSAAuthentication yes

    PubkeyAuthentication yes

    AuthorizedKeysFile      .ssh/authorized_keys

    修改AuthorizedKeysFile      .ssh/authorized_keys2

    去掉#号使其生效 需要输入下面命令重启下sshd

    输入:service sshd stop

    输入:service sshd start

    ①创建authorized_keys2文件命令如下:

    touch /root/.ssh/authorized_keys2     

     (如果已经存在这个文件, 跳过这条)

     ②追加公钥到authorized_keys2中命令如下:

     cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2

    (将id_rsa.pub的内容追加到 authorized_keys2 中)

     chmod 600 ~/.ssh/authorized_keys2 赋权

    A端执行shell脚本看看是否能直接备份~如果不行百度

    成功后rm -f /root/.ssh/id_rsa.pub 删除 安全起见

    附录:MongoDB数据库恢复

    #恢复全部数据库
    mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/
    #恢复单个数据库
    mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore -d dbname --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/dbname

    部分参数说明

    --drop参数:恢复数据之前删除原来的数据,避免数据重复

    --noIndexRestore参数:恢复数据时不创建索引

    --dir参数:数据库备份目录

    -d参数:后面跟要恢复的数据库名称

    或下面方法

    mongodb 使用 mongorestore 命令来恢复备份的数据

    1

    >mongorestore -h <hostname><:port> -d dbname <path>

      1、--host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017

      2、--db , -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

      3、--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

      4、<path>:

    最后的一个参数,设置备份数据所在位置,例如:c:datadumptest。

    你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

      5、--dir:指定备份的目录

    你不能同时指定 <path> 和 --dir 选项。

     

     

    mongodb定时备份文档

    虚拟机报错要改BIOS 虚拟技术开启

    进入root账户  su root 回车输入密码

    一、创建MongoDB备份目录

    mkdir -p /data1/mongodb_bak/mongodb_bak_now

    mkdir -p /data1/mongodb_bak/mongodb_bak_list  

     

    二、新建MongoDB数据库备份脚本(/data1/mongodb_bak

    创建:touch 文件名。

    如:touch mongodtask.sh

    编辑:sudo gedit mongodtask.sh  复制一下脚本代码按需要修改

    脚本:

    #!/bin/bash

    #backup MongoDB

    #mongodump命令路径

    DUMP=/home/test/Downloads/mongodb/bin/mongodump

    #临时备份目录

    OUT_DIR=/data1/mongodb_bak/mongodb_bak_now

    #备份存放路径

    TAR_DIR=/data1/mongodb_bak/mongodb_bak_list

    #获取当前系统时间

    DATE=`date +%Y_%m_%d`

    #数据库账号

    DB_USER=root

    #数据库密码

    DB_PASS=p2005

    #DAYS=15代表删除15天前的备份,即只保留近15天的备份

    DAYS=15

    #最终保存的数据库备份文件

    TAR_BAK="mongodb_bak_$DATE.tar.gz"

    cd $OUT_DIR

    rm -rf $OUT_DIR/*

    mkdir -p $OUT_DIR/$DATE

    #备份全部数据库

    $DUMP -h 127.0.0.1:27017 -d test -o $OUT_DIR/$DATE

    #压缩为.tar.gz格式

    tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

    #copy to  192.168.33.129

    scp $TAR_DIR/$TAR_BAK root@192.168.33.129:/data/mongodb_bak

    #删除15天前的备份文件

    find $TAR_DIR/ -mtime +$DAYS -delete

    exit   

     

    省略了连接文件存储系统的账号和密码因为没设若需要按照下面格式:

     

    $DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE  

     

    三、修改文件属性,使其可执行(目录下执行)

    给该脚本赋权限:chmod +755 mongodtask.sh

    四、修改/etc/crontab,添加计划任务

    1 进入编辑界面 记得要用root用户登录操作不然没有权限

    1

    crontab -e

    2 添加任务 分钟开始执行MongoDB数据库备份脚本

    1

    * * * * * /data1/mongodb_bak/mongodtask.sh

    注意点:linux 下按A为编辑模式ctrl+z中断操作

    Ctrl+c 退出编辑模式

    SHIFT+Z 两次保存文件

    或输入冒号然后输入wq

    保存后退出,启动

    1

    service crond start

    设置开机自启动

    要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可

    注意此脚本在mongodb开启时有效,否则会出错。

    是否成功只需要看是否定时能在/data1/mongodb_bak 有文件生成

    查看当前用户的crontab,输入 crontab -l

    编辑crontab,输入 crontab -e

    删除crontab,输入 crontab -r   慎用

    五、A、B端免密登录(为了进行copy不用输入密码和安全性)

    一、证书登录的过程:(了解性资料)

           1.客户端生成证书的私钥和公钥。

             私钥放在客户端,公钥上传到服务端(远程登陆端)。

            一般为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密码,以后每次登录ssh服务器时,客户端都要输入密码解开私钥(如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。

            2.服务器添加信用公钥。

            把客户端生成的公钥,上传到ssh服务器,添加到指定的文件中,这样,就完成ssh证书登录的配置了。

            假设客户端想通过私钥要登录其他ssh服务器,同理,可以把公钥上传到其他ssh服务器。

    二、具体操作:(生成的证书在/root/.ssh/ 目录下

    环境:A通过ssh方式登陆B,即:A为本地机,B为远程登陆server

               1.A机配置

              ①生成公钥和私钥

             ssh-keygen -t rsa           (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

     

             ②将公钥拷到B端

    先在B端/root/目录下输入:mkdir .ssh
             scp /root/.ssh/id_rsa.pub 192.168.33.129:./.ssh/id_rsa.pub 

    2. B机配置

    输入:vi /etc/ssh/sshd_config

    找到

    RSAAuthentication yes

    PubkeyAuthentication yes

    AuthorizedKeysFile      .ssh/authorized_keys

    修改AuthorizedKeysFile      .ssh/authorized_keys2

    去掉#号使其生效 需要输入下面命令重启下sshd

    输入:service sshd stop

    输入:service sshd start

    ①创建authorized_keys2文件命令如下:

    touch /root/.ssh/authorized_keys2     

     (如果已经存在这个文件, 跳过这条)

     ②追加公钥到authorized_keys2中命令如下:

     cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2

    (将id_rsa.pub的内容追加到 authorized_keys2 中)

     chmod 600 ~/.ssh/authorized_keys2 赋权

    A端执行shell脚本看看是否能直接备份~如果不行百度

    成功后rm -f /root/.ssh/id_rsa.pub 删除 安全起见

    附录:MongoDB数据库恢复

    #恢复全部数据库
    mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/
    #恢复单个数据库
    mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore -d dbname --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/dbname

    部分参数说明

    --drop参数:恢复数据之前删除原来的数据,避免数据重复

    --noIndexRestore参数:恢复数据时不创建索引

    --dir参数:数据库备份目录

    -d参数:后面跟要恢复的数据库名称

    或下面方法

    mongodb 使用 mongorestore 命令来恢复备份的数据

    1

    >mongorestore -h <hostname><:port> -d dbname <path>

     如果失败:可以在目录下./mongorestore -h <hostname><:port> -d dbname <path>

      1、--host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017

      2、--db , -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

      3、--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

      4、<path>:

    最后的一个参数,设置备份数据所在位置,例如:c:datadumptest。

    你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

      5、--dir:指定备份的目录

    你不能同时指定 <path> 和 --dir 选项。

     

     

  • 相关阅读:
    CodeForces 734F Anton and School
    CodeForces 733F Drivers Dissatisfaction
    CodeForces 733C Epidemic in Monstropolis
    ZOJ 3498 Javabeans
    ZOJ 3497 Mistwald
    ZOJ 3495 Lego Bricks
    CodeForces 732F Tourist Reform
    CodeForces 732E Sockets
    CodeForces 731E Funny Game
    CodeForces 731D 80-th Level Archeology
  • 原文地址:https://www.cnblogs.com/chenweida/p/8351990.html
Copyright © 2011-2022 走看看