诚邀访问我的个人博客:我在马路边

更好的阅读体验点击查看原文: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/

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

编写shell脚本

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

准备文件

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

创建shell脚本

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

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

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

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

执行shell脚本

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

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

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

进阶版

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

感谢

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

诚邀访问我的个人博客:我在马路边

更好的阅读体验点击查看原文:Shell脚本备份Mongodb数据库

原创博客,转载请注明出处

Shell脚本备份Mongodb数据库的更多相关文章

  1. 用shell脚本实现MongoDB数据库自动备份

    一.创建MongoDB备份目录 用来存放数据 mkdir -p /data/mongodb_bak/mongodb_bak_now mkdir -p /data/mongodb_bak/mongodb ...

  2. linux shell脚本备份mysql数据库

    #!/bin/sh # 备份数据库 # Mysql 用户名密码 MYSQL_USER=root MYSQL_PASS=root BACKUP_DIR=/data/backup/mysql DATA_D ...

  3. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  4. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  5. 如何通过shell脚本操作MongoDB

    通过shell脚本对MongoDB进行自动化操作 运行写好的 ./show.sh 脚本 发现能够建立mongo链接 #!/bin/sh mongo WordPress --eval "sho ...

  6. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...

  7. shell 脚本操作informix数据库

    shell 脚本操作informix数据库的简单模板: functionName(){ dbaccess << ! database 库名; sql语句; ! } 栗子1:更新数据 fun ...

  8. Linux下shell脚本实现mongodb定时自动备份

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  9. Shell脚本备份数据库

    使用crontab 定时备份数据库 1. 编辑crontab 规则,定时执行脚本 2. 在my.cnf 文件中加 [mysqldump] user=root password=密码 3.编写shell ...

随机推荐

  1. Fidder详解之抓包

    前言 本文是博主发表的第一篇文章,如有傻逼之处,请大家见谅.最近遇到很多人说接口相关的问题,比如:什么是接口,我该怎么做接口测试,还有我总是抓不到APP上的https请求(这个巨坑,不知道坑了多少小白 ...

  2. ElasticSearch监控

    1. elasticsearch 服务的监控与报警 http://bigbo.github.io/pages/2016/10/20/elasticsearch_monitor/ 2. How to m ...

  3. Windows虚拟机安装Linux系统

    windows系统安装linux centos虚拟系统 1.下载 VMware Workstation Pro并安装,效果如图 2.下载linux系统 https://www.centos.org/d ...

  4. ORA-01034和ORA-27101的错误

    我本机安装的数据库版本是ORACLE 11G R2,用plsql连接时候,报ora-12514如下错误: 但是在cmd里用sqlplus连接已经创建的用户时候,报如下错误: ORA-01034 - O ...

  5. strspn() 和 strcspn() 函数【转】

    本文转载自:https://flyer103.wordpress.com/2011/06/03/strspn-%E5%92%8C-strcspn-%E5%87%BD%E6%95%B0/ 前几天在看一本 ...

  6. Centos6.5安装Mysql5.6.10

    1. 先卸载掉老版本的mysql(linux严格区分大小写,查找的时候加上-i参数,和mysql相关的全部要卸) [root@liuchao ~]# rpm -qa | grep -i mysqlMy ...

  7. 基于“基于dockerhub的jetty镜像的ossfs镜像”部署war包,遇到的文件夹读写权限被限制的问题解决方案

    前提: “基于dockerhub的jetty镜像的ossfs镜像” 已经搭建好了. 部署准备: 1.本地打包:war包-->idea工具 mvn 打包. 2.本地sh脚本:compile_vps ...

  8. C语言下文件目录查看

    C语言下文件目录遍历通常会用到下面这些函数 _access()        /* 判断文件或文件夹路径是否合法 */ _chdir() /* 切换当前工作目录 */ _findfirst()   / ...

  9. hdoj1002--A + B Problem II

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  10. 做一个完整的Java Web项目需要掌握的技能

    最近自己做了几个JavaWeb项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java Web项 ...