MongoDB(AutoSharding+Replication sets 稳定性测试 )_iteye_4537的博客-CSDN博客


本站和网页 https://blog.csdn.net/iteye_4537/article/details/82098649 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

MongoDB(AutoSharding+Replication sets 稳定性测试 )_iteye_4537的博客-CSDN博客
MongoDB(AutoSharding+Replication sets 稳定性测试 )
iteye_4537
于 2011-07-27 11:24:00 发布
87
收藏
文章标签:
数据库
shell
单Replication sets设计:
如图所示,10.9.3.228只启动Mongos和config两个服务
^_^[root@:/usr/local/mongodb/bin]#cat runServerConfig.sh ./mongod --configsvr --dbpath=../data/config --logpath=../data/config.log --fork ^_^[root@:/usr/local/mongodb/bin]#cat runServerMongos.sh ./mongos --configdb 10.7.3.228:27019 --logpath=../data/mongos.log --logappend --fork
注意:Mongos里面的ip和端口是config服务的ip和端口
先进性配置AutoSharding
163的shardv已经启动了,只要启动下165服务器的autoSharding服务
[root@localhost bin]# cat runServerShard.sh ./mongod --shardsvr -dbpath=../data/mongodb --logpath=../data/shardsvr_logs.txt --fork
配置163和164的Replication
[root@localhost bin]# ./mongo 10.10.21.163:27018 MongoDB shell version: 1.8.2 connecting to: 10.10.21.163:27018/test > cfg={_id:"set163164",members:[ ... {_id:0,host:"10.10.21.163:27018"}, ... {_id:1,host:"10.10.21.164:27017"} ... ]} { "_id" : "set163164", "members" : [ { "_id" : 0, "host" : "10.10.21.163:27018" }, { "_id" : 1, "host" : "10.10.21.164:27017" } ] } > rs.initiate(cfg) { "info" : "Config now saved locally. Should come online in about a minute.", "ok" : 1 } > rs.conf() { "_id" : "set163164", "version" : 1, "members" : [ { "_id" : 0, "host" : "10.10.21.163:27018" }, { "_id" : 1, "host" : "10.10.21.164:27017" } ] } set163164:PRIMARY> set163164:PRIMARY> set163164:PRIMARY> show dbs admin (empty) local 14.1962890625GB set163164:PRIMARY> use local switched to db local set163164:PRIMARY> show collections oplog.rs system.replset set163164:PRIMARY> db.system.replset.find() { "_id" : "set163164", "version" : 1, "members" : [ { "_id" : 0, "host" : "10.10.21.163:27018" }, { "_id" : 1, "host" : "10.10.21.164:27017" } ] } set163164:PRIMARY> rs.isMaster() { "setName" : "set163164", "ismaster" : true, "secondary" : false, "hosts" : [ "10.10.21.163:27018", "10.10.21.164:27017" ], "maxBsonObjectSize" : 16777216, "ok" : 1 }
至此Replication sets配置成功!
再在228服务器上进行相应Sharding配置
use admin
> db.runCommand({addshard:"set163164/10.10.21.163:27018,10.10.21.165:27018"}); { "shardAdded" : "set163164", "ok" : 1 } > db.runCommand({enableSharding:"test"}) { "ok" : 1 }> db.runCommand({shardcollection:"test.users",key:{_id:1}}) { "collectionsharded" : "test.users", "ok" : 1 }
然后分别在163和164服务器上启动rep服务,163要单独启动shard服务
163:
[root@localhost bin]# cat runServerShard.sh ./mongod --shardsvr --dbpath=../data/mongodb --logpath=../data/shardsvr_logs.txt --fork --replSet set163164
164:
[root@localhost bin]# cat runServerShard.sh ./mongod --dbpath=../data --logpath=../data/shardsvr_logs.txt --fork --replSet set163164
至此AutoSharding+Rep配置成功。然后进行测试稳定性阶段。
先看下结果:
可以看到,总共插入2000W条数据,163和164相同大小 165属于分片 数据。
我现在进行稳定性测试:
断掉163服务器。
Mongos那再相应进行查询:
> db.users.find() error: { "$err" : "error querying server: 10.10.21.163:27018", "code" : 13633 } > db.users.find() error: { "$err" : "DBClientBase::findOne: transport error: 10.10.21.163:27018 query: { setShardVersion: \"test.users\", configdb: \"10.7.3.228:27019\", version: Timestamp 11000|1, serverID: ObjectId('4e2f64af98dd90fed26585a4'), shard: \"shard0000\", shardHost: \"10.10.21.163:27018\" }", "code" : 10276 } > db.users.find() error: { "$err" : "socket exception", "code" : 11002 }直接出现错误!
再进行手动添加164服务器!
> db.runCommand({addshard:"10.10.21.164:27017"}); { "ok" : 0, "errmsg" : "host is part of set: set163164 use replica set url format <setname>/<server1>,<server2>,...." }
还是出错!
可见这样配置是有问题的!
经过一段时间的思考和反复测试,发现是否是投票上除了问题
看到官网上有这样一段话:
Consensus Vote
For a node to be elected primary, it must receive amajorityof votes. This is a majority of all votes in the set: if you have a 5-member set and 4 members are down, a majority of the set is still 3 members (floor(5/2)+1). Each member of the set receives a single vote and knows the total number of available votes.
If no node can reach a majority, then no primary can be elected and no data can be written to that replica set (although reads to secondaries are still possible).
那么2台Server投票是否会出现问题,那再加一台如何?
这边也可以 把164作为 arbiter来 :
use admin var cfg={_id:"set162163164", members:[{_id:0,host:"10.10.21.162:27018"}, {_id:1,host:"10.10.21.163:27017"}, {_id:2,host:"10.10.21.164:27017",arbiterOnly:true} ]} rs.initiate(cfg) rs.conf()
228:
use admin #db.runCommand({addshard:"set162163164/10.10.21.162:27018,10.10.21.163:27017,10.10.21.164:27017"}) #正常添加3台 db.runCommand({addshard:"set162163164/10.10.21.162:27018,10.10.21.163:27017"}) #arbiter db.runCommand({addshard:"10.10.21.165:27018"}) db.runCommand({enableSharding:"test"}) db.runCommand({shardcollection:"test.users",key:{_id:1}})
经过试验:
稳定性已经提高,断掉162,163,164任意一台Server ,Mongos都能自动reconnect中其中的vote的一个成员primary.
最终设计图:
iteye_4537
关注
关注
点赞
收藏
评论
MongoDB(AutoSharding+Replication sets 稳定性测试 )
单Replication sets设计:如图所示,10.9.3.228只启动Mongos和config两个服务^_^[root@:/usr/local/mongodb/bin]#cat runServerConfig.sh ./mongod --configsvr --dbpath=../data/config --logpath=../data/config.log --fork ^...
复制链接
扫一扫
MongoDB的缺点以及你为什么不适用MongoDB?
weixin_48195327的博客
11-21
1919
各方面都堪用或接近堪用,但和各方面最佳实践差得太多,玩玩可以,但没有必要用。
1) 业余的全文检索
Text index建立后,仅写入10万条6000字文本以后就难以接受的慢,且越来越慢,官方client会应超时而报错。而sphinx search、lucene这样专业玩家是不会随着这种级别的数据量增加而降低写速度的。
2) 缓慢的bulk read/write
Collection的读写性能会随着体积增大而变得奇慢无比,手工分表则能规避这个问题。当然即使做了分表,多线程读写,性能还是和innodb
MongoDB:一、MongoDB是什么?MongoDB的优缺点
最新发布
qq_16583855的博客
06-24
4347
MongoDB是一个可扩展、开源、表结构自由,由C++编写面向文档的高性能分布式数据库。它更像是介于关系型数据库(RDBMS)和非关系型数据库(NoSQL)之间的数据库,是非关系型数据库中功能最丰富、最像关系型数据库的非关系型数据库。MongoDB支持的数据结构非常松散,是类似json的bson格式,可以存储比较复杂的数据类型。  为方便理解,下表以Mysql与MongoDB比较,Mysql中的表即对应MongoDB中的集合概念,Mysql中的行即对应Mo...
参与评论
您还未登录,请先
登录
后发表或查看评论
MongoDB 自动分片 (一) (Auto-Sharding)
zzbjut
11-27
1万+
深入浅出得详细介绍了MongoDB分片得原理,深入介绍了MongoDB分片集群搭建和使用时候得注意事项
MongoDB---AutoSharding的分析
Python专栏
05-14
1540
MongoDB 的 Auto-Sharding 一直是一个颇受争议的特性。其理论描述非常完美,但是实际应用上却出了很多问题,本文深入分析了Auto-Sharding的数据迁移过程,找出了影响性能的原因,并提出了作者自己的解决方案。
  Auto-Sharding的内部机制
  MongoDB 的 Sharding在存储数据时将数据进行了分块存储(Chunk),每一块的大小默认为200M。而Sh
