暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mongodb备份和恢复

IT那活儿 2024-09-29
178
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!     

手动备份
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


Mac自动备份脚本
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


ubuntu 自动备份脚本



携带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

END


本文作者:李 游(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论