MongoDB-服务器管理
前言
本文主要涉及一下内容:数据库的备份和恢复,对于任一数据库来说备份至关重要;数据的导入和导出;数据库修复;数据库状态监控工具mongostat;在使用过程遇到其他命令会总结在此。
1.数据库的备份和恢复
1.1 复制数据文件
备份:使用此方法时必须保证数据文件不发生变化,可以使用fsynclock命令,> db.fsyncLock()
一旦运行该命令,就会锁定数据库,禁止任何写入,并进行同步,把数据刷到磁盘。当命令返回后,就可以复制数据文件了,如备份名为myDB的数据库,只需复制所有名为myDB.*的文件,如果使用了—directoryperdb选项,只需复制该数据库对应的整个数据目录。复制完成后,使用> db.fsyncUnlock()解锁数据库。
注意:如果启用了身份验证,那么,在调用fsyncLock和fsyncUnlock期间不要关闭shell否则只能重启mongod服务了。
恢复:保证mongod服务没启动,待恢复目录为空,将备份的数据文件拷贝到数据库目录,最后启动mongod服务即可。
1.2 使用mongodump
使用mongodump可以单独备份数据库,集合,只不过备份和恢复的比较慢。可以使用mongodump –help查看可用选项。
备份:
备份整个foo数据库
mongodump –h 127.0.0.1:30000 –d foo –o /data/dbback/foo
备份foo数据库中的bar集合
mongodump –h 127.0.0.1:30000 –d foo –c foo.bar –o /data/dbback/foo/bar
备份多个集合,foo中的bar,info集合,mongodump一次只能备份一个集合,不能指定多个集合进行备份,倒是可以用 --excludeCollection和--excludeCollectionsWithPrefix两个参数排除不需要备份的集合。
可以使用shell脚本来实现一次备份多个集合。
恢复:
使用mongorestore命令,其中有两个选项值得一提:
--drop:在恢复前删除现有集合,否则直接插入现有集合中
--noobjcheck:忽略对象插入集合之前的验证步骤
恢复单个数据库
mongorestore –h 127.0.0.1:30000 –d foo –dir /data/dbback/foo
恢复单个集合
mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar –dir /data/dbback/foo/bar
恢复多个集合
mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar,foo.infi –dir /data/dbback/foo /cols
1.3 备份副本集
直接使用复制数据文件的方式备份,这种方式备份副本集时无需做任何修改。
1.4 备份分片集群
第一步:关闭均衡器,sh.stopBalancer(),sh.getBalancerStatue() 查看均衡器状态
第二步:连接mongos执行mongodump备份
第三步:启用均衡器,sh.setBalancerState(true)
恢复备份的话,使用mongorestore连接到一个mongos执行即可
备份单个分片和备份单个服务器一样。
2.数据的导入和导出
数据导入导出就是两个命令:mongoimport和mongoexport
mongoimport,可以把CSV, TSV或者JSON格式的数据导入mongodb,其中几个有用的选项:
--headerline:对于CSV,TSV格式文件,使用第一行作为字段名称
--drop:导入前删除集合,否则追加集合后面
--ignoreblanks:不导入空字段
mongoimport –h 127.0.0.1:30000 –d foo –c foo.bar –type csv –headerline < csvfile
mongoexport,可以把mongodb数据导出JSON,CSV格式的文件。其中几个有用的选项:
--q:指定查询条件导出数据,默认为{}
--f:指定导出的字段名称
mongoexport –h 127.0.0.1:30000 –d foo –c foo.bar –q {} –type=csv > bar.csv
3.数据库状态监控
使用mongostat默认每一秒输出服务当前状态,输出主要字段说明表,使用方法mongostat –port 30000。
使用db.currentOp()可以查看数据库当前执行的操作有哪些。
4.用户的添加删除
Mongodb使用基于角色的访问控制(Role-Based Access Control)来管理数据库系统的访问,3.0默认使用的验证机制为SCRAM-SHA-1。
MongoDB内置的用户权限如下表:
4.1 添加用户及权限
(1)创建管理员
创建一个管理员用户,用来管理其他用户
use admin db.createUser( { user: "admin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
(2)创建一个多数据库权限用户
创建一个用户赋予它多个数据库的权限:
use reporting db.createUser({ user: "reportsUser", ", roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] })
4.2 修改用户权限及密码
首先需要有 grantRole 和 revokeRole 的权限,查看用户的权限使用 viewRole,但也必须拥有查看权限的权限。
(1)查看用户权限
查看reportsUser用户的拥有的角色
use reporting
db.getUser("reportsUser")
(2)移除用户权限
移除reportsUser在accounts数据库的读写权限
use reporting db.revokeRolesFromUser( "reportsUser", [ { role: "readWrite", db: "accounts" } ] )
(3)授予用户权限
授予reportsUser在accounts数据库的读权限
use reporting db.grantRolesToUser( "reportsUser", [ { role: "read", db: "accounts" } ] )
注意:对于分片集群修改用户权限,若有多个mongos实例,在一个修改后,其它的需等待10分钟才刷新缓存
(4)修改用户密码
将reporting用户的密码修改为1234
db.changeUserPassword("reporting", "1234")
4.3 删除用户
db.dropUser("userName")
MongoDB-服务器管理的更多相关文章
- window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
最近公司有一个项目模块让用nosql-mongodb替换了,故,对mongodb做了一点研究,然后分享一下! 1.首先说一下安装时的坑 下载mongodb,如果你从官网下载,将会是一件很慢的事情,在公 ...
- MongoDB 分片管理(三)服务器管理
MongoDB 分片管理(三)服务器管理
- MongoDB的客户端管理工具--nosqlbooster 连接MongoDB服务器
nosqlbooster的官网地址为https://nosqlbooster.com.大家如果想直接下载,可以登入下载网址https://nosqlbooster.com/downloads. 下载w ...
- MongoDB基本管理命令
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中 可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由 ...
- NoSQL学习二:MongoDB基本管理命令
MongoDB命令学习 一.MongoDB命令帮助 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控: 这是MongoDB最上层 ...
- 最佳的MongoDB客户端管理工具
<最佳的MongoDB客户端管理工具> 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoD ...
- MongoDB账号管理及实践
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...
- Mongodb账户管理
Mongodb账户管理 介绍 Mongodb是一个schema free的非sql类分布式数据库,可以利用它做很多很灵活的存储和操作,最近了解了下它的账户机制,通过设置auth启动方式可以对所有登 ...
- MongoDB的管理-深度长文
(1) 启动和停止MongoDB: Ubuntu18下启动关闭MongoDB 启动MongoDB: 方法一: systemctl start mongod.service 方法二: 在MongoDB的 ...
- 在亚马逊amazon的AWS上安装Node和MongoDB服务器
在亚马逊amazon的AWS上安装Node和MongoDB服务器 在建立AWS上账号.创建EC2 ,用putty链接上之后,就可以用下面的方法开始安装. !!! 如果不是是自己建立的EC2, 而是由B ...
随机推荐
- geotrellis使用(十九)spray-json框架介绍
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 spray-json简介 spray-json使用 ...
- C++运算符重载
C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...
- 【PHP面向对象(OOP)编程入门教程】23.自动加载类 __autoload()函数
很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在 ...
- SAX解析技术
SAX,全称Simple API for XML,既是指一种接口,也是指一个软件包.SAX工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束.元素(element)开始 ...
- RadioGroup、RadioButton、CheckBox、Toast用法
xml布局文件如下: <RadioGroup android:id="@+id/sex" android:layout_width="wrap_content&qu ...
- 关于WEB Service&WCF&WebApi实现身份验证之WebApi篇
之前先后总结并发表了关于WEB Service.WCF身份验证相关文章,如下: 关于WEB Service&WCF&WebApi实现身份验证之WEB Service篇. 关于WEB S ...
- 史上最全的Ajax基础详解
同步请求和异步请求 先解释一下同步和异步的概念: 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯 ...
- 10.Configure One-to-Many(配置一对多关系)【Code-First系列】
现在,我们将学习怎么配置一对多的关系. Visit Entity Relationship section to understand how EF manages one-to-one, one-t ...
- C#开发微信门户及应用(45)--微信扫码登录
在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...
- Android 不一样的原生分享
Android做分享功能百度一下就两种方案,其一是用系统原生的Activity,最终弹出一个对话框,下面这种的还好,像右图的那种就嫌弃了,上面提供的应用也相对杂,还记得有次测试还给鄙人提了个Bug:建 ...