CentOS-6.5单机实现mongoDB分片

环境:1)CentOS 6.5系统      2)IP:本机3)MongoDB:MongoDB-linux-x86_64-2.6.1

实现:两个副本集shard(shard-a和shard-b),每个副本集shard配置三个实例(主,从和仲裁),三个config server实例和一个mongos路由。最终通过mongos写入的数据均匀分布在两个shard中。

1.安装好CentOS 6.5并配置好IP地址,然后配置/etc/hosts文件,添加本机IP地址和域名(自定义,如:IP       master)映射。

2.下载安装MongoDB

1)建立活动目录:#mkdir /data

1)官网下载MongoDB-linux-x86_64-2.6.1.tgz到/data目录

3)解压并进入解压目录的bin目录中:

   #tar –zxvf /data/mongodb-linux-x86_64-2.6.1.tgz

   #cd /data/mongodb-linux-x86_64-2.6.1/bin

3.准备好部署sharding环境的目录:

#mkdir /data/rs-a-1

#mkdir /data/rs-a-2

#mkdir /data/rs-a-3

#mkdir /data/rs-b-1

#mkdir /data/rs-b-2

#mkdir /data/rs-b-3

#mkdir /data/config-1

#mkdir /data/config-2

#mkdir /data/config-3

4.启动副本集

1)启动第一个副本集

#mongod --shardsvr --replSet shard-a --dbpath /data/rs-a-1 --logpath /data/rs-a-1.log --port 30000 --nojournal --fork &

#mongod --shardsvr --replSet shard-a --dbpath /data/rs-a-2 --logpath /data/rs-a-2.log --port 30001 --nojournal --fork &

#mongod --shardsvr --replSet shard-a --dbpath / data/rs-a-3 --logpath /data/rs-a-3.log --port 30002 --nojournal --fork &

2)启动第二个副本集

#mongod --shardsvr --replSet shard-b --dbpath /data/rs-b-1 --logpath /data/rs-b-1.log --port 30100 --nojournal --fork &

#mongod --shardsvr --replSet shard-b --dbpath /data/rs-b-2 --logpath /data/rs-b-2.log --port 30101 --nojournal --fork &

#mongod --shardsvr --replSet shard-b --dbpath /data/rs-b-3 --logpath /data/rs-b-3.log --port 30102 --nojournal --fork &

5.配置副本集

1)第一个副本集上:

     #mongo --port 30000

>rs.initiate()

>rs.add(“master:30001”)

>rs.add(“master:30002”,{arbiterOnly:true})

2)第二个副本集上:

#mongo –port 30100

> rs.initiate()

>rs.add(“master:30101”)

>rs.add(“master:30102”,{arbiterOnly:true})

3)最后在每个副本集上运行>rs.status()命令,验证两个副本集是否正常运行。如果一切顺利就可以准备启动配置服务器了。

6.启动配置服务器

1)启动三个配置服务器实例

#mongod --configsvr --dbpath /data/config-1 --logpath / data/config-1.log --port 27019 --nojournal --fork &

#mongod --configsvr --dbpath /data/config-2 --logpath / data/config-2.log --port 27020 --nojournal --fork &

     #mongod --configsvr --dbpath /data/config-3 --logpath / data/config-3.log --port 27021 --nojournal --fork &

2)用shell连接或者查看日志文件,确保每台配置服务器都已启动并已正常运行,并验证每个进程都在监听的端口。如果配置服务器都在运行了,就可以启动mongos了。

7.启动mongos路由

1)mongos --configdb master:27019,master:27020,master:27021 --logpath /data/mongos.log --fork --port 40000

2)用shell登录验证是否正常运行。(mongos启动时可以指定chunkSize的大小,此值为指定数据大小到达时分片)

8.配置集群

1)指定两个之前创建的副本集,用的是每个副本集中非仲裁节点的地址:

#mongos –port 40000

>sh.addShard(“shard-a/master:30000,master:30001”)

>sh.addShard(“shard-b/master:30100,master:30101”)

     如果命令执行成功,命令的响应中会包含刚添加的分片名称。

2)使用getSiblingDB()方法切换数据库来查看效果:

>db.getSiblingDB(“config”).shards.find()

9.开启一个数据库上的分片,这里以gizwits为例:

1)命令:      >sh.enableSharding(“gizwits”)

2)检查config里的数据查看所做的变更:

>db.getSiblingDB(“config”).databases.find()

