设为首页 收藏本站
查看: 658|回复: 0

[经验分享] MongoDB管理篇

[复制链接]

尚未签到

发表于 2015-7-7 11:27:42 | 显示全部楼层 |阅读模式
一、数据导出mongoexport
  作为DBA,经常会碰到导入导出数据的需求,下面就介绍实用工具mongoexport 和mongoimport 的使用方法,常用导出方法:



$./mongoexport -d my_mongodb -c user -o user.dat
  常用参数说明:


  • -d|--db 指明使用的库
  • -c| --collection 指明导出的collection
  • -o| --out 指明导出的文件名
  • -f | --fields 指明导出的字段,多个字段用,号分隔
  • --host/--port 指明连接到mongo的主机ip和端口
  • --csv 导出csv格式,默认为json格式
  

二、数据导入mongoimport



$./mongoimport -d my_mongodb -c user user.dat
  可以看到导入数据的时候会隐式创建表结构。 常用参数说明:


  • -d | --db   使用的数据库
  • -c | --collection 使用的集合
  • -f  | --fields 使用的字段,多个用','号分隔
  • --host/--port  连接到mongodb的ip和端口
  • --type 导入文件的格式,默认为json
  • --drop drop collection first
  • --stopOnError 在导入出现错误的时候停止
  • --file 指明要导入文件的路径
  • --headerline 不导入文件的第一行
  注意:CSV 格式良好,主流数据库都支持导出为CSV 的格式,所以这种格式非常利于异构数据迁移。



三、数据备份mongodump
  可以用mongodump 来做MongoDB 的库或表级别的备份:



$./mongodump -d my_mongodb
  会在当前目录下创建一个dump 目录,用于存放备份出来的文件也可以指定备份存放的目录。 重要参数说明:


  • -d | --db    要备份的数据库
  • -c | --collection 要备份的集合
  • -o | --out 输出备份文件的目录,'-'为标准输出
  • -q | --query 查询备份
  

四、数据恢复mongorestore



$./mongorestore -d my_mongodb my_mongodb_dump/*
  常用参数说明:


  • -d | --db 要使用的数据库
  • -c | --collection 要使用集合
  • --objcheck 在插入之前验证对象
  • --filter  在插入之前应用过滤
  • --drop  每个集合导入之前先删除
  

五、访问控制
  官方手册中启动 MongoDB 服务时没有任何参数,一旦客户端连接后可以对数据库任意操作,而且可以远程访问数据库,所以推荐开发阶段可以不设置任何参数,但对于生产环境还是要仔细考虑一下安全方面的因素,而提高 MongoDB 数据库安全有几个方面:


  • 绑定IP 内网地址访问MongoDB 服务
  • 设置监听端口
  • 使用用户名和口令登录

5.1 绑定IP 内网地址访问MongoDB 服务
  MongoDB 可以限制只允许某一特定IP 来访问,只要在启动时加一个参数bind_ip 即可,如下:



$./mongod --bind_ip 192.168.1.103
  客户端访问时需要明确指定服务端的IP,否则会报错。

5.2 设置监听端口
  官方默认的监听端口是27017,为了安全起见,一般都会修改这个监听端口,避免恶意的连接尝试,具体如下:将服务端监听端口修改为28018:



./mongod --bind_ip 192.168.1.103 --port 28018
  客户端访问时需要指定端口,否则会报错。

5.3 使用用户名和口令登录
  MongoDB 默认的启动是不验证用户名和密码的,启动MongoDB 后,可以直接用MongoDB 连接上来,对所有的库具有root 权限。所以启动的时候指定参数,可以阻止客户端的访问和连接。



./mongod --auth
  这时候登陆还是可以使用mongo的。在最初始的时候 MongoDB 都默认有一个 admin 数据库(默认是空的),而 admin.system.users 中将会保存比在其它数据库中设置的用户权限更大的用户信息。注意:当 admin.system.users 中没有添加任何用户时,即使 MongoDB 启动时添加了 --auth参数,如果在除 admin 数据库中添加了用户,此时不进行任何认证依然可以使用任何操作,直到知道你在 admin.system.users 中添加了一个用户。 5.3.1 增加用户



db.addUser('username', 'password');             //建立系统root用户
db.auth('username', 'password');
  5.3.2 建立指定权限用户 MongoDB 也支持为某个特定的数据库来设置用户,如我们为test 库设一个只读的用户user_reader:



> use test
> db.addUser("user_reader", "user_pwd", true)

六、进程控制

6.1 查看活动进程



>db.currentOp();  // 等同于: db.$cmd.sys.inprog.findOne()
{ inprog: [ { "opid" : 18 , "op" : "query" , "ns" : "mydb.votes" ,
                  "query" : "{ score : 1.0 }" , "inLock" : 1
                }
             ]
}
  字段说明:


  • Opid: 操作进程号
  • Op: 操作类型(查询,更新等)
  • Ns: 命名空间, 指操作的是哪个对象
  • Query: 如果操作类型是查询的话,这里将显示具体的查询内容
  • lockType: 锁的类型,指明是读锁还是写锁
  

6.1 结束进程



> db.killOp(1234/*opid*/) // 等同于: db.$cmd.sys.killop.findOne({op:1234})
  注意:不要kill 内部发起的操作,比如说replica set 发起的sync 操作等
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84078-1-1.html 上篇帖子: mongodb cloud store db 下篇帖子: MongoDB+java+spirng+morphia
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表