关于MongoDB数据库的可连接性稳定性 - 抛转篇
草巾冒小子的博客
12-18
716
关于MongoDB数据库的可连接性稳定性 - 抛转篇
近日来,使用关于MongoDB作为数据集,通过postman模拟http请求提交参数,发现几个问题,如下:
在后台的两个收集(比如A夹和B夹)中,均出现相同的数据集【表】(比如users,这里定义两个users内的数据不同,比如一个是Liuri,一个是Wang)。
而且在批处理文件运行之后,(以之前使用A夹为例)如果出现报错导致批处理文...
MongoDB与MySQL的插入性能测试
cvan的小窝
07-14
2万+
1.1 MongoDB的简单介绍
在当今的数据库市场上,MySQL无疑是占有一席之地的。作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。
而MongoDB是一种文件导向的数据库管理系统,属于一种通称为NoSQL的数据库,是10gen公司旗下的开源产品,其内部数
二、mongodb之副本集(读写分离)
桂学成 - just do it
12-26
3074
在上一篇文章《搭建高可用MongoDB集群(一)——配置MongoDB》 提到了几个问题还没有解决。
· 主节点挂了能否自动切换连接?目前需要手工切换。
· 主节点的读写压力过大如何解决?
· 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?
· 数据压力大到机器支撑不了的时候能否做到自动扩展?
这篇文章看完这些问题就可以搞定了。NoSQL的产生就是为了解决大数据量、高扩
MongoDB 那些坑(转)
weixin_33881041的博客
11-08
359
MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒。但是薄荷在深入使用 MongoDB 过程中,遇到了不少问题,下面总结几个我们遇到的坑。特别申明:我们目前用的 MongoDB 版本是 2.4.10,曾经升级到 MongoDB 2.6.0 版本,问题依然存在,...
关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!
热门推荐
欣的专栏
06-08
11万+
原文地址:http://blog.csdn.net/jakenson/article/details/7060431
MongoDB的内部构造《MongoDB The Definitive Guide》
MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本人也刚买了《MongoDB TheDefinitive Guide》的影印版,还没来
MySQL、MongoDB、Redis 数据库之间的区别
CatStarXcode的博客
03-11
8万+
NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路。MongoDB:它是一个内存数据库,数据都是放在内存里面的。对数据的操作大部分都在内存中,但 MongoDB 并不是单纯的内存数据库。MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开...
MongoDB 4.2 新特性解读
chikuai9995的博客
06-24
551
云数据库 MongoDB 版
基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。
了解更多
MongoDB World 2019 上发布新版本 MongoDB 4.2 Beta,包含多项数...
mongodb与MySQL的不同_Mongodb与MySQL之间的比较分析
weixin_36054993的博客
01-27
191
本篇文章给大家带来的内容是关于Mongodb与MySQL之间的比较分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。在数据库存放的数据中,有一种特殊的键值叫做主键,它用于惟一地标识表中的某一条记录。也就是说,一个表不能有多个主键,并且主键不能为空值。无论是MongoDB还是MySQL,都存在着主键的定义。对于MongoDB来说,其主键名叫”_id”,在生成数据的时候,如果用户不主...
MySQL与MongoDB的区别
常敲代码手不生
07-22
2万+
什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及
MongoDB亿级文件存储方案测试
weixin_33725515的博客
01-04
198
2019独角兽企业重金招聘Python工程师标准>>>
...
MongoDB 自动分片 auto sharding
fens的博客
06-01
151
MongoDB部署实验系列文章,MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情。MongoDB也在集群,分片,复制上也有相当不错的的表现。我通过将做各种MongoDB的部署实验进行介绍。
关于作者:
张丹(Conan), 程序员Java,R,PHP,Java...
Mongodb5.0.3 shard分片实验(Linux)问题合集
效率
11-14
1290
目录一、安装MongoDB二、遇到的问题:1、config server的数量2、启动mongos后闪退3、addshard时报错:does not have a master.If this is a replica set, ensure that it has a health...4、启动shard分片后显示mongo child process started successfully, parent exiting5、addShard时显示:use replica set url format三
Mongodb亿级数据量的性能测试
weixin_33708432的博客
03-02
5685
进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:
(所有插入都是单线程进行,所有读取都是多线程进行)
1) 普通插入性能 (插入的数据每条大约在1KB左右)
2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高
3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
iteye_4537
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
原创
周排名
190万+
总排名
260万+
访问
等级
1万+
积分
327
粉丝
400
获赞
112
评论
2062
收藏
私信
关注
热门文章
Delete和Truncate的区别
20112
目前使用ORACLE EBS的公司列表
18657
Could not locate OCI dll .
12416
用户界面的需求分析与设计原则
11254
如何比较两个结构体是否相等
9714
最新评论
数据结构复习题(十)
qq_48009278:
十一题的简单选择排序为什么要交换元素顺序呢?
学习软件设计——C#练习(3)
m0_73845805:
什么玩意
学习软件设计——C#练习(3)
m0_73845805:
什么玩意
C#把外部文件拖入PictureBox中
mrathena:
Control control = 某 PictureBox 对象;
control.AllowDrop = true;
《C#程序设计基础》习题库程序
学者辉:
非常有用,万分感谢
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
第十章 Oracle恢复内部原理(各式各样的恢复特性)
第九章 Oracle恢复内部原理(恢复相关的 V$ 视图)
第八章 Oracle恢复内部原理(重置日志RESETLOGS)
2013年302篇
2012年5446篇
2011年3933篇
2010年1501篇
2009年1252篇
2008年925篇
2007年292篇
2006年355篇
2005年164篇
2004年319篇
2003年8篇
目录
目录
最新文章
第十章 Oracle恢复内部原理(各式各样的恢复特性)
第九章 Oracle恢复内部原理(恢复相关的 V$ 视图)
第八章 Oracle恢复内部原理(重置日志RESETLOGS)
2013年302篇
2012年5446篇
2011年3933篇
2010年1501篇
2009年1252篇
2008年925篇
2007年292篇
2006年355篇
2005年164篇
2004年319篇
2003年8篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值