3)给test集合做分片,需要定义一个分片键,这里使用组合分片键{username:1,_id:1}。

>sh.shardCollection(“gizwits.test”,{username:1,_id:1})

>sh.getSiblingDB(“config”).collections.findOne() //验证分片集合的配置

4)到分片实例上运行getIndexes()方法进行验证。

#mongo –port 30000

>use gizwits

>db.test.getIndexes()

  完成集合的分片,分片集群就准备就绪了。

10:mongos路由中插入数据测试分片集群

#mongo –port 40000

>for(i=1;i<=50000;i++){db.test.insert({_id:I,username:”user”+I,age:10+i})}

    登录到分片副本集上查看效果。

注1:如果在从机上查看数据时出现不能查看的错误,则在从机上执行命令:db.getMongo().setSlave0k()。再查询就可以了。Mongodb3.0以上版本的使用db.getMongo().setSlave0k()或rs.slaveOk()之后退出再次登录时还是会出现此错误,需要编辑文件:#vi ~/.mongorc.js添加rs.slaveOk();即可。

注2:配置sharding后需注意maxSize值得指定,若发现数据开始可以分片后来不行则可能是数据储存超出maxSize的大小,调整之后即可。maxSize值(单位是M)表示一个shard可使用的磁盘大小,超出的数据不会分片但会存储在primary sharding上。使用一下语句指定或更改其大小:

第一种:

>db.runCommand({addshard:”shardIP:port”,maxSize:20480})

第二种:

>use config

>db.shards.update({_id:”[shardname]”},{$set:{maxSize:20480}})

附:[原创]MongoDB综合实例二 链接:http://www.cnblogs.com/wsjhk/p/4469317.html

Mongodb启动命令mongod参数说明

mongod的主要参数有:

基本配置

--------------------------------------------------------------------------------

--quiet

# 安静输出

--port arg

# 指定服务端口号,默认端口27017

--bind_ip
arg

# 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP

--logpath
arg

# 指定MongoDB日志文件,注意是指定文件不是目录

--logappend

# 使用追加的方式写日志

--pidfilepath
arg

# PID File
的完整路径,如果没有设置,则没有PID文件

--keyFile
arg

# 集群的私钥的完整路径,只对于Replica
Set 架构有效

--unixSocketPrefix
arg

# UNIX域套接字替代目录,(默认为
/tmp)

--fork

# 以守护进程的方式运行MongoDB,创建服务器进程

--auth

# 启用验证

--cpu

# 定期显示CPU的CPU利用率和iowait

--dbpath
arg

# 指定数据库路径

--diaglog
arg

# diaglog选项
0=off 1=W 2=R 3=both 7=W+some reads

--directoryperdb

# 设置每个数据库将被保存在一个单独的目录

--journal

# 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里

--journalOptions
arg

# 启用日志诊断选项

--ipv6

# 启用IPv6选项

--jsonp

# 允许JSONP形式通过HTTP访问(有安全影响)

--maxConns
arg

# 最大同时连接数 默认2000

--noauth

# 不启用验证

--nohttpinterface

# 关闭http接口,默认关闭27018端口访问

--noprealloc

# 禁用数据文件预分配(往往影响性能)

--noscripting

# 禁用脚本引擎

--notablescan

# 不允许表扫描

--nounixsocket

# 禁用Unix套接字监听

--nssize
arg (=16)

# 设置信数据库.ns文件大小(MB)

--objcheck

# 在收到客户数据,检查的有效性,

--profile
arg

# 档案参数
0=off 1=slow, 2=all

--quota

# 限制每个数据库的文件数,设置默认为8

--quotaFiles
arg

# number
of files allower per db, requires --quota

--rest

# 开启简单的rest
API

--repair

# 修复所有数据库run
repair on all dbs

--repairpath
arg

# 修复库生成的文件的目录,默认为目录名称dbpath

--slowms
arg (=100)

# value of
slow for profile and console log

--smallfiles

# 使用较小的默认文件

--syncdelay
arg (=60)

# 数据写入磁盘的时间秒数(0=never,不推荐)

--sysinfo

# 打印一些诊断系统信息

--upgrade

# 如果需要升级数据库

* Replicaton 参数

--------------------------------------------------------------------------------

--fastsync

# 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步

--autoresync

# 如果从库与主库同步数据差得多,自动重新同步,

--oplogSize
arg

# 设置oplog的大小(MB)

* 主/从参数

--------------------------------------------------------------------------------

--master

