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 选项。
转载于:https://www.cnblogs.com/chenweida/p/8351990.html
Linux中mongodb定时远程备份相关推荐
- linux 备份mysql并上传_实现Linux中Mysql数据库自动备份并上传到远程FTP服务器
这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到 ...
- linux中使用scp远程拷贝文件及文件夹
linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...
- mysql 备份脚本 linux,LINUX中MySQL如何按时备份脚本
LINUX中MySQL如何按时备份脚本 发布时间:2020-06-02 17:09:34 来源:51CTO 阅读:212 作者:三月 本篇文章给大家主要讲的是关于LINUX中MySQL如何按时备份脚本 ...
- Linux中的定时自动执行功能(at,crontab)
Linux中的定时自动执行功能(at,crontab) 概念 在Linux系统中,提供了两种提前对工作进行安排的方式 at 只执行一次 crontab 周期性重复执行 通过对这两个工具的应用可以让我们 ...
- linux scp 过滤文件夹,linux中使用scp远程拷贝文件及文件夹
linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...
- 教你在Linux中如何归档和备份
保护系统的数据安全是计算机系统管理的重中之重,解决方法就是通过实时备份系统文件,来保护数据,也就是常说的数据容灾备份.在这篇文章中,我们将会描述几个常用来管理文件集合的命令程序,即文件压缩程序和归档程 ...
- linux篡改url命令,在Linux中更改Git远程URL(Git Remote URL)的方法
本文说明了如何更改Git远程的URL,在Linux平台中已测试成功.Git remote是一个指针,它指向通常托管在远程服务器上的存储库的另一个副本,在某些情况下,例如当远程存储库迁移到另一个主机时, ...
- linux java mysql 备份 runtime_Mysql如何在linux中实现定时备份
在实际项目中,数据库是要经常备份的,就是为了防止突发情况,前段时间,我的数据库就遭遇了入侵要支付B特比的,结果数据全没了,哎,还好当时只是个测试库,不过有了这次危机,也就开始意识到了这个问题了. 先写 ...
- Linux上 MongoDB 实现远程连接并设置账号密码
本地系统:Fedora 28 服务器系统:CentOS 7 安装 在本地安装客户端 sudo dnf install mondodb 在服务器上安装服务端 sudo dnf install mongo ...
- linux如何备份内核,Linux 中我该如何备份系统
系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面:Linux ...
最新文章
- Java 第27章 JDBC
- 用PHP实现POP3邮件的收取(一)
- DeepMind登上Science:“和AI相比,人类都是猪队友”,团战称霸雷神之锤3
- Spring Framework 4.0相关计划公布---包括对于Java SE 8 和Groovy2的支持
- 信息文档分工会在运动会象棋比赛中夺得佳绩
- 蒙特卡洛模拟分析市场风险
- Windows XP图片查看器打不开图片的解决办法
- 谷歌服务安装包_安卓手机安装谷歌服务框架和Google Play傻瓜式教程 100%好用
- 原生JS路由实现页面跳转
- Ecshop系统框架分析之二次开发重点结构介绍
- 简单的外网映射工具natapp操作
- PHP网页设计作业,bootstrap前端框架留言板系统源码
- 2022-2027年中国吉他行业市场调研及未来发展趋势预测报告
- EPUB和PDF的区别,有什么好用的epub阅读器
- 模式识别(二)特征矢量与空间
- 音箱选购必备20秘诀
- es5和es6声明类的区别/es5和es6继承的区别
- 教你路由器端口映射设置方法
- 中国招聘网站之“忧”
- java.io.FileNotFoundException: /storage/emulated/0/xxx.mp3: open failed: EACCES (Permission denied)
热门文章
- 【渝粤教育】国家开放大学2018年春季 0680-21T会计基础知识 参考试题
- 【转】详解GAN代码之逐行解析GAN代码
- javascript 权威指南一
- 解决 IDEA 无法找到 java.util.Date 的问题
- 【NOIP2014模拟8.25】设备塔
- 【Python3 爬虫】12_代理IP的使用
- fastdfs:安装nginx
- 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/
- 最近新明白的SQL小知识
- Python成员修饰符,metaclass,异常,反射,单例