mongodb分片部署

Mongodb 分片部署

配置mongodb集群,比如 在3个server上配置 3 shard的Mongodb集群:

架构:

1.每片数据需要3个mongod server,2个为主从数据节点;1个为仲裁节点(arbiter),不存数据。 一共三片,可以做成:

   20.220-mongo1:   20001(sh1主),20002(sh2从),20003(sh3仲裁)
   20.221-mongo2:   20002(sh2主),20003(sh3从),20001(sh1仲裁)
   20.222-mongo3:   20003(sh3主),20001(sh1从),20002(sh2仲裁) 

2. 需要3个mongod config server,登录3台机器执行如下

 20.220-mongo1: 19999
    echo ‘export PATH=$PATH:/usr/local/mongodb/bin‘ >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6.0.tgz
mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb
mkdir -p /usr/local/mongodb/{etc,date,log}
cd /usr/local/mongodb/date
mkdir sh1
mkdir sh2
mkdir sh3
mkdir cf1
mkdir cf2
mkdir cf3
20.221-mongo2: 19998
    echo ‘export PATH=$PATH:/usr/local/mongodb/bin‘ >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6.0.tgz
mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb
mkdir -p /usr/local/mongodb/{etc,date,log}
cd /usr/local/mongodb/date
mkdir sh1
mkdir sh2
mkdir sh3
mkdir cf1
mkdir cf2
mkdir cf3
20.222-mongo3: 19997
    echo ‘export PATH=$PATH:/usr/local/mongodb/bin‘ >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6.0.tgz
mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb
mkdir -p /usr/local/mongodb/{etc,date,log}
cd /usr/local/mongodb/date
mkdir sh1
mkdir sh2
mkdir sh3
mkdir cf1
mkdir cf2
mkdir cf3

3. mongos server 作为入口

192.168.20.220: 20000

1.启动mongod datanode service

/usr/local/mongodb/bin/mongod --fork --rest --replSet sh1 --shardsvr --oplogSize 40000 --dbpath /usr/local/mongodb/date/sh1 --logpath /usr/local/mongodb/log/sh1.log --port 20001
/usr/local/mongodb/bin/mongod --fork --rest --replSet sh2 --shardsvr --oplogSize 40000 --dbpath /usr/local/mongodb/date/sh2 --logpath /usr/local/mongodb/log/sh2.log --port 20002
/usr/local/mongodb/bin/mongod --fork --rest --replSet sh3 --shardsvr --oplogSize 40000 --dbpath /usr/local/mongodb/date/sh3 --logpath /usr/local/mongodb/log/sh3.log --port 20003

2.配置每片的 replica set,即每3台配成一个replica set互备

20.220-mongo1:主机
mongo 192.168.20.220:20001/admin
use admin;
config = {_id: ‘sh1‘, members:[
{_id:0, host: ‘192.168.20.220:20001‘},
{_id:1, host: ‘192.168.20.221:20001‘},
{_id:2, host: ‘192.168.20.222:20001‘, arbiterOnly: true}
]}
rs.initiate(config) //初始化repl set

rs.status()   //看结果是否成功建成repl set

20.221-mongo2:主机
mongo 192.168.20.221:20002/admin
use admin;
config = {_id: ‘sh2‘, members:[
{_id:0, host: ‘192.168.20.221:20002‘},
{_id:1, host: ‘192.168.20.222:20002‘},
{_id:2, host: ‘192.168.20.220:20002‘, arbiterOnly: true}
]}
rs.initiate(config) //初始化repl set

rs.status()   //看结果是否成功建成repl set

20.222-mongo3:主机
mongo 192.168.20.222:20003/admin
use admin; 
config = {_id: ‘sh3‘, members:[
{_id:0, host: ‘192.168.20.222:20003‘},
{_id:1, host: ‘192.168.20.220:20003‘},
{_id:2, host: ‘192.168.20.221:20003‘, arbiterOnly: true}
]}
rs.initiate(config) //初始化repl set

rs.status()   //看结果是否成功建成repl set

3.执行启动 config server:

/usr/local/mongodb/bin/mongod --fork --rest --configsvr --port 19999 --dbpath /usr/local/mongodb/date/cf1/ --logpath /usr/local/mongodb/log/cf1.log
20.221-mongo2
/usr/local/mongodb/bin/mongod --fork --rest --configsvr --port 19998 --dbpath /usr/local/mongodb/date/cf2/ --logpath /usr/local/mongodb/log/cf2.log
20.222-mongo3
/usr/local/mongodb/bin/mongod --fork --rest --configsvr --port 19997 --dbpath /usr/local/mongodb/date/cf3/ --logpath /usr/local/mongodb/log/cf3.log 

4.启动  mongos server

/usr/local/mongodb/bin/mongos --configdb 192.168.20.220:19999,192.168.20.221:19998,192.168.20.222:19997 --logpath /usr/local/mongodb/log/mongos.log --logappend --fork --port 20000