# 主库模式

--slave

# 从库模式

--source
arg

# 从库 端口号

--only arg

# 指定单一的数据库复制

--slavedelay
arg

# 设置从库同步主库的延迟时间

* Replica set(副本集)选项:

--------------------------------------------------------------------------------

--replSet
arg

# 设置副本集名称

* Sharding(分片)选项

--------------------------------------------------------------------------------

--configsvr

# 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb

--shardsvr

# 声明这是一个集群的分片,默认端口27018

--noMoveParanoia

# 关闭偏执为moveChunk数据保存

[原创]MongoDB综合实例一的更多相关文章

  1. [原创]MongoDB综合实例二

    MongoDB-Sharding部署方案 一.    部署环境 五台主机: Amongoshard01:  10.212.74.43 Amongoshard02:  10.212.84.4 Among ...

  2. ReportingServies——SQLServer报表开发综合实例

    如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...

  3. Loadrunner 关联 web_custom_request综合实例

    Loadrunner 关联 web_custom_request综合实例 Loadrunner 关联web_custom_request,针对自带的订票系统的一个综合实例,相信看了本文大家对学习loa ...

  4. 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例

    本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...

  5. 一个综合实例讲解vue的基础知识点。

    本文通过一个简单的实例来讲解一下vue的基本知识点.通过这个综合实例的讲解,vue的基础知识就会掌握的差不多了. 首先看一下项目的效果:

  6. WebGL多模型光照综合实例

      原文地址:WebGL多模型光照综合实例   WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别 ...

  7. 面向对象:静态属性,静态方法,组合,继承,衍生,继承之mro线性顺序列表,面向对象综合实例

    1.静态属性(附有装饰器) class Room: def __init__(self,name,owner,width,length,height): self.name=name self.own ...

  8. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...

  9. html5-表单的综合实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

随机推荐

  1. EM最大期望算法-走读

    打算抽时间走读一些算法,尽量通俗的记录下面,希望帮助需要的同学.   overview: 基本思想:      通过初始化参数P1,P2,推断出隐变量Z的概率分布(E步):      通过隐变量Z的概 ...

  2. ServerSuperIO 3.5版本的体系结构,以及未来规划的几点思考

    一.特点 1.轻型高性能通信框架,适用于多种应用场,轮询模式.自控模式.并发模式和单例模式. 2.不仅是通讯框架,是设备驱动.IO通道.控制模式场景的协调机制. 3.支持协议驱动器,可以按规范写标准协 ...

  3. Map和Set

    JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对. 但是JavaScript的对象有个小问题,就是键必须是字符串.但实际上Number ...

  4. Redux学习笔记:Redux简易开发步骤

    该文章不介绍Redux基础,也不解释各种乱乱的概念,网上一搜一大堆.只讲使用Redux开发一个功能的步骤,希望可以类我的小白们,拜托它众多概念的毒害,大牛请绕道! 本文实例源代码参考:React-Re ...

  5. c++:自己动手实现线程安全的c++单例类

    前段时间使用c++做项目开发,需要根据根据配置文件路径加载全局配置文件,并对外提供唯一访问点.面对这样一个需求,自然的就想到了使用单例模式来创建一个单例配置对象,供外部调用.一开始想使用boost中自 ...

  6. 基于appium的移动端自动化测试,密码键盘无法识别问题

    基于appium做自动化测试,APP密码键盘无法识别问题解决思路 这个问题的解决思路如下: 1.针对iOS无序键盘:首先,iOS的密码键盘是可识别的,但是,密码键盘一般是无序的.针对这个情况,思路是用 ...

  7. 修改nagios密码和遇到的问题

    htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 密码 密码 service httpd restart 由于本屌丢掉一个s使/ ...

  8. 记一些让footer始终位于网页底部的方法

    上次说把网页的头部和尾部分离出来作为一个单独的文件,所有网页共用,这样比较方便修改,然而,,,我发现某些方法里尾部会紧跟在头部后面,把内容挤在下面..而且有的页面内容少的话不能把尾部挤到最下面,所以, ...

  9. stl_alloc.h分配器

    五.分配器:5.1.头文件: 5.1.1.include<stl_alloc.h> //内存的分配. 5.1.2.include<stl_construct.h> //对象的构 ...

  10. 解析PHP中常见的mongodb查询操作

    详细出处参考:http://www.jb51.net/article/38839.htm<?php// 欄位字串為$querys = array("name"=>&qu ...