设为首页 收藏本站
查看: 1761|回复: 1

[经验分享] MongoDB -- 介绍、安装、库管理、备份以及恢复

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-13 14:25:18 | 显示全部楼层 |阅读模式
文档型数据库
C++语言编写,分布式文件存储的开源数据库系统,属于NoSQL
在高负载的情况下,可以添加更多的节点,保证服务器的性能
为WEB应用提供可扩展的高性能数据存储解决方案。
将数据存储为一个文档,数据结构由键值对组成,MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组以及文档数组。
从3.2开始默认使用WiredTiger storage engine.
                  NoSQL MongoDB安装
1
2
3
4
5
6
7
8
9
10
11
vim /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=
gpgcheck=1
enabled=1
gpgkey=


yum install -y mongodb-org
#sed -i "s%bindIp: 127.0.0.1%#bindIp: 127.0.0.1%g" /etc/mongod.conf  监听所有的IP,监听多个192.168.1.1,192.168.1.2 使用逗号隔开






卸载
1
2
3
yum erase $(rpm -qa | grep mongodb-org)
rm -r /var/log/mongodb
rm -r /var/lib/mongo





进入mongo shell时 提示
QQ截图20170313142504.png

关于读写的认证部分(第一个警告),warning 暂时未解决,按照官方文档操作亦有此问题。
修改内核
1
2
3
4
5
6
echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/defrag


systemctl start mongod.service
chkconfig mongod on   设置开机启动



无法启动时 可以使用 mongodb -f /etc/mongodb.conf 来启动 ,可以查看错误

Mongodb 连接和用户管理
mongo 进入到mongodb shell中 (--port 指定端口  默认的端口27017)
连接远程主机  mongo --host  127.0.0.1
mongo -uusername    -ppasswd
用户管理(针对库),建立用户时要先进入到对应的库里
use test   (切换库,没有自动创建)
db   //显示所在的数据库
db.createUser({user:"admin",pwd:"123456",roles:[{role:'dbOwner',db:'userdb'}]})
use admin
db.system.users.find()   //必须在admin库里 才能找到所有用户,列出所有用户,需要切换到admin库
show users;  //查看当前库的所有用户
db.dropUser('admin')  //删除用户
MongoDB库管理
db.version()  //查看版本号
use test   (切换库,没有自动创建)
show dbs   //查看库,此时userdb并没有出现,这是因为该库是空的,还没有任何集合,只需要创建一个集合就能看到了
db.createCollection('clo1')  //创建集合clo1,在当前库下面创建
db.dropDatabase()       //删除当前库,必须切换到库下再删除
db.stats()   //查看当前库信息
db.serverStatus()
db.createCollection('clo1',{capped:true,autoIndexID:true,size:6142800,max:10000})
capped:true   启用封顶集合,固定大小的集合,到达最大值时,自动覆盖最早的条目。如果为true,需要指定尺寸大小。
,autoIndexID:true 自动创建索引 _id字段的默认是false
size 指定最大字节的封顶集合,单位 B
max  指定封顶集合允许在文件的最大数量。
show collections  //查看所有集合   可以用 show tables
db.clo1.insert({clo1ID:1,UserName:"123",password:"123456"})   //如果集合不存在,自动创建集合
db.Account.find()   //查看Account的所有文档
db.Account.find({AccountID:2})   //查看AccountID的内容
db.clo1.update({clo1ID:1},{"$set":{"Age":20}})
db.clo1.remove({clo1ID:1})    //根据条件删除
db.clo1.drop()   //删除所有文档,即删除组合
db.printCollectionStats()   //查看集合状态

MongoDB副本集(repl set)
副本集,这种模式下有一个主(primary),多个从(secondary),只读。支持给他们设置权重,当主宕掉后,权重最高的从切换为主(备用的权重需要比其他的高)。此架构中,可以建立一个仲裁的角色,只负责裁决,而不存储数据(也是一个Mongodb的数据库),读写数据都在主上,要实现负载均衡的目标需要手动指定读库目标server。
修改配置文件   /etc/mongod.conf
replication:
test01
mongod
use admin
>  config={_id:"test01",members:[{_id:0,host:"192.168.1.88:27017"},{_id:1,host:"192.168.1.89:27017"},{_id:2,host:"192.168.1.90:27017"}]}
>    rs.initiate(config)   //查看状态rs.status() 可能不需要执行下面步骤
>    rs.add("192.168.1.89")
>    rs.add("192.168.1.90")
>   rs.status() 查看状态
如果两个从上的状态 为  “stateStr”:"STARTUP",则需要如下操作:
> var config={_id:"test01",members:[{_id:0,host:"192.168.1.88:27017"},{_id:1,host:"192.168.1.89:27017"},{_id:2,host:"192.168.1.90:27017"}]}
> rs.reconfig(config)
再次查看rs.status()状态       SECONDARY
权重设置:默认三台权重都是1,如果任何一台的权重设置比其他的高,则该机器马上切换为primary角色,所以 88:3  89:2 90:1
在主上执行
cfg=rs.conf()
cfg.members[0].priority = 3
cfg.members[1].priority = 2
cfg.members[2].priority = 1
rs.reconfig(cfg)                   //89节点会成为候选主节点

MongoDB备份与恢复
备份库
mongodump -h ip -d dbname -o dir    //-h 后面跟服务ip  -p port  -d database 名字 ,不加则备份所有的数据库, -o 备份的目录
备份指定的集合
mongodump -d mydb -c testc -o /tmp/test     //-c 指定集合的名字
导出集合为json文件
mongoexport -d mydb -c testc -o /tmp/testc.json   //-o后面跟的是文件的名字
恢复所有的库
mongorestore --drop /tmp/123         //--drop 删除原库  然后在恢复  /tmp/123 备份所有库目录的名字
恢复指定的库
mongorestore  -d mydb dir/     //-d 要恢复库的名字  dir 该库备份时所在的目录
恢复集合
mongorestore  -d mydb -c test dir/mydb/testc.bson    //-c需要恢复的集合的名字  dir 备份时的路径 需要指定要恢复的bson文件
导入集合
mongoimport -d mydb -c testc --file /tmp/testc.json


运维网声明 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-351059-1-1.html 上篇帖子: MongoDB用户及权限管理(一):角色说明 下篇帖子: MongoDB慢日志查询
累计签到:14 天
连续签到:1 天
发表于 2017-8-23 09:55:16 | 显示全部楼层
不错很适合小白学习

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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