mongodb分片部署
Mongodb 分片部署

配置mongodb集群,比如 在3个server上配置 3 shard的Mongodb集群:
架构:
1.每片数据需要3个mongod server,2个为主从数据节点;1个为仲裁节点(arbiter),不存数据。 一共三片,可以做成:
20.220-mongo1: (sh1主),(sh2从),(sh3仲裁)
20.221-mongo2: (sh2主),(sh3从),(sh1仲裁)
20.222-mongo3: (sh3主),(sh1从),(sh2仲裁)
2. 需要3个mongod config server,登录3台机器执行如下
20.220-mongo1:
echo 'export PATH=$PATH:/usr/local/mongodb/bin' >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6..tgz
mv mongodb-linux-x86_64-2.6. /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:
echo 'export PATH=$PATH:/usr/local/mongodb/bin' >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6..tgz
mv mongodb-linux-x86_64-2.6. /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:
echo 'export PATH=$PATH:/usr/local/mongodb/bin' >> /etc/profile
tar zxvf mongodb-linux-x86_64-2.6..tgz
mv mongodb-linux-x86_64-2.6. /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:
1.启动mongod datanode service
/usr/local/mongodb/bin/mongod --fork --rest --replSet sh1 --shardsvr --oplogSize --dbpath /usr/local/mongodb/date/sh1 --logpath /usr/local/mongodb/log/sh1.log --port
/usr/local/mongodb/bin/mongod --fork --rest --replSet sh2 --shardsvr --oplogSize --dbpath /usr/local/mongodb/date/sh2 --logpath /usr/local/mongodb/log/sh2.log --port
/usr/local/mongodb/bin/mongod --fork --rest --replSet sh3 --shardsvr --oplogSize --dbpath /usr/local/mongodb/date/sh3 --logpath /usr/local/mongodb/log/sh3.log --port
2.配置每片的 replica set,即每3台配成一个replica set互备
20.220-mongo1:主机
mongo 192.168.20.220:/admin
use admin;
config = {_id: 'sh1', members:[
{_id:, host: '192.168.20.220:20001'},
{_id:, host: '192.168.20.221:20001'},
{_id:, 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:/admin
use admin;
config = {_id: 'sh2', members:[
{_id:, host: '192.168.20.221:20002'},
{_id:, host: '192.168.20.222:20002'},
{_id:, 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:/admin
use admin;
config = {_id: 'sh3', members:[
{_id:, host: '192.168.20.222:20003'},
{_id:, host: '192.168.20.220:20003'},
{_id:, 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 --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 --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 --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:,192.168.20.221:,192.168.20.222: --logpath /usr/local/mongodb/log/mongos.log --logappend --fork --port

5. 配置mongo 分片集群
mongo 192.168.20.220:/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:})

6. 激活数据库分片
登录mongos:
>use admin;
>db.runCommand( { enablesharding : "dbname" } );

>db.runCommand( { shardcollection : "dbname.collectionname", key :{ "keyfield" :1 }});
注意分片使用的keyfield需要是表索引。
sh.enableSharding("dbname")

mongodb分片部署的更多相关文章
- Linux下的mongodb分片部署
前提: 分片服务器不设置从服务和均衡服务,只有主服务器;当前测试为所有服务器均在同一台物理机上. 1.测试环境:192.168.1.55. 2.测试模式:单机.3.服务:分片服务器1:192.168. ...
- mongodb集群+分片部署(二)
机器:10.165.38.68 10.165.38.72 部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu. ...
- MongoDB分片群集的部署(用心描述,详细易懂)!!
概念: MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行存储 优势: 1.减少了每个分片需啊哟处理的请求数,群集可以提高自己的存储容量和吞吐量 2.减少了每个分片存储 ...
- MongoDB分片 在部署和维护管理 中常见事项的总结
分片(sharding)是MongoDB将大型集合分割到不同服务器(或者说集群)上所采用的方法,主要为应对高吞吐量与大数据量的应用场景提供了方法. 和既有的分库分表.分区方案相比,MongoDB的最大 ...
- 009.MongoDB分片群集部署
一 前期准备 1.1 组件说明 MongoDB分片群集包含以下组件: shard:每个分片是分片数据的子集.从MongoDB 3.6开始,必须将分片部署为副本集. mongos:mongos充当查询路 ...
- CentOS7+Docker+MangoDB下部署简单的MongoDB分片集群
简单的在Docker上快速部署MongoDB分片集群 前言 文中使用的环境如下 OS:CentOS Linux release 7.5.1804 (Core) Docker:Docker versio ...
- MongoDB DBA 实践8-----Linux系统Mongodb分片集群部署
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署 一.先决条件 mongodb安装成功,明确路径, MongoDB的几个路径: /var/lib/mongodb /var/log/ ...
- MongoDB分片集群部署方案
前言 副本集部署是对数据的冗余和增加读请求的处理能力,却不能提高写请求的处理能力:关键问题是随着数据增加,单机硬件配置会成为性能的瓶颈.而分片集群可以很好的解决这一问题,通过水平扩展来提升性能.分片部 ...
- MongoDB 分片的原理、搭建、应用
一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...
随机推荐
- 使用awk进行日志信息的分组统计
起因 这是今天我线上出了一个bug,需要查看日志并统计一个我需要的信息出现的频率,可以叫做分组统计. 日志文件部分内容 00:09:07.655 [showcase_backend][topsdk] ...
- 推荐几款.NET客户端开源报表图
如果你正在开发客户端报表图相关的应用,除了.NET自带的控件,你还可以考虑使用以下几个控件库. [OxyPlot] OxyPlot是一个支持.NET的跨平台绘图库.你可以在很多平台上使用它,如WPF, ...
- 常用html标签的只读写法
<a href="baidu.com" onclick="event.returnValue=false;">百度</a> a链接的只读 ...
- thinkphp3.2自定义常量
在项目文件夹 (如:Home) 中的Common文件夹下新建function.php //thinkphp3.2.2版本加入如下语句: define('XXX', XXX); //第一个参数是常量名, ...
- 很好的复习资料: SQL语句到底怎么写 ?
本文用到的数据库如下: CREATE DATABASE exam; /*创建部门表*/ CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR ...
- Thrift总结(二)创建RPC服务
前面介绍了thrift 基础的东西,怎么写thrift 语法规范编写脚本,如何生成相关的语言的接口.不清楚的可以看这个<Thrift总结(一)介绍>.做好之前的准备工作以后,下面就开始如何 ...
- angular4.0 父子组建之间的相互通信
父组建---->子组建 传递信息 首先先通过angular脚手架生成两个基本组件,有一个好处是 会自动关联到跟模版,节约时间,而且还是偷懒 ng generate component compo ...
- C#工作笔记
没想到一个Java后端开发还要负责C#桌面程序,我感觉有点方.不过方归方,活还是要干的.简单记录下学到的一些知识点. 1.引用API函数 namespace Demo { class MyUtil { ...
- Spring Data JPA 复杂/多条件组合查询
1: 编写DAO类或接口 dao类/接口 需继承 public interface JpaSpecificationExecutor<T> 接口: 如果需要分页,还可继承 public ...
- Gulp安装流程、使用方法及cmd常用命令导览
Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...