MongoDB
一,MongoDB概述
1,mongodb 叙述
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.145,192.168.19.146,192.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
A,192.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所示:
B,192.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
C,192.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表示:
原文地址:http://songti.blog.51cto.com/2017855/1727496