MongoDB 备份恢复
一、概述
1.1 MongoDB概念
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。在nosql数据库里,大部分的查询都是键值对(key、value)的方式。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的。其特征NoSQL、文档存储、Json数据模型、支持事务。
1.2 NoSQL概念
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
1.3 NoSQL的特征
高扩展性:Nosql去掉了关系数据库的关系型特性,易于横向扩展。
高性能:Nosql通过简单的key-value方式获取数据,非常快速。还有NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多。
灵活的数据模型:相对于关系数据库里,增删字段的繁琐,NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
高可用:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如mongodb通过mongos、config server replica set,shard就可以快速配置出高可用配置。
二 备份恢复
a.mongodb数据备份
mongodump命令脚本语法如下:
mongodump -h dbhost -d dbname -o dbdirectory
- -h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 - -d:
需要备份的数据库实例,例如:test - -o:
备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
语法 |
描述 |
实例 |
mongodump --host HOST_NAME --port PORT_NUMBER |
该命令将备份所有MongoDB数据 |
mongodump --host localhost --port 27017 |
mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY |
|
mongodump --dbpath /data/db/ --out /data/backup/ |
mongodump --collection COLLECTION --db DB_NAME |
该命令将备份指定数据库的集合。 |
mongodump --collection mycol --db test |
b.mongodb数据恢复
mongorestore命令脚本语法如下:
>mongorestore -h <hostname><:port> -d dbname <path>
- --host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017 - --db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 - --drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦! - <path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:/tmp/testdb
你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。 - --dir:
指定备份的目录
你不能同时指定 <path> 和 --dir 选项。
此时查看数据已经正常恢复。
3.7 密码权限
为mongodb设置密码,需要进行auth启动,在配置文件添加auth=true
a.设置数据库管理员
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"mongopwd",roles:["userAdminAnyDatabase"]}) #创建用户密码,并设置权限
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
> db.auth("root","mongopwd") #认证,返回1为认证成功
1
认证通过进入数据库db.auth 也可以在登录的时候直接指定用户名密码登录
mongo -u root -p mongopwd --authenticationDatabase admin
b.创建数据库用户
> use test
switched to db test
> db
test
> db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
> db.auth("testuser","testpass")
1
- 点赞
- 收藏
- 关注作者
评论(0)