配置MongoDB3.04集群分片

网上大部分都是的mongo2.x集群分片了,咱写个3.04的。

由于公司采用磁盘阵列冗余存储,所以不考虑数据备份问题只是简单的分片存储数据进行测试的。

配置结构如图:

服务器配置:

cpu双核、8G内存、/shard目录挂载500G硬盘。

服务器列表:


IP
职能

192.168.6.117

config、mongos

192.168.6.118


client

192.168.6.119


client


192.168.6.147


client


192.168.6.160


client

首先打开这5台机器执行如下相同命令:

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.4.tgz
tar zxvf mongodb-linux-x86_64-3.0.4.tgz
cp -rf mongodb-linux-x86_64-3.0.4 /usr/local/

依次打开118、119、147、160四台机器执行如下命令(注意:使用118替换指定的119):

mkdir /shard/shard11 9
chmod -R 777 /shard/shard119
/usr/local/mongodb-3.0.4/bin/mongod -shardsvr -port 27017 -dbpath=/shard/shard119/ --storageEngine wiredTiger -logpath=/shard/shard119.log --fork

然后启动。在终端中分别执行检查Mongod进程是否成功启动:

ps aux | grep mongo  

如果任何一台没有启动成功,重复上面的,直到找出原因。

OK,现在我们成功的分别在4台计算机上启动了1个mongod实例,mongod是真正存储数据的进程。集群中还需要一个配置服务器,用来存储在各个节点中共享的配置信息,存储数据的元信息[METADATA],也如上面我结构图中config.

打开117服务器执行如下命令:

mkdir /data/config
/usr/local/mongodb-3.0.4/bin/mongod -configsvr -dbpath=/data/config -port 20000 -logpath=/data/config.log --fork

当以上都启动成功,我们可以开启mongos服务了。mongo也是在117上执行。

/usr/local/mongodb-3.0.4/bin/mongos -configdb 192.168.6.117:20000 -port 30000 -chunkSize 100 -logpath=/data/mongos.log --fork

注意-configdb所对应的IP地址和端口应该为config里设置的所在ip及端口。-chunkSize设置分片大小主机默认200,我们可以设置成100即100M。

如果顺利的话,你在117能看到两个mongo上运行的进程,执行查看:ps -ef  | grep mong。表明mongo分片安装完毕。

下面开始配置mongo分片:

连接操作数据库:

/usr/local/mongodb-3.0.4/bin/mongo 192.168.6.117:30000/admin

注意:以下都是在mongo命令行下完成的操作:

添加分片服务器:
db.runCommand({"addshard":"192.168.6.118:27017"})
db.runCommand({"addshard":"192.168.6.119:27017"})
db.runCommand({"addshard":"192.168.6.147:27017"})
db.runCommand({"addshard":"192.168.6.160:27017"})

设置分片数据库:
db.runCommand({"enablesharding": "qiaodazhao"})

使用数据库:
use qiaodazhao

设置表分片基于字段hash:
sh.shardCollection("qiaodazhao.resume_meta_data",{_id:"hashed"})

设置表分片基于字段(注意这种形式与以上作用相同):
db.runCommand({"shardcollection":"qiaodazhao.things", "key":{"_id":1}})

打印数据库分片信息:
db.printShardingStatus()

打印服务器信息:
db.serverStatus()

创建表索引:
db.resume_meta_data.ensureIndex({"org_name":1},{"background":true})

查看表索引:
db.resume_meta_data.getIndexes()

由于篇幅限制,打印信息这里就不截图了。

mongodb常用操作命令整理

参考资料:

http://my.oschina.net/zhzhenqin/blog/97268

http://www.lanceyan.com/tech/arch/mongodb_shard1.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 15:00:03

配置MongoDB3.04集群分片的相关文章

mongodb3.2集群认证登陆

继mongodb3.2复制集和shard集群之后的用户认证登陆. 1:关于mongos登录权限认证配置 [[email protected] keyfile]$ openssl rand -base64 741 > /data/keyfile/zxl [[email protected] keyfile]$ chmod 600 /data/keyfile/zxl 2:把/data/keyfile/zxl文件拷贝到各个机器/data/keyfile/目录下即可 切记属主和组以及文件权限600 3:

18.1集群介绍 18.2 keepalived介绍18.3/18.4/18.5 用keepalived配置高可用集群

- 18.1 集群介绍 - 18.2 keepalived介绍 - 18.3/18.4/18.5 用keepalived配置高可用集群 - 扩展 - heartbeat和keepalived比较 http://blog.csdn.net/yunhua_lee/article/details/9788433  - DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945 - mysql+keepalived http://lizhenl

Redis集群分片原理及选举流程

Redis集群分片原理及选举流程 集群分片模式 如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据.在这种情况下,数据分片是一个非常好的解决办法. Redis的Cluster正是用于解决该问题.它主要提供两个功能: 自动对数据分片,落到各个节点上 即使集群部分节点失效或者连接不上,依然可以继续处理命令 对于第二点,它的功能有点类似于Sentienl的故障转移,在这里不细说.下面详细了解下Redis的槽位分片原理

18.1 集群介绍;18.2 keepalived介绍;18.3,18.4,18.5 用keepalived配置高可用集群(上,中,下);

18.1 集群介绍 1. 根据功能划分为两大类:高可用和负载均衡 2. 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 3. 实现高可用的开源软件有:heartbeat.keepalived 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2 4. 实现负载均衡的开源软件有LVS.keepalived.haproxy.nginx,

【跟我学Puppet】1.7 mco 配置amq的集群

在之前的1.2 Puppet 3.7 Mcollective+SSL加密和权限验证 中大家可以成功的部署mco.并且结合ssl证书做权限管理.... 通过mco自带的failover可以很简单的去做一个高可用...那么问题来了....这个简单的高可用是... 当有a.b两个mq.一堆server和client现在连接在mq a,当一个网络抖动,部分的机器到了mq b. 这个时候你用client 在mq a中是看不到在mq b中的主机...这..怎么办.. 配置ActiveMQ      MQ的配

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Wind

配置mysql数据库集群

1.先在所有数据库服务器上安装mysql-cluster包 管理机:192.168.1.6 数据节点:192.168.1.31   192.168.1.32 sql节点:192.168.1.33    192.168.1.111 2.在管理节点上配置  [[email protected] ~]# vim /etc/config.ini [ndbd default]    //数据节点公共配置 noofreplicas=2   //数据备份数 datamemory=300M  //查询缓存 in

zookeeper安装和配置(单机+伪集群+集群)

#单机模式 解压到合适目录. 进入zookeeper目录下的conf子目录, 复制zoo_sample.cfg-->zoo.cfg(如果没有data和logs就新建):tickTime=2000 dataDir=/Users/apple/zookeeper/data dataLogDir=/Users/apple/zookeeper/logs clientPort=2180 参数说明:tickTime: zookeeper中使用的基本时间单位, 毫秒值.dataDir: 数据目录. 可以是任意目

请教高手!在VM下配置服务器双机集群,总是在添加节点2的时候,出现错误0x8007042c依存服务或组无法启动。

请教高手!在VM下配置服务器双机集群,总是在添加节点2的时候,出现错误0x8007042c依存服务或组无法启动. 请教高手!在VM下配置服务器双机集群,总是在添加节点2的时候,出现错误0x8007042c依存服务或组无法启动.