5. 配置mongo 分片集群

mongo 192.168.20.220:20000/admin
mongos> db.runCommand({addshard:"sh1/192.168.20.220:20001,192.168.20.221:20001",name:"sh1"});

mongos> db.runCommand({addshard:"sh2/192.168.20.221:20002,192.168.20.222:20002",name:"sh2"});

mongos> db.runCommand({addshard:"sh3/192.168.20.222:20003,192.168.20.220:20003",name:"sh3"});

mongos> db.runCommand({listshards:1})

6. 激活数据库分片

登录mongos:

>use admin;
>db.runCommand( { enablesharding : "dbname" } );

>db.runCommand( { shardcollection : "dbname.collectionname", key :{ "keyfield" :1 }});

注意分片使用的keyfield需要是表索引。

sh.enableSharding("dbname")

时间: 2024-10-12 01:06:14

mongodb分片部署的相关文章

mongodb分片部署和管理

一.部署分片集群 在3.2版本中,官方建议对所有生产的config server和shard server都使用复制集.其中config server对复制集有如下要求: 1.必须没有仲裁节点 2.必须没有延时节点 3.必须创建索引,即没有节点配置buildIndex为false 我们这里用来测试就搭建复制集了. 新部署一个分片集群包括4步骤: 1.部署config server 2.部署mongos实例 3.部署mongod server 4.将mongod server添加到集群 5.为集群

Linux下的mongodb分片部署

前提: 分片服务器不设置从服务和均衡服务,只有主服务器;当前测试为所有服务器均在同一台物理机上. 1.测试环境:192.168.1.55. 2.测试模式:单机.3.服务:分片服务器1:192.168.1.55:10001分片服务器2:192.168.1.55:10002配置服务器: 192.168.1.55:20001路由服务器: 192.168.1.55:30001 4.目录设置:分片服务器1:/usr/mongodbtest/sd1,内含目录data,log目录,配置文件分片服务器2:/us

部署MongoDB分片群集

MongoDB分片在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求.当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 分片的优势分片为应对高吞吐量与大数据量提供了方法.使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,集群可以提高自己的存储容量和吞吐量.举例来说,当插入一条数据时,应用只需要访问存储这条数据的分片.

部署MongoDB分片群集及分片管理

MongoDB分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 分片的优势 分片为应对高吞吐量与大数据量提供了方法. 使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,集群可以提高自己的存储容量和吞吐量.举例来说,当插入一条数据时,应用只需要访问存储这条数据

在CentOS7上部署MongoDB分片群集

概述 MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作.分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据. MongoDB分片群集的组成 Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台服务器组成一个Replica Set承担,防止主机单点故障. Confi

MongoDB基础教程系列--第九篇 MongoDB 分片

1.分片介绍 分片(sharding)是将数据拆分,将其分散存到不同机器上的过程.MongoDB 支持自动分片,可以使数据库架构对应用程序不可见.对于应用程序来说,好像始终在使用一个单机的 MongoDB 服务器一样,另一方面,MongoDB 自动处理数据在分片上的分布,也更容易添加和删除分片. 请记住:复制是让多台服务器拥有同样的数据副本,每一台服务器都是其他服务器的镜像,而每一个分片都与其他分片拥有不同的数据子集. 通常,分片可以用来: 增加可用的内存 增加可用的磁盘空间 减轻单台服务器的负

Mongodb3分片部署及故障模拟验证

本文分两部分介绍mongodb3.2.1分片部署配置及故障模拟验证. 第一部分  安装配置 一.实验环境 两组副本集做分片 版本3.2.1 副本集1:192.168.115.11:27017,192.168.115.12:27017,192.168.115.11:47017(arbiter) 副本集2:192.168.115.11:37017,192.168.115.12:37017,192.168.115.12:47017(arbiter) configserver:192.168.115.1

生产mongodb 分片与集群 方案

生产mongodb 分片与集群 方案   一. mongodb分片与集群拓扑图 二.分片与集群的部署 1.Mongodb的安装 分别在以上3台服务器安装好mongodb 安装方法见安装脚本. 2.Mongod 创建单个分片的副本集 10.68.4.209 ①建立数据文件夹和日志文件夹 mdkir /data/{master,slave,arbiter} mkdir /data/log/mongodb/{master,slave,arbiter}  -p ②建立配置文件 #master.conf

使用HAProxy作为MongoDB分片集群mongos负载均衡

MongoDB分片集群的入口mongos自身没有failover机制.官方建议是将mongos和应用服务器部署在一起,多个应用服务器就要部署多个mongos实例,这样很是不方便.还可以使用LVS或者HAProxy来实现多个mongos的failover机制,但是一定要注意使用client affinity即客户端关联特性. global     chroot      /data/app_platform/haproxy/share/      log         127.0.0.1 loc