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. kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器

    前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...

  2. PHP常用的三种设计模式

    本文为大家介绍常用的三种php设计模式:单例模式.工厂模式.观察者模式,有需要的朋友可以参考下. 一.首先来看,单例模式 所谓单例模式,就是确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实 ...

  3. MapReduce处理流程

    MapReduce是Hadoop2.x的一个计算框架,利用分治的思想,将一个计算量很大的作业分给很多个任务,每个任务完成其中的一小部分,然后再将结果合并到一起.将任务分开处理的过程为map阶段,将每个 ...

  4. Jmeter自动化测试工具的简单使用--HTTP测试

    Jmeter自动化测试工具的简单应用 1.安装Jmeter 链接: https://pan.baidu.com/s/1mhSzU68 密码: 446z   到这里下载 1.1 jmeter 将下载好的 ...

  5. iOS 让View始终在屏幕最上层

    UIView层次管理 放到最上层 放到最下层 将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法. 将一个UIView层推送到背后只需要调用其父视图的  ...

  6. Android之AIDL知识总结

    1.AIDL介绍 AIDL是一个缩写,全称是Android Interface Definition Language,翻译为Android接口定义语言.主要用于线程之间的通信,本文主要以不同应用之间 ...

  7. hdu1512 Monkey King

    Problem Description Once in a forest, there lived N aggressive monkeys. At the beginning, they each ...

  8. OA办公系统功能真的越全越好?

    4.原文:http://www.jiusi.net/detail/472__776__4000__1.html 关键词:oa系统,OA办公系统 OA办公系统功能真的越全越好? 很多企业在选择OA办公系 ...

  9. Linux中安装redis

    第一部分:安装redis 1.希望将安装包下载到此目录 /home/local/src 安装过程指令 $ mkdir /home/local/redis   $ cd /home/local/src  ...

  10. Telegram学习解析系列(二):这我怎么给后台传输数据?

    写在前面: 在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetworking与后台数据打交道,可有没有想过,哪天AFNetwor ...