application set与分片结合

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
复制代码
replation set配合分片


打开3台服务器,B服务器(202)放configserv, C,D服务器(203.204)放置复制集

192.168.1.203和192.168.1.204分别运行之前的sh start.sh(要把ip和rs的名字改了),那么就在这2个ip上搭建了一个replation set.
192.168.1.203>192.168.1.204> sh start.sh reset
192.168.1.203>192.168.1.204> sh start.sh install    //复制集创建完毕(2个片创建完毕)
192.168.1.203>192.168.1.204> sh start.sh repl

//接下来202 ip创建mongos和configsrv,
192.168.1.202> sh start.sh reset  //清理初始化
192.168.1.202> mkdir -p /home/m20 /home/mlog 

//初始化configsrv(一般也是分在不同的服务器上,防止down掉)
192.168.1.202> /usr/local/mongodb/bin/mongod --dbpath /home/m20/ --logpath /home/mlog/m20.log --port 27020 --fork --configsvr     //27020端口
//初始化mongos
192.168.1.202> /usr/local/mongodb/bin/mongos --logpath /data/mlog/r30.log --port 30000 --configdb 192.168.202:27020   --fork    //端口是30000,configser是192.168.202:27020,mongos和configsvr连在了一起

ps aux | grep momgo

//连接30000(最好用ip连接,不要只输入端口)
192.168.1.202> ./bin/mongo 192.168.1.202:30000

//添加repl set为片,现在3者都连接到一起了,
192.168.1.202> sh.addShard('rs3/192.168.1.203:27017')   //17端口的复制集加进去
192.168.1.202> sh.addShard('rs4/192.168.1.204:27018')   //18端口的复制集加进去

192.168.1.202> sh.status();  //看到建立好了


192.168.1.202> sh.enableSharding('shop'); //shop库是要分片的
192.168.1.202> sh.shardCollection('shop.user',{id:1});  //shop库的user表,用id来做片键,分到哪个片上,

//手动分片,id遇到1000的整数倍就拆一下
192.168.1.202> sh.splitAt('shop.user',{id:1000}) //1000拆一下
192.168.1.202> sh.splitAt('shop.user',{id:2000}) //2000拆一下
192.168.1.202> sh.splitAt('shop.user',{id:3000}) //3000拆一下,多的话可以写一个for循环。

192.168.1.202> sh.status()

192.168.1.202> use shop
192.168.1.202> for(var i=1;i<=4000;i++) {//一共4000条
    db.user.insert({userid:i,name:"kitty"})
} 


//现在03,04是片,并且还在复制集有2个拷贝。1---2000在203,2000----4000在204上

192.168.1.203> ./bin/mongo
192.168.1.203> use shop
192.168.1.203> show tables   //自动创建了库和表
192.168.1.203> db.user.find().count()  //2001条
192.168.1.203> db.user.find().skip(1980)  

192.168.1.203> ./bin/mongo --port 27018    //片上的secondary次节点
192.168.1.203> use shop
192.168.1.203> rs.slaveok()    //不然不能看
192.168.1.203> db.user.find().count()  //2001条
192.168.1.203> db.user.find().skip(1980)    //完全一样了





192.168.1.204> ./bin/mongo
192.168.1.204> use shop
192.168.1.204> show tables   //自动创建了库和表
192.168.1.204> db.user.find().count()  //1999条
192.168.1.204> db.user.find().skip(1980) 

192.168.1.204> ./bin/mongo --port 27018    //片上的secondary次节点
192.168.1.204> use shop
192.168.1.204> rs.slaveok()    //不然不能看
192.168.1.204> db.user.find().count()  //2001条
192.168.1.204> db.user.find().skip(1980)    //完全一样了



start.sh文件: 
复制代码
复制代码
#!/bin/bash
IP='192.168.1.202'
NA='rsb'

if [ "$1" = "reset" ]
then
        pkill -9 mongo
        rm -rf /home/m*
        exit
fi


if [ "$1" = "install" ]
then

    mkdir -p /home/m0 /home/m1 /home/m2 /home/mlog

    /usr/local/mongodb/bin/mongod --dbpath /home/m0 --logpath /home/mlog/m17.log --logappend --port 27017 --fork 
--replSet ${NA}
    /usr/local/mongodb/bin/mongod --dbpath /home/m1 --logpath /home/mlog/m18.log --logappend --port 27018 --fork 
--replSet ${NA}
    /usr/local/mongodb/bin/mongod --dbpath /home/m2 --logpath /home/mlog/m19.log --logappend --port 27019 --fork 
--replSet ${NA}
   
    exit
fi


if [ "$1" = "repl" ]
then
/usr/local/mongodb/bin/mongo <<EOF

use admin
rsconf = {
_id:'${NA}',
members:[
{_id:0,host:'${IP}:27017'},
{_id:1,host:'${IP}:27018'},
{_id:2,host:'${IP}:27019'},
]
}
rs.initiate(rsconf)
EOF
fi
复制代码

 

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8177225.html,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
Kubernetes 容器 Perl
在K8S中,Replica Set和Replication Controller之间有什么区别?
在K8S中,Replica Set和Replication Controller之间有什么区别?
c:outrequest session application同时输出
c:outrequest session application同时输出
29 0
|
缓存 NoSQL API
分布式服务器框架之Servers.Common中使用CSRedis测试操作Redis中的string、hash_table、list、set、zset
在Servers.Common类库总创建了一个TestRedis.cs文件,我是在Servers.GameServer中去初始化的。主要是测试了Redis中常用的数据类型和常用的API,有一些不常用的可能没有写。需要详细了解API的话可以安装上CSRedis之后F12追进去查看,上面有详细的API说明。
分布式服务器框架之Servers.Common中使用CSRedis测试操作Redis中的string、hash_table、list、set、zset
|
SQL C# 数据库
C# 读取Sql Server中的NULL返回什么?
C# 读取Sql Server中的NULL返回什么?
139 0
C# 读取Sql Server中的NULL返回什么?
|
存储 NoSQL Linux
redis异常 Commands that may modify the data set are disabled, because this instance is
MISCONF Redis配置为保存RDB快照,但目前无法在磁盘上持久化。可能修改数据集的命令被禁用,因为该实例被配置为在RDB快照失败时报告错误(stop-write -on-bgsave-error选项)。请检查Redis的日志RDB错误的详细信息.
redis异常 Commands that may modify the data set are disabled, because this instance is
jMeter CSV Data set config 的 sharing mode 和 Thread group loop 配合使用
jMeter CSV Data set config 的 sharing mode 和 Thread group loop 配合使用
151 0
jMeter CSV Data set config 的 sharing mode 和 Thread group loop 配合使用
|
存储 测试技术 Apache
jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
185 0
jMeter 里 CSV Data Set Config Sharing Mode 的含义详解