当前位置:Gxlcms > 数据库问题 > Mongodb

Mongodb

时间:2021-07-01 10:21:17 帮助过:48人阅读

MongoDB

一,MongoDB概述

1mongodb 叙述

https://www.mongodb.org/downloads 链接是mongodb下载地址,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2,它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

*面向集合存储,易存储对象类型的数据。

*模式自由。

*支持动态查询。

*支持完全索引,包含内部对象。

*支持查询。

*支持复制和故障恢复。

*使用高效的二进制数据存储,包括大型对象(如视频等)。

*自动处理碎片,以支持云计算层次的扩展性。

*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

*文件存储格式为BSON(一种JSON的扩展)。

*可通过网络访问。

3,MongoDB已经在多个站点部署,

1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

不适用的场景如下:1)要求高度事务性的系统。

2)传统的商业智能应用。

3)复杂的跨文档(表)级联查询

 

########################################################################################

二,MongoDB配置参数

1,需求配置图

如图1所示:

技术分享

这里我们准备了三台主机,IP地址分别是:192.168.19.145192.168.19.146192.168.19.147

2,三台服务器创建安装环境所需的路径:

]# mkdir -pv /mongodb/{mongos,config,shard1m,shard3s,arbiter2}/{data,conf,log}

]# mkdir -pv /mongodb/{mongos,config,shard2m,shard1s,arbiter3}/{data,conf,log}

]# mkdir -pv /mongodb/{mongos,config,shard3m,shard2s,arbiter1}/{data,conf,log}

如图2所示:

技术分享

3,创建用户为路径赋予权限:

]# groupadd -rmongod

]# useradd -rmongod -g mongod

]# chown -Rmongod.mongod /mongodb/

4,更改/usr/local/Mongodb路径:

]#mv/usr/local/mongodb-linux-x86_64-2.6.5 /usr/local/mongodb-2.6.5

 

###################################################

三,配置MongoDB的参数信息

1,配置每台服务的MongoDB

A192.168.19.145 的配置信息:

]# vim/mongodb/mongos/config/mongos.conf  添加以下内容

logpath=/mongodb/mongos/log/mongos.log

logappend=true

fork=true

port=27111

configdb=192.168.19.145:27100,192.168.19.146:27100,192.168.19.147:27100

 

]# vim /mongodb/config/conf/config.conf  添加以下内容

logpath=/mongodb/config/log/config.log

logappend=true

pidfilepath=/mongodb/pid/config.pid

dbpath=/mongodb/config/data

fork=true

port=27100

oplogSize=2048

configsvr=true

 

]# vim /mongodb/shard1m/conf/shard1m.conf  添加以下内容

logpath=/mongodb/shard1m/log/shard1m.log

logappend=true

pidfilepath=/mongodb/pid/shard1m.pid

dbpath=/mongodb/shard1m/data

directoeyperdb=true

replSet=replset1

rest=true

oplogSize=1024

fork=true

shardsvr=true

port=27001

journal=true

 

]#vim/mongodb/shard3s/conf/shard3s.conf  添加以下内容

logpath=/mongodb/shard3s/log/shard3s.log

logappend=true

pidfilepath=/mongodb/pid/shard3s.pid

dbpath=/mongodb/shard3s/data

directoryperdb=true

replSet=replset3

rest=true

oplogSize=1024

fork=true

shardsvr=true

port=27011

journal=true

 

]# vim /mongodb/arbiter2/conf/arbiter2.conf

logpath=/mongodb/arbiter2/log/arbiter2.log

logappend=true

pidfilepath=/mongodb/pid/arbiter2.pid

dbpath=/mongodb/arbiter2/data

directoryperdb=true

replSet=replset2

rest=true

oplogSize=1024

fork=true

shardsvr=true

port=27010

journal=true

 

配置好以后启动mongodb服务:

]#/usr/local/mongodb-2.6.5/bin/mongod -f/mongodb/config/conf/config.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f/mongodb/shard1m/conf/shard1m.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f/mongodb/shard3s/conf/shard3s.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f/mongodb/arbiter2/conf/arbiter2.conf

]#/usr/local/mongodb-2.6.5/bin/mongos -f /mongodb/mongos/conf/mongos.conf

如图3所示:

技术分享

B192.168.19.146 的配置信息:

]# vim mongos/conf/mongos.conf

logpath=/mongodb/mongos/log/mongos.log

logappend=true

fork=true

port=27111

configdb=192.168.19.145:27100,192.168.19.146:27100,192.168.19.147:27100

 

]# vim config/conf/config.conf

logpath=/mongodb/config/log/config.log

logappend=true

pidfilepath=/mongodb/pid/config.pid

dbpath=/mongodb/config/data

fork=true

port=27100

oplogSize=2048

configsvr=true

 

]# vim shard2m/conf/shard2m.conf

logpath=/mongodb/shard2m/log/shard2m.log

logappend=true

pidfilepath=/mongodb/pid/shard2m.pid

dbpath=/mongodb/shard2m/data

directoryperdb=true

replSet=replset2

rest=true

oplogSize=1024

fork=true

shardsvr=true

port=27001

journal=true

 

]# vim shard1s/conf/shard1s.conf

logpath=/mongodb/shard1s/log/shard1s.log

logappend=true

pidfilepath=/mongodb/pid/shard1s.pid

dbpath=/mongodb/shard1s/data

directoryperdb=true

