1 手动备份

mongo3.0手动备份命令:
mongodump -h localhost:27017 --authenticationDatabase "admin" -o /data/backup/dump/2019_01_09

mongorestore -h localhost:27017 /data/backup/dump/2019_01_09

2 Mac自动备份脚本

mac本地正常运行备份mongodb数据库的脚本是,其中可以which命令查看命令路径path:#!/bin/bash/usr/local/bin/mongo --version > mongo_version.txt
DUMP=/usr/local/bin/mongodump    #mongodump命令路径,非常重要,不然/bin/bash找不到路径
OUT_DIR=/data/backup/temp   #临时备份目录
TAR_DIR=/data/backup/final    #备份存放路径
TAR_BAK="mongodb_backup_$DATE.tar.gz"    #最终保存的数据库备份文件DATE=`date +%Y_%m_%d`   #获取当前系统时间
DB_HOST=localhost:27017
DB_USER=    #数据库账号
DB_PASS=    #数据库密码
DAYS=15    #DAYS=15代表删除15天前的备份,即只保留近15天的备份# 进入临时目录删空文件夹内容,根据当前时间重建文件
cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE# 备份全部数据库,并压缩
echo "backup start"
$DUMP -h $DB_HOST --authenticationDatabase "admin" -o $OUT_DIR/$DATE
$DUMP -h $DB_HOST --authenticationDatabase "admin" -o $TAR_DIR/$DATE# 压缩为.tar.gz格式
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
# 解压格式
# tar -xzvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE#删除DAYS天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -deleteecho "backup end"cd /data/backup
cmd=`date +%Y-%m-%d:%H:%M:%S`
cmd01=${cmd}
echo "$cmd01" >> time.txt
exit

  

crontab -e:每隔离一分钟备份一次

*/1 * * * * * /data/backup/monbp.sh >> /data/backup/m.log 2>&1

crontab -e:每隔离4小时的第一分钟备份一次,也即每4小时备份一次

1 */4 * * * * /data/backup/monbp.sh >> /data/backup/m.log 2>&1

3 ubuntu 自动备份脚本

#!/bin/sh/usr/bin/mongo --version > /data/www/backup/mongo_version.txt
DUMP=/usr/bin/mongodump    #mongodump path
OUT_DIR=/data/www/backup/temp   #temp backup file
TAR_DIR=/data/www/backup/final    #backup fileDATE=`date +%Y_%m_%d_%H_%M_%S`
TAR_BAK="mongodb_backup_$DATE.tar.gz"DB_HOST=localhost:27017
DB_USER=
DB_PASS=
DAYS=15cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATEecho "backup start" >> /data/www/backup/bp.log
# $DUMP -h $DB_HOST --authenticationDatabase "admin" -o $OUT_DIR/$DATE
$DUMP -h $DB_HOST -o $OUT_DIR/$DATE
echo "ing...." >> /data/www/backup/bp.log
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
find $TAR_DIR/ -mtime +$DAYS -delete
echo "backup end" >> /data/www/backup/bp.logcd /data/www/backup
cmd=`date +%Y-%m-%d:%H:%M:%S`
cmd01=${cmd}
echo "$cmd01" >> /data/www/backup/bp.logexit# 挂载docker-compose:/data/www/backup: /data/www/backup
# sudo docker exec -it 0be535e8f2ba /bin/bash
# crontab -e
# 1 */4 * * * /data/www/backup/monbp.sh >> /data/www/backup/bp.log 2>&1

4 携带mongodb的docker容器里部署自动备份脚本流程

假设docker系统为ubuntu:

(1)脚本搞到mongo-docker里面,最好挂载,比如docker-compose
volumes:
- /data/www/backup:/data/www/backup
然后进入容器:sudo docker exec -it 0be535e8f2ba /bin/bash
(2)安装cron, 检查状态是否启动
安装:apt-get install cron
启动:service cron start
检查状态:service cron status
检查状态:sudo launchctl list | grep cron
(3)确保安装vi or vim,有时候crontab -e 会提示没有编辑器或者没有选择编辑器
apt-get install -y vim
(4)编辑定时文件crontab -e,写入保存,每隔4小时的第一分钟备份一次,写入日志到bp.log
1 */4 * * * /data/www/backup/monbp.sh >> /data/www/backup/bp.log 2>&1
(5)查看写入日志文件bp.log测试,一般可以用简单语句测试是否执行正常
比如每分钟输出一个时间
*/1 * * * * /bin/date >> /data/www/backup/datetest.log 2>&1

注意事项:

(1)linux系统中执行某个程序,出现~/bin/sh: xxx: not found
如果不指定,那么就使用默认的/bin/sh。一个是/bin/bash,一个是/bin/sh,而sh又是一个符号链接,指向/ bin/dash,ubuntu默认采用的是dash,一般通过/bin/sh的符号链接来指向,如果要切换它指向bash,Ubuntu 下缺省使用的是shell是dash,而不是bash。从/bin/sh软连接的指向可以看出这点ls -l /bin/sh, 结果是
lrwxrwxrwx 1 root root 4 Feb 17 2016 /bin/sh -> dash。
dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行shell程序时,经常报错。
解决办法:

