[原创]MongoDB综合实例一
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 |
# 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP |
--logpath |
# 指定MongoDB日志文件,注意是指定文件不是目录 |
--logappend |
# 使用追加的方式写日志 |
--pidfilepath |
# PID File |
--keyFile |
# 集群的私钥的完整路径,只对于Replica |
--unixSocketPrefix |
# UNIX域套接字替代目录,(默认为 |
--fork |
# 以守护进程的方式运行MongoDB,创建服务器进程 |
--auth |
# 启用验证 |
--cpu |
# 定期显示CPU的CPU利用率和iowait |
--dbpath |
# 指定数据库路径 |
--diaglog |
# diaglog选项 |
--directoryperdb |
# 设置每个数据库将被保存在一个单独的目录 |
--journal |
# 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里 |
--journalOptions |
# 启用日志诊断选项 |
--ipv6 |
# 启用IPv6选项 |
--jsonp |
# 允许JSONP形式通过HTTP访问(有安全影响) |
--maxConns |
# 最大同时连接数 默认2000 |
--noauth |
# 不启用验证 |
--nohttpinterface |
# 关闭http接口,默认关闭27018端口访问 |
--noprealloc |
# 禁用数据文件预分配(往往影响性能) |
--noscripting |
# 禁用脚本引擎 |
--notablescan |
# 不允许表扫描 |
--nounixsocket |
# 禁用Unix套接字监听 |
--nssize |
# 设置信数据库.ns文件大小(MB) |
--objcheck |
# 在收到客户数据,检查的有效性, |
--profile |
# 档案参数 |
--quota |
# 限制每个数据库的文件数,设置默认为8 |
--quotaFiles |
# number |
--rest |
# 开启简单的rest |
--repair |
# 修复所有数据库run |
--repairpath |
# 修复库生成的文件的目录,默认为目录名称dbpath |
--slowms |
# value of |
--smallfiles |
# 使用较小的默认文件 |
--syncdelay |
# 数据写入磁盘的时间秒数(0=never,不推荐) |
--sysinfo |
# 打印一些诊断系统信息 |
--upgrade |
# 如果需要升级数据库 |
* Replicaton 参数
--------------------------------------------------------------------------------
--fastsync |
# 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步 |
--autoresync |
# 如果从库与主库同步数据差得多,自动重新同步, |
--oplogSize |
# 设置oplog的大小(MB) |
* 主/从参数
--------------------------------------------------------------------------------
--master |
# 主库模式 |
--slave |
# 从库模式 |
--source |
# 从库 端口号 |
--only arg |
# 指定单一的数据库复制 |
--slavedelay |
# 设置从库同步主库的延迟时间 |
* Replica set(副本集)选项:
--------------------------------------------------------------------------------
--replSet |
# 设置副本集名称 |
* Sharding(分片)选项
--------------------------------------------------------------------------------
--configsvr |
# 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb |
--shardsvr |
# 声明这是一个集群的分片,默认端口27018 |
--noMoveParanoia |
# 关闭偏执为moveChunk数据保存 |
[原创]MongoDB综合实例一的更多相关文章
- [原创]MongoDB综合实例二
MongoDB-Sharding部署方案 一. 部署环境 五台主机: Amongoshard01: 10.212.74.43 Amongoshard02: 10.212.84.4 Among ...
- ReportingServies——SQLServer报表开发综合实例
如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...
- Loadrunner 关联 web_custom_request综合实例
Loadrunner 关联 web_custom_request综合实例 Loadrunner 关联web_custom_request,针对自带的订票系统的一个综合实例,相信看了本文大家对学习loa ...
- 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例
本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...
- 一个综合实例讲解vue的基础知识点。
本文通过一个简单的实例来讲解一下vue的基本知识点.通过这个综合实例的讲解,vue的基础知识就会掌握的差不多了. 首先看一下项目的效果:
- WebGL多模型光照综合实例
原文地址:WebGL多模型光照综合实例 WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别 ...
- 面向对象:静态属性,静态方法,组合,继承,衍生,继承之mro线性顺序列表,面向对象综合实例
1.静态属性(附有装饰器) class Room: def __init__(self,name,owner,width,length,height): self.name=name self.own ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- html5-表单的综合实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
随机推荐
- centos7安装nagios步骤
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- linux sort命令详解(转)
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...
- RabbitMQ配置与安装
最近这几天身体不舒服,脖子痛的厉害,可能是上月太累了好久没写博客了,之前也说了公司的.Net项目部做了,改用Scale来做,原本想着会用java来搞,所以上个月在拼命的学java,这几天一直脖子不舒服 ...
- 《Algorithms Unlocked》读书笔记2——二分查找和排序算法
<Algorithms Unlocked>是 <算法导论>的合著者之一 Thomas H. Cormen 写的一本算法基础,算是啃CLRS前的开胃菜和辅助教材.如果CLRS的厚 ...
- Ajax 与 Comet
Ajax技术的核心是XMLHttpRequest对象(简称XHR). XMLHttpRequest对象 在浏览器中创建XHR对象要像下面这样,使用XMLHttpRequest构造函数. var xhr ...
- CF IndiaHacks 2016 F Paper task 后缀数组
题目链接:http://codeforces.com/problemset/problem/653/F 大意是给出一个只包含'('和')'的括号串,求有多少不同的子串是合法的括号串 解法:对于每一个后 ...
- 保证Android后台不被杀死的几种方法
由于各种原因,在开发Android应用时会提出保证自己有一个后台一直运行的需求,如何保证后台始终运行,不被系统因为内存低杀死,不被任务管理器杀死,不被软件管家等软件杀死等等还是一个比较困难的问题.网上 ...
- 使用虚拟机CentOS7部署CEPH集群
第1章 CEPH部署 1.1 简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...
- 软件开发的一些"心法"
从事软件开发也有好几年了,和一开始那个懵懵懂懂的小菜鸟相比,自己也感觉到了一些变化. 也许是熟能生巧, 趟过很多坑,但核心的绝不是这些细节的东西. 打个比方,如果说对某种语言的特性和技巧的掌握属于身法 ...
- 将 Eclipse 的配色改为黑底白字
1.先到 eclipsecolorthemes下载一个主题. 2.Eclipse File-->Import 3.Import视窗内选择 General-->Preferences 4.选 ...