replSet=replset1

rest=true

oplogSize=1024

fork=true

port=27011

shardsvr=true

journal=true

 

]# vimarbiter3/conf/arbiter3.conf

logpath=/mongodb/arbiter3/log/arbiter3.log

logappend=true

pidfilepath=/mongodb/pid/arbiter3.pid

dbpath=/mongodb/arbiter3/data

directoryperdb=true

replSet=replset3

rest=true

oplogSize=1024

fork=true

shardsvr=true

port=27010

journal=true

 

配置好以后启动mongodb服务:

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/config/conf/config.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/shard2m/conf/shard2m.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/shard1s/conf/shard1s.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/arbiter3/conf/arbiter3.conf

]#/usr/local/mongodb-2.6.5/bin/mongos -f /mongodb/mongos/conf/mongos.conf

 

C192.168.19.147 的配置信息:

]# vim mongos/conf/mongos.conf

logpath=/mongodb/mongos/log/mongos.log

logappend=true

fork=true

port=27111

configdb=192.168.19.145:27100,192.168.19.146:27100,192.168.19.147:27100

 

]# vim config/conf/config.conf

logpath=/mongodb/config/log/config.log

logappend=true

pidfilepath=/mongodb/pid/config.pid

dbpath=/mongodb/config/data

fork=true

port=27100

oplogSize=2048

configsvr=true

 

]# vim shard3m/conf/shard3m.conf

logpath=/mongodb/shard3m/log/shard3m.log

logappend=true

pidfilepath=/mongodb/pid/shard3m.pid

directoryperdb=true

dbpath=/mongodb/shard3m/data

replSet=replset3

rest=true

oplogSize=1024

port=27001

fork=true

shardsvr=true

journal=true

 

]# vim shard2s/conf/shard2s.conf

logpath=/mongodb/log/shard2s.log

logappend=true

pidfilepath=/mongodb/pid/shard2s.pid

dbpath=/mongodb/shard2s/data

directoryperdb=true

replSet=replset2

rest=true

oplogSize=1024

port=27011

fork=true

shardsvr=true

journal=true

 

]# vimarbiter1/conf/arbiter1.conf

logpath=/mongodb/arbiter1/log/arbiter1.log

logappend=true

pidfilepath=/mongodb/pid/arbiter1.pid

dbpath=/mongodb/arbiter1/data

directoryperdb=true

replSet=replset1

rest=true

oplogSize=1024

fork=true

port=27010

shardsvr=true

journal=true

 

配置好以后启动mongodb服务:

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/config/conf/config.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/shard3m/conf/shard3m.cof

]#/usr/local/mongodb-2.6.5/bin/mongod -f/mongodb/shard2s/conf/shard2s.conf

]#/usr/local/mongodb-2.6.5/bin/mongod -f /mongodb/arbiter1/conf/arbiter1.conf

]#/usr/local/mongodb-2.6.5/bin/mongos -f /mongodb/mongos/conf/mongos.conf

###################################################

四,配置复制集

1,配置192.168.19.145的复制集:

]#/usr/local/mongodb-2.6.5/bin/mongo192.168.19.145:27001

>config={[_id:"replset1",members:{_id:0,host:"192.168.19.145:27001",priority:10},{_id:1,host:"192.168.19.146:27011",priority:8},{_id:2,host:"192.168.19.147:27010",arbiterOnly:true}]}

>rs.initiate(config);

>rs.status()

如图4所示:

技术分享

2,配置192.168.19.146的复制集:

]#/usr/local/mongodb-2.6.5/bin/mongo 192.168.19.146:27001

>config = {_id:"replset2",members:[{_id:0,host:"192.168.19.146:27001",priority:10},{_id:1,host:"192.168.19.147:27011",priority:8},{_id:2,host:"192.168.19.145:27010",arbiterOnly:true}]}

>rs.initiate(config);

>rs.status()

如图5所示:

技术分享

3,配置192.168.19.146的复制集:

]#/usr/local/mongodb-2.6.5/bin/mongo 192.168.19.146:27001

>config={_id:"replset3",members:[{_id:0,host:"192.168.19.147:27001",priority:10},{_id:1,host:"192.168.19.145:27011",priority:8},{_id:2,host:"192.168.19.146:27010",arbiterOnly:true}]}

>rs.initiate(config);

>rs.status()

如图6所示:

技术分享

####################################################

五,配置串联路由

1,登录mongos 配置串联路由(也就是添加shard分片)

]#/usr/local/mongodb-2.6.5/bin/mongo  192.168.19.145:27111

>use admin

>db.runCommand({addshard:"replset1/192.168.19.145:27001"});

>db.runCommand({addshard:"replset2/192.168.19.146:27001"});

>db.runCommand({addshard:"replset3/192.168.19.147:27001"});

>printShardingStatus()                  #查看分片信息

如图7所示:

技术分享

2,查看均衡器负责数据迁移:

>sh.getBalancerState()

如图8所示:

技术分享

3,开启分片并创建索引:

>use admin 

>db.runCommand({"enablesharding":"db_jia"})       #开启分片

> db.tab4.ensureIndex({"username":"hashed"})     #创建索引

> db.runCommand({"shardcollection":"db_jia.tab4","key":{"username":"hashed"}})     #使用Gridfs散列片键,写会强写在分片上;

如图9表示:

技术分享


Mongodb

标签:非关系型数据库mongodb

人气教程排行