ln -sf /bin/bash /bin/sh
dpkg-reconfigure dash

还有一情况是自己的#!/bin/bash写的格式不对,用下面的语法,如果显示是正确的就是对的
head -1 mondp.sh | od -c
0000000 # ! / b i n / b a s h \n

(2)/bin/sh: /data/www/backup/monbp.sh: No such file or directory
但是/data/www/backup/monbp.sh 明明存在
仔细检查文件名和路径确定有没有错,一个字母也不要错,尤其是眼睛容易混淆的bp,dp

还有一可能:
如果可执行文件xxx确实存在,很可能是缺少相关的库文件。
在宿主机上,可以用交叉工具链中的readelf查看,例如:
mips-linux-gnu-readelf -a monbp.sh
在目标机上,可以用ldd查看依赖关系
ldd xxx

(3) mongo: command not found/mongodump: command not found
脚本的环境路径变量不对,一定要用绝对路径
mac版本-mongo: /usr/local/bin/mongo
Linux版本-mongo: /usr/bin/mongo

转载于:https://www.cnblogs.com/adamans/articles/10253977.html

mongodb备份和恢复:mongodump/mongorestore ( 二)相关推荐

  1. MongoDB 备份与还原 mongodump、mongorestore

    一. MongoDB 备份 1.mongodump mongodump 是 MongoDB 官方提供的备份工具,它可以从 MongoDB 数据库读取数据,并生成 BSON 文件,mongodump 适 ...

  2. MongoDB备份及恢复

    MongoDB备份及恢复 一.备份恢复介绍 1.备份恢复工具介绍: (1)** mongoexport/mongoimport (2)***** mongodump/mongorestore 2.备份 ...

  3. mongodb备份和恢复

    一. 备份 使用mongodump备份,并不会备份分片信息和索引,所以恢复之后,需要手动创建对数据库和集合的分片,手动创建索引 #./bin/mongodump -h 127.0.0.1:20000 ...

  4. MongoDB 备份和恢复——筑梦之路

    安装mongoDB yum install libcurl openssl #添加yum源 vim /etc/yum.repos.d/mongodb-org.repo [mongodb-org] na ...

  5. 102.第十九章 MySQL数据库 -- MySQL的备份和恢复(十二)

    5.备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障.软件故障.自然灾害.黑客攻击.误操作测试等数据丢失场景 参考链接: https://www.toutiao.com/ ...

  6. mongodb 备份和恢复

    为什么80%的码农都做不了架构师?>>>    进入  mongodb/bin  mongodump -d  databasename  //导出文件在当前目录dump下 进入 mo ...

  7. MySQL 备份和恢复策略(二)

    备份策略三.使用mysqldump备份数据库 mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法 ...

  8. Linux系统mongdb还原数据库,linux - mongodb备份mongodump、恢复mongorestore

    前言 服务器都会涉及到服务迁移或者备份恢复的时候,今天简单总结mongodb的备份与恢复. mongodump和mongorestore --备份单个表 mongodump -u superuser ...

  9. MongoDB备份恢复—mongodump/mongorestoremongoexport/mongoimport

    文章目录 一.MongoDB备份介绍 1.1 备份工具 1.2 备份工具区别 二.备份/恢复mongodump/mongorestore 三.数据导出/导入mongoexport/mongoimpor ...

最新文章

  1. [deviceone开发]-do_Http组件示例
  2. 特征值与特征向量 matlab数值解,用MATLAB和numpy求解特征值和特征向量,matlab,与
  3. @RequestMapping参数详解
  4. Markdown的一些常用的语法
  5. 使用Arduino开发ESP32:wifi基本功能使用
  6. Java NIO学习笔记 三 散点/收集 和频道转换
  7. 投資效益計算公式4/10
  8. js html utf8编码转换,js中的UTF-8编码与解码
  9. js中比較好的继承方式
  10. Microsoft Edge浏览器兼容性问题解决方法
  11. 【安全测试工具】Drozer介绍及使用
  12. 【哈佛幸福课笔记】【1】
  13. Python之遍历文件夹图片并重命名
  14. 服务器中temp文件夹在哪,WIN7中出现TEMP用户文件夹,临时账户登录
  15. 使用js+css样式实现淘宝详情页图片放大镜的效果
  16. flex布局实现无缝滚动
  17. 苹果在印度市场表现不佳 落后诺基亚三星RIM
  18. MySQL数据库 | 数据表-查询命令详细记录
  19. c语言输入字母输出数字,输入一字符串 把其中的字母和数字分开输出 用c语言编写...
  20. Unity3D中场景烘培步骤分享

热门文章

  1. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
  2. linux cna12.dll,攻击 MySQL 服务器传播 GandCrab 勒索软件
  3. 最近点对模板__hdu1007
  4. Flask开发微电影网站(十)
  5. iOS - Base64转图片图片转Base64
  6. Apache 工作模式配置优化
  7. 嵌入式视频处理基础(一)
  8. Highcharts在IE8中不能一次性正常显示的一种解决办法
  9. Django项目部署到Linux后,上传文件的时候,mkdirs创建目录OSError - Errno 13 Permission denied
  10. 超详细:Springboot连接centos7下redis6的必要配置和失败分析