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
省略了连接文件存储系统的账号和密码因为没设若需要按照下面格式:
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> |
如果失败:可以在目录下./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 选项。
Linux中mongodb定时远程备份的更多相关文章
- Linux中的定时自动执行功能(at,crontab)
Linux中的定时自动执行功能(at,crontab) 概念 在Linux系统中,提供了两种提前对工作进行安排的方式 at 只执行一次 crontab 周期性重复执行 通过对这两个工具的应用可以让我们 ...
- linux下mongodb定时备份指定的集合
目标:把一台linux机上mongodb的数据定时备份到另一台机上: 过程: 一开始打算使用mongoexport和mongoimport,但是总是会报“\x00”字符串不能识别的问题,后来就改成了m ...
- Linux下shell脚本实现mongodb定时自动备份
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...
- 利用腾讯云COS云对象存储定时远程备份网站
版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...
- linux中服务器定时程序设定
服务器不重启的情况下定时自动重启apache及mysql服务,其实也大同小异.具体步骤如下: 一.每天的12点及16点重启apache及mysql服务 [root@www bin]# cd /opt ...
- Linux rsync数据定时增量备份
一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...
- Linux 中的定时处理 cron服务
cron服务 在LINUX中,周期执行的任务一般由cron这个守护进程来处理 当安装完操作系统后默认会安装此服务工具并且会自动启动crond,该进程会每分钟定期检查是否有要执行的任务,若有则执行. c ...
- Linux下mysql定时自动备份并FTP到远程脚本
1.添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh) #!/bin/sh #this shell is user for ...
- Linux 中我该如何备份系统
系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...
随机推荐
- shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...
- Linux System Programming --Chapter Six
这一章的题目是--高级进程管理,这篇文章将以书中所叙的顺序进行讲解 1.让出处理器 Linux提供一个系统调用运行进程主动让出执行权:sched_yield.进程运行的好好的,为什么需要这个函数呢?有 ...
- Android OnLowMemory和OnTrimMemory
1.OnLowMemory 是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory. 系统提 ...
- CentOS 7 运行级别的切换
CentOS 7 运行级别的切换 由命令行级别切换到窗口级别的命令未变:init 5或startx 由窗口级别切换到命令行级别的命令未变:init 3 新版本的运行级别都定义在 /lib/system ...
- Xcode出现may cause a leak非忽略的解决方法
前面提到可以把may cause a leak当成安静的美代码忽略掉,但其实还是有另一种方法滴. 你可以用如下代码替换以消除該警告: [xxx performSelector:_cmd withObj ...
- 一个类搞定UIScrollView那些事儿
前言 UIScrollView可以说是我们在日常编程中使用频率最多.扩展性最好的一个类,根据不同的需求和设计,我们都能玩出花来,当然有一些需求是大部分应用通用的,今天就聊一下以下需求,在一个categ ...
- 在 Linux 下用 mkdir 命令来创建目录和子目录
mkdir 是什么呢 Mkdir 是一个用来在 Linux 系统下创建目录的命令.此命令属于内建命令. 运行 mkdir 命令 你可以在你的控制台直接键入 mkdir 来使用它. $ mkdir 默认 ...
- OpenCV+OpenCL stereo match 代码
之前配置cuda跟opencv 的混合编程,发现只要使用的东西多半还要用opencv的代码编译一次,加上cuda的编译太浪费时间了,我看了几个博客,觉的opencl这个可能会比较好整,就把opencv ...
- Zeroc Ice开发环境搭建
搭建Ice环境 1. Linux(推荐,更接近真实生产环境) 2. Windows(方便学习开发) 下载安装包:https://zeroc.com/downloads (百度网盘链接:http ...
- 和菜鸟一起学linux总线驱动之i2c死锁问题
不知不觉中已经有好几个月没有写点东西了,懒了就是懒了,说是忙着想把产品做得更好,都是借口,每天花一点时间来写点东西确实很不错,自己也坚持了很久很久,只不过今年以来,发现提高不是很大,能写的东西好少好少 ...