mongodb恢复数据库(如何备份,还原和迁移MongoDB数据库)
各位老铁们好,相信很多人对mongodb恢复数据库都不是特别的了解,因此呢,今天就来为大家分享下关于mongodb恢复数据库以及如何备份,还原和迁移MongoDB数据库的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
mongodb集合被误删了,可以恢复吗
针对误删除表误删除集合误删除物理文件误删除表数据,数据库损坏等都可以进行修复及恢复。那么是物理文件丢失也可以从分区恢复表记录。
支持版本 2.0-3.4版本, mmapv1 wiredTiger文件,如.0.1.2.3.4等.WT等数据文件.
目前已开发极佳MongoDB数据库恢复工具可以从分区或者数据集合提取表记录,支持WT压缩数据文件.
这方面需求可以联系我们。
案例1误删除集合恢复
案例2 wt文件损坏导致无法启动恢复
案例3删除数据库恢复
案例4误删除数据库恢复 Gridfs文档恢复
案例5黑客删除数据库恢复
mongodb如何快速搭建属于自己的数据库
本章给大家介绍mongodb如何快速搭建属于自己的数据库。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
mongoddb安装
在本地安装
直接通过官网下载机子对应的压缩包 mongodb
在云服务器(centos系统)安装
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.9.tgztar zxvf mongodb-linux-x86_64-3.2.6.tgz
mv mongodb-linux-x86_64-3.2.6.tgz mongodb
cd mongodb
请根据你的的系统下载相应的版本~
环境配置&启动服务器
在文件目录下建立存放数据的文件夹一般目录就是/usr/local/mongodb/data/db/通过运行命令去启动mongodb
./bin/mongod--dbpath=/usr/local/mongodb/data/db/--rest这里有几个参数重点说明一下,mongod为你mongodb的命令行支持可以启动,如果有需要可以通过编辑/etc/profile编辑进全局环境,dbpath也就是数据路径,对应你建立的data目录即可。--rest则是一个图形支持
mongodb的默认路径为//localhost:27017运行成功后访问这个地址酒会有成功的提示加上rest参数可以访问//localhost:28017
./bin/mongo可以打开shell
常用命令:
#查询所有数据库 show dbs;
#删除当前使用数据库 db.dropDatabase();
#克隆主机数据 db.cloneDatabase(“127.0.0.1”);
#修复当前数据库 db.repairDatabase();
#查看当前使用的数据库 db.getName();
#显示当前db状态 db.stats();
#查看当前db的链接机器地址 db.version();云服务器上部署mongodb环境
现在云端非常流行,很多人选择了用云服务器来部署自己的项目,这里就介绍一下云端的mongodb配置。
./bin/mongod--fork--dbpath=/usr/local/mongodb/data/db/--logpath=/usr/local/mongodb/data/log/error.log-logappend--rest数据库部署到云服务器就需要后台运行,一开始用的centos的forever插件,发现并不能后台运行数据库。查阅了一下资料发现官方就有命令--fork启动后台服务--logpath--logappend参数为后台服务加个log日志 rest效果同上面。
让数据库更直观
密密麻麻的数据是不是很丑?很难受?这个时候我们就需要一个美化数据库的插件了
网上有很多如 mongovue, adminmongo可以搜索活着Github上查阅一下。
以下是数据库加密,我也是上线被攻击后才痛定思痛更新了加密过程。
添加超级管理员
首先,运行你的数据库,成功后执行shell操作。
> use admin
> db.createUser(
{
user:"your name",
pwd:"your pwd",
roles: [{ role:"root", db:"admin"} ]
}
)
Successfully added user:{
"user":"admin",
"roles": [
{
"role":"root",
"db":"admin"
}
]
}root表示超级权限,这样就创建了具有超级权限的账号了。可以通过以下命令来查看用户。
[Uploading image_088895.png...]
db.getUsers()MongoDB数据库角色
role指角色,管理控制数据库的权限,第一个用户最好是root用户,可以执行任何操作,
初始化最好创建root权限的用户,当开启auth模式,任何操作都需要权限才能执行。也千万不能直接auth启动后台运行模式,否则你就没有权限用户去关闭数据库。
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
启动auth模式
在创建完超级管理员后,才能真正启动加密的数据库,否则即使你自己也无权去操作数据库。
//后台模式需要在shell中关闭之前的普通模式数据库,输入以下命令
> use admin
> db.shutdownServer()
//终端启动加密数据库--auth
$./bin/mongod--fork--dbpath=/root/mongodb/db/--logpath=/root/mongodb/log/error.log-logappend--auth
//通过命令运行数据库,在你的运行命令加上后缀--auth,这样就启动了加密数据库,再次执行数据库操作
> show dbs
2017-09-23T14:09:58.922+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok": 0,
"errmsg":"not authorized on admin to execute command{ listDatabases: 1.0}",
"code": 13,
"codeName":"Unauthorized"
}:
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1
//发现报错,需要认证信息
> db.auth('your name','your pwd')
成功返回1失败返回0输入之前创建的超级账号,OK,简单的加密就完成了。
加密成功,需要认证才能操作数据库
链接加密数据库
数据库加密后我们的服务端代码也要相应变动。
xxx.db('mongodb://your name: your pwd@localhost:27017/db?authSource=admin');xxx表示你用的插件比如 mongoose、mongoskin之类的。
到此为止,你的数据库就加密完成了,当你的项目变大,你也许还需要创建许多用户,或者升级用户权限,这些官方都有相关的API去操作。
如何备份,还原和迁移MongoDB数据库
mongodump是mongodb提供的用于创建数据库备份的实用程序。这是一个非常有用的实用程序,可以考虑非常有效地为实时服务器数据库进行备份。对于数据库还原,需要使用mongorestore命令。
1、备份mongodb数据库(mongodump)
有多种备份MongoDB数据库的方法。使用mongodump命令进行所有数据库备份、单个集合备份或者单个数据库备份。
备份单个数据库
使用此命令仅备份单个数据库(名为mydb)。将在/backup/db/目录中创建备份。
$ mongodump--db mydb--out/ backup/ db/-db-要备份的数据库名称
-out-数据库备份位置。这将创建具有数据库名称的文件夹。
可以为远程数据库连接备份指定主机,端口,用户名和密码,如下所示。
$ mongodump--host 10.0.1.7--port 27017--username admin--password somepassword--db mydb--out/ backup/ db/备份所有数据库
要备份所有数据库,只需按以下命令运行即可。这里/ data/ db/是你的mongodb数据目录的位置,/ backup/ db是备份目录的位置。
$ mongodump--out/ backup/ db/可以为远程数据库指定主机,端口。
备份单一集合
此命令将从数据库中备份单个集合。备份文件将在dump/ mydb/目录中创建。
$ mongodump--collection mycollection--db mydb--out/ backup/ db/2、使用mongorestore恢复MongoDB数据库
mongorestore是用于恢复mongodb数据库备份的命令行工具。这里/ data/ db/是你的mongodb数据目录的位置,/ backup/ db是备份目录的位置。
$ mongorestore--db mydb--drop/ backup/ db/ mydb-drop-如果已经存在,将删除数据库。
只需将备份文件移动到远程服务器并在那里运行相同的命令即可恢复备份。
3、MongoDB备份Shell脚本
可以在调度程序中轻松安排以下脚本,以定期备份数据库。创建如下文件
$ vi/backup/mongo-backup.sh将以下内容添加到文件中。相应地更新数据库主机名,数据库名称,用户名和密码。
#!/bin/sh
TODAY=`date+%d%b%Y`
BACKUP_DIR=/backup/db
mkdir-p${BACKUP_DIR}/${TODAY}
mongodump-h<DATABASE_HOST>-d<DATABASE_NAME>-u<USERNAME>-p<PASSWRD>--out${BACKUP_DIR}/${TODAY}/现在在crontab中配置它以便每天运行。
0 2***/backup/mongo-backup.sh本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的MySQL视频教程栏目!
mongodb恢复数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何备份,还原和迁移MongoDB数据库、mongodb恢复数据库的信息别忘了在本站进行查找哦。