mongodb 数据库备份脚本
写了小shell bash, 用于给mongodb数据进行备份
#!/bin/bash
#backup MongoDB #文件目录
#backup MongoDB
#!/bin/bash
#backup MongoDB
#文件目录
MONGO_HOME=/usr/work/mongoDB
#mongodump命令路径 DUMP=$MONGO_HOME/mongo/bin/mongodump
#临时备份目录
if [ ! -d "$MONGO_HOME/mongodb_bak_now" ]; then
mkdir $MONGO_HOME/mongodb_bak_now
fi
OUT_DIR=$MONGO_HOME/mongodb_bak_now
#备份存放路径
if [ ! -d "$MONGO_HOME/mongodb_bak_list" ]; then
mkdir $MONGO_HOME/mongodb_bak_list
fi
TAR_DIR=/usr/work/mongoDB/mongodb_bak_list
#获取当前系统时间
DATE=`date +%Y_%m_%d`
#DAYS=15代表删除15天前的备份,即只保留近15天的备份
DAYS=
#最终保存的数据库备份文件
TAR_BAK="mongodb_bak_$DATE.tar.gz" cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
#备份全部数据库
$DUMP -h dev.iwhere.com:27017 -o $OUT_DIR/$DATE # 带密码链接方式
mongodump -h 172.27.137.26:36137 -d ssdb -o f:\data\ssdb170505 -u=administrator -p=qqddd.222
#压缩为.tar.gz格式
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除15天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -delete exit
写了个远程的, 不太管用
#!/usr/bin/expect
set host_ip [index $argv ]
set username [index $argv ]
set passwd [index $argv ] spawn scp -r $TAR_DIR/$TAR_BAK $username@$host_ip:/opt/mongodb_bak/
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" {send "$password\n"}
}
"*assword:"
{
send "$password\n"
}
}
expect "100%"
expect eof
可加入到linux执行计划里面, 就会实现自动备份了
vim /etc/crontab
* * root /usr/work/mongoDB_back.sh
#秒, 分 时, 日 周, 用户 执行脚本
ps: 当带有密码的备份报错时, 需要添加:
当备份时报错:
Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed. 需要添加--authenticationDatabase admin
然后, 数据恢复( 使用mongorestore)
./mongorestore -h www.wenbronk: -d test /opt/wenbronk_soft
/mongo/mongodb-.4v/datas/iwhere/project/bak/mongdb_136/mongodb_bak_now/2017_05_03/test/
参数解释:
-h 指定要同步的服务器
-d 指定要同步后的数据库名, 可不同名
然后是本地保存的数据存放路径
–drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用.
mongodb 数据库备份脚本的更多相关文章
- Python数据库备份脚本
Python数据库备份脚本 #!/usr/bin/env python # author: liudong # -*- coding: utf-8 -*- # filename: db_bak.py ...
- Windows下MySQL数据库备份脚本(一)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- Windows下MySQL数据库备份脚本(二)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- mongodb数据库备份迁移 windows -> linux
mongodb数据库备份迁移 windows -> linux cd 到本机mongodb的安装目录 如: C:\Program Files\MongoDB\Server\3.4\bin 可以发 ...
- MongoDB数据库备份与还原、单表的导入导出
-------------------MongoDB备份与恢复------------------- 1.MongoDB数据库备份 1.语法: mongodump -h dbh ...
- mysql数据库备份脚本
mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...
- Shell脚本使用汇总整理——达梦数据库备份脚本
Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...
- PCB MongoDB数据库 备份与还原
一. MongoDB数据库 备份与还原工具介绍: 数据备份工具 mongodump.exe 数据还原工具 mongorestore.exe 二. MongoDB数据库备份 mongodump - ...
- SQLSERVER 数据库备份脚本-支持多库备份
原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...
随机推荐
- 二:nodejs+express+redis+bootstrap table+jquery UI
介绍:做一个量化投资的实时系统. 综合: 添加记录,顺序改变的话,refresh之后,能正常刷新吗?可以正常刷新,只是顺序又变回去. express中用fs readfile 时,需要用path.jo ...
- MAC将 /etc/sudoers文件修改错后的几种解决方法
文件修改错误后难以再次修改的原因: 1.修改此文件必须是root权限 2.此文件出现问题时sudo命令不可用 3.默认情况下MAC系统不启用root用户 解决的方法: 一.启用root用户,使用roo ...
- CSS选择器分类总结
一.选择器语法及其意义(pattern and meaning) Pattern Meaning CSS level E an element of type E 标记选择器,匹配所有标签名为E的元素 ...
- C# 使用ftp下载一个文件夹下的所有文件,包括子目录文件夹
这篇博客给大家补充一个方法,就是得到一个目录下的所有文件名称.在前端调用,大家写一个递归去遍历就可以了,我在这里就不在写了.具体ftp下载的方法在我的另一篇博客里有,需要的可以去看一下. /// &l ...
- Extjs文件上传问题总结
本来文件上传是一个简单而常用的功能,但是,由于刚刚接触extjs,对extjs中的控件及其使用方法并不熟悉,导致本来一个很快就可以搞定的文件上传问题,弄了将近两天的时间.现将问题及解决办法发出来,供有 ...
- GitHub设置使用SSH Key,用TortoiseGit进行Clone仓库
GitHub设置使用SSH Key的好处就是可以使用SSH连接,并且提交代码的时候可以不用输入密码,免密提交. 生成SSH Key 这里我们使用PuTTYgen来生成公钥(Public Key),私钥 ...
- 第三章 CopyOnWriteArrayList源码解析
注:在看这篇文章之前,如果对ArrayList底层不清楚的话,建议先去看看ArrayList源码解析. http://www.cnblogs.com/java-zhao/p/5102342.html ...
- 程序媛计划——SQLite初级
数据库简介 数据库定义: 指的是以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合.是带有相关数据的表的集合. 数据库是由行和列组成的二维表. 字段: 数据库表 ...
- Python面向对象(成员修饰符)
day25 成员修饰符 class Foo: def __init__(self, name, age): self.name = name self.__age = age#私有,外部无法直接访问 ...
- 看linux正在运行的服务用哪个命令?
https://zhidao.baidu.com/question/117779006.html 查看服务进程:ps aux查看服务cpu利用:top查看服务对应端口:netstat -nlp pst ...