Mongodb集群与分片 2
- Shard:使用Replica Sets,来确保数据的可靠性。通过这个方案,可以在每个节点有数据的备份、实现自动控制容错转移和自动恢复
- Config:使用3个配置服务器,确保元数据完整性
- Route:配合LVS,实现负载均衡,提高接入性能。
1、配置集群目录
$ mkdir -p /home/scotte.ye/data/
$ mkdir -p /home/scotte.ye/data/
$ mkdir -p /home/scotte.ye/data/ $ mkdir -p /home/scotte.ye/data/
$ mkdir -p /home/scotte.ye/data/
$ mkdir -p /home/scotte.ye/data/ $ mkdir -p /home/scotte.ye/data/config1
$ mkdir -p /home/scotte.ye/data/config2
$ mkdir -p /home/scotte.ye/data/config3
日志目录:
$ mkdir -p /home/scotte.ye/data/logs
//
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set1 //
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set1 //
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set1
配置集群
$ ./mongo -port
MongoDB shell version: 2.0.
connecting to: 127.0.0.1:/test
>#配置集合1
>#构建参数
>cfg={_id:'set1',
members:[{_id:,host:'192.168.35.106:10001'},
{_id:,host:'192.168.35.106:10002'},
{_id:,host:'192.168.35.106:10003'}]
};
{
"_id":"set1",
"members":[
{
"_id":,
"host":"192.168.35.106:10001"
},
{
"_id":,
"host":"192.168.35.106:10002"
},
{
"_id":,
"host":"192.168.35.106:10003"
}
]
}
>#让参数生效
>rs.initiate(cfg);
{
"info":"Config now saved locally. Should come online in about aminute.",
"OK":
}
>#查看运行状态
>rs.status();
{
"set" : "set1",
"date" : ISODate("2012-02-29T12:02:46Z"),
"myState" : ,
"syncingTo" : "192.168.35.106:10003",
"members" : [
{
"_id" : ,
"name" : "192.168.35.106:10001",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"self" : true
},
{
"_id" : ,
"name" : "192.168.35.106:10002",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"lastHeartbeat" : ISODate("2012-02-29T12:02:45Z"),
"pingMs" :
},
{
"_id" : ,
"name" : "192.168.35.106:10003",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"lastHeartbeat" : ISODate("2012-02-29T12:02:46Z"),
"pingMs" :
}
],
"ok" :
}
配置第二组sets
//
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set2 //
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set2 //
$ ./mongod --shardsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data// -port= --nohttpinterface --replSet set2
配置集群
$ ./mongo -port
MongoDB shell version: 2.0.
connecting to: 127.0.0.1:/test
>#配置集合1
>#构建参数
>cfg={_id:'set2',
members:[{_id:,host:'192.168.35.106:10011'},
{_id:,host:'192.168.35.106:10012'},
{_id:,host:'192.168.35.106:10013'}]
};
{
"_id":"set2",
"members":[
{
"_id":,
"host":"192.168.35.106:10011"
},
{
"_id":,
"host":"192.168.35.106:10012"
},
{
"_id":,
"host":"192.168.35.106:10013"
}
]
}
>#让参数生效
>rs.initiate(cfg);
{
"info":"Config now saved locally. Should come online in about aminute.",
"OK":
}
>#查看运行状态
>rs.status();
{
"set" : "set2",
"date" : ISODate("2012-02-29T12:12:46Z"),
"myState" : ,
"syncingTo" : "192.168.35.106:10011",
"members" : [
{
"_id" : ,
"name" : "192.168.35.106:10011",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"self" : true
},
{
"_id" : ,
"name" : "192.168.35.106:10012",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"lastHeartbeat" : ISODate("2012-02-29T12:02:45Z"),
"pingMs" :
},
{
"_id" : ,
"name" : "192.168.35.106:10013",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : {
"t" : ,
"i" :
},
"optimeDate" : ISODate("2012-02-28T13:22:19Z"),
"lastHeartbeat" : ISODate("2012-02-29T12:02:46Z"),
"pingMs" :
}
],
"ok" :
}
启用config servier
$ ./mongod --configsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data/config1/ -port= --nohttpinterface
$ ./mongod --configsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data/config2/ -port= --nohttpinterface
$ ./mongod --configsvr --fork -logpath=/home/data/logs/null -dbpath=/home/data/config3/ -port= --nohttpinterface
启用Route server
$ ./mongos -configdb="192.168.35.106:20000,192.168.35.106:20001,192.168.35.106:20002" --fork -logpath=/home/data/logs/null
>#查看是否正常运行
>ps aux|grep mongos|grep -v grep
root 0.0 0.1 ? Sl Feb16 : ./mongos -configdb=192.168.35.106:,192.168.35.106:,192.168.35.106: --fork -logpath=/home/data/logs/null
开始配置Sharding
$ ./mongo -port
MongoDB shell version: 2.0.
connecting to: 127.0.0.1:/test
>#进入管理数据库
>use admin
switched to db admin
>#添加Sharding
> db.runcommand({addshard:'set1/192.168.35.106:10001,192.168.35.106:10002,192.168.35.106:10003'})
{"shardAdded":"set1","ok":}
> db.runCommand({addshard:'set2/192.168.35.106:10011,192.168.35.106:10012,192.168.35.106:10013'})
{"shardAdded":"set2","ok":}
>#让test数据库支持Sharding
>db.runCommand({enablesharding:'test'})
{"ok":}
>#让数据库中的一个集合生效,且根据ID来进行分片
>db.runCommand({shardcollection:'test.user',key:{_id:}})
{"collectionshrded":"test.user","ok":} 注:另外可以通过下面两个命令查看sharding情况:
>db.runCommand({listshards:}
>printShardingStatus();
Mongodb集群与分片 2的更多相关文章
- MongoDB集群搭建-分片
MongoDB集群搭建-分片 一.场景: 1,机器的磁盘不够用了.使用分片解决磁盘空间的问题. 2,单个mongod已经不能满足写数据的性能要求.通过分片让写压力分散到各个分片上面,使用分片服务器自身 ...
- Mongodb集群与分片 1
分片集群 Mongodb中数据分片叫做chunk,它是一个Collection中的一个连续的数据记录,但是它有一个大小限制,不可以超过200M,如果超出产生新的分片. 下面是一个简单的分片集群 ...
- MongoDB集群之分片
原文:点击打开链接 MongoDB分片 分片(sharding)是将数据拆分,将其分散在不同的机器上的过程.MongoDB支持自动分片 片键(shard key)设置分片时,需要从集合里面选一个键,用 ...
- mongodb集群配置分片集群
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...
- mongodb 集群部署--分片服务器搭建
部署分片服务器 1.分片 为了突破单点数据库服务器的I/O能力限制,对数据库存储进行水平扩展,严格地说,每一个服务器或者实例或者复制集就是一个分片. 2.优势 提供类似现行增·长架构 提高数据可用性 ...
- ubuntu docker 下mongodb集群和分片
首先我们计划启动了三个mongo服务:master,salve,arbiter 1.准备工作 新建文件夹如图(每个文件夹下面有db和configdb文件夹): 生成认证文件并修改权限 openssl ...
- MongoDB集群之分片技术应用 —— 学习笔记
课程链接:https://www.imooc.com/learn/501 一.什么是分片? 分片:将数据进行2拆分,将数据水平的分散到不同的服务器上. 二.为什么要分片? 架构上:读写均衡.去中心化 ...
- 搭建高可用mongodb集群(四)—— 分片(经典)
转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...
- [转]搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
随机推荐
- JDK8简化if-else
简化if-else 1234567891011 User user = ...if (user != null) { String userName = user.getUserName(); if ...
- Mysql的select in会自动过滤重复的数据
默认使用 SELECT 语句: 当加上in范围后,结果如下图: in范围内的数据,如果有重复的,只会选择第一个数据. 所以如果不是直接使用SQL语句来查询,而是在代码中来查询时,记得使用 distin ...
- [Python学习笔记-004] 可变参数*args和**kwargs
在Python中,可变参数的传递使用*args和**kwargs来实现,其中: *args表示任意个位置参数(positional argument),被表示为一个只读的数组(tuple): **kw ...
- Android so 文件进阶<二> 从dlsym()源码看android 动态链接过程
0x00 前言 这篇文章其实是我之前学习elf文件关于符号表的学习笔记,网上也有很多关于符号表的文章,怎么说呢,感觉像是在翻译elf文件格式的文档一样,千篇一律,因此把自己的学习笔记分享出来.dls ...
- Docker轻量级web图形页面管理 - Portainer部署记录
Docker图形页面管理工具基本常用的有三种: Docker UI,Shipyard,Portainer,之前分别介绍了Docker UI和Shipyard部署,下面简单介绍下Portainer部署. ...
- mysql 获取自增主键
MyBatis 3.2.6插入时候获取自增主键方法有二 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="P ...
- 拓展KMP算法详解
拓展KMP解决的问题是给两个串S和T,长度分别是n和m,求S的每一个后缀子串与T的最长公共前缀分别是多少,记作extend数组,也就是说extend[i]表示S[i,n-1](i从0开始)和T的最长公 ...
- 分布式理论(一) —— CAP 定理
目录: 什么是 CAP 定理 为什么只能 3 选 2 能不能解决 3 选 2 的问题 引用 1. 什么是 CAP 定理 2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 ...
- jQuery加载部分视图(Partial Views)
本篇是演示使用jQuery加载部分视图(Partial View).如果你不想使用Razor的语法呈现部分视图,那此篇的方法是最理想的了.它可以Render至指定的tag上. 创建两个部分视图,一个为 ...
- SVN问题之——org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir(网摘文)
一.问题描述 今天在 Eclipse 中用 SVN 插件提交代码时遇到 org.apache.subversion.javahl.ClientException: Attempted to lock ...