搭建高可用mongodb集群(一)——mongodb配置基本模式

  转载自:LANCEYAN.COM

  以生数目的时期,传统的干项目数据库要力所能及重新强的劳动必须使化解大并发读写、海量数据快速存储、高而扩展性和高可用性这些难题。不过就是是以这些题目Nosql诞生了。

NOSQL有这些优势:

数据量,可以经过降价服务器存储大量之数量,轻松脱身传统mysql单表存储量级限制。

高扩展性,Nosql去丢了关系数据库的涉嫌项目特色,很容易横向扩张,摆脱了以往镇是纵向扩展的呲。

高性能,Nosql通过简单的key-value方式获取数据,非常迅速。还有NoSQL的Cache是记录级的,是一模一样种植细粒度的Cache,所以NoSQL在斯局面上吧将性能大多。

灵活的数据模型,NoSQL无需先呢使存储的数量建立字段,随时可以储存于定义之数格式。而当关系数据库里,增删字段是一样宗很麻烦的事体。如果是颇充分数据量的表,增加字段简直就是一个梦魇。

高可用,NoSQL在不极端影响属性的场面,就足以便宜之兑现强可用之架构。比如mongodb通过mongos、mongo分片就好高速布置出大可用配置。

  在nosql数据库里,大部分之询问都是键值对(key、value)的法。MongoDB是一个在于关系数据库和未关系数据库之间的产品,是非关系数据库当中最像关系数据库的。支持类似于面向对象的询问语言,几乎可以实现类似关系数据库单表查询的多边力量,而且还支持针对数码建立目录。所以这个非常方便,我们得以用sql操作MongoDB,从涉嫌项目数据库迁移过来,开发人员学习成本会大大减少。如果重新针对根的sql
API做同样交汇封装,开发为主可感觉到不交mongodb和事关项目数据库的分。同样MongoDB也是称呼自己会迅速增加建筑一个胜可用可扩大的底分布式集群,网上发出过多搭建的文章,在咱们搭建之时光还待摸索修改很多东西,所以管自己实战的手续记录下来以备忘。我们省哪一步一步搭建之东东。

一、mongodb单实例。这种布局单称简易开发时行使,生产用十分,因为单节点挂掉整个数据业务全挂,如下图。

NoSQL 1

尽管未可知生育用,但以此模式可以快搭建启动,并且能够用mongodb的命令操作数据库。下面列有以linux下安装单节点mongodb的步子

1、建立mongodb测试文件夹

NoSQL 2

 

2、下载mongodb的安装程序包

NoSQL 3

 

3、启动单实例mongodb

NoSQL 4

 

输出日志如下,成功!

[initandlisten] db version v2.4.6
……..
[initandlisten] waiting for connections on port 27017
[websvr] admin web console waiting for connections on port 28017

mongodb默认自带提供了web访问接口,通过 IP + 端口的样式可以看。

http://192.168.0.1:28017/

NoSQL 5

其次、主从模式。使用mysql数据库时大家广泛应用,采用双机备份后主节点悬挂掉了晚由节点可以接手主机继续服务。所以这种模式于单节点的高可用性要好广大。

NoSQL 6

 

脚看一下怎么一步步增建筑一个mongodb的主从复制节点:

  • 1、准备一定量高机器 192.168.0.1 和 192.168.0.2。 192.168.0.1
    当作主节点, 192.168.0.2作为从节点
  • 2、分别下载mongodb安装程序包。在192.168.0.1高达起文件夹
    /data/mongodbtest/master,192.168.0.2白手起家文件夹/data/mongodbtest/slave
  • 3、在192.168.0.1起步mongodb主节点程序。注意后面的此
    “ –master ”参数,标示主节点。

    mongod –dbpath /data/mongodbtest/master –master

出口日志如下,成功!

[initandlisten] MongoDB starting : pid=18285 port=27017
dbpath=/data/mongodbtest/master master=1
#日志显示主节点参数
[initandlisten] options: { dbpath:
“/data/mongodbtest/master”, master: true }
……..
[initandlisten] waiting for connections on port 27017

4、在192.168.0.2起步mongodb从节点程序。关键配置,指定主节点ip地址及端口
–source 192.168.0.1:27017 和 标示从节点 –source 参数。

mongod –dbpath /data/mongodbtest/slave –slave
–source
 192.168.0.1:27017

输出日志如下,成功!

[initandlisten] MongoDB starting : pid=17888 port=27017
dbpath=/data/mongodbtest/slave slave=1
……..
#日记显示从节点参数
[initandlisten] options: { dbpath: “/data/mongodbtest/slave”, slave:
true, source
: “192.168.0.1:27017″ }
……..
[initandlisten] waiting for connections on port 27017
#日志显示从节点 从主节点同步复制数据
[replslave] repl: from host:192.168.0.1:27017

5、测试主从复制。

NoSQL 7

足见到主机的联名日志

[initandlisten] connection accepted from 192.168.0.2:37285 #3 (2
connections now open)
[slaveTracking] update local.slaves query: { _id:
ObjectId(’5284e6268ed115d6238bdb39′), config: { host:
“192.168.0.2:35271″, upgradeNeeded: true }, ns: “local.oplog.$main” }
update: { $set: { syncedTo: Timestamp 1384441570000|1 } } nscanned:1
nupdated:1 fastmod:1 keyUpdates:0 locks(micros) w:132015 132ms

检查从主机的数量。

mongo 127.0.0.1

翻开NoSQL时数据库。

NoSQL 8

查询后数都一起过来了。再看看日志,发现从主机确实打主机同步了数额。

NoSQL 9

翻服务状态

NoSQL 10

顶之基本结构的mongodb搭建筑好了。

故障转移测试,现在星星点点台服务器如果主服务器挂掉了,从服务器可以健康运转吗?

  • a、先测试下由服务器可以当成主服务器也,也便是通向由服务器里写会同步主服务器也?

     

    在192.168.0.2上连接mongodb。

    NoSQL 11

    好观看 mongodb的打节点是无克提供写操作的,只能提供读操作。

b、如果从服务器挂掉,主服务器还得供劳务。如果主服务器挂掉了打服务器能否自行变成可写。
测试一下!

事先老掉原来的mongodb主服务器。

NoSQL 12

测试于服务器能否可写。在192.168.0.2臻连年mongodb测试。

NoSQL 13

圈起从服务器并未自动接替主服务器的功能,只有手工处理了!

停从服务器,在本来数据文件启动并添加主服务器标示。

mongod  –dbpath /data/mongodbtest/slave –master

当交起步成功(时间有点长)。在192.168.0.2 上 连接

NoSQL 14

 

NoSQL 15

成功!

多个从节点。现在只有是一个数据库服务器又提供写以提供读,机器承载会冒出瓶颈。大家还记mysql里之读写分离也?把20%的形容放到主节点,80%的读放到自节点分摊了压缩了服务器的载荷。但是多数利用还是朗诵操作带来的压力,一个起节点压力负载不了,可以将一个于节点变成多独节点。那mongodb的相同兆多起可支撑呢?答案是肯定的。

NoSQL 16

以有利于测试,在192.168.0.2达到重复建立一个文本夹 /data/mongodbtest/slave1
用作任何一个slave服务器。
启动slave2服务,

mongod  –dbpath /data/mongodbtest/slave1 –slave  –port 27017 –source 192.168.0.1:27017。

成功启动后经过mongodb连接测试:

NoSQL 17

搭建了当下套主从复制系统是无是就是非常庄重了,其实不然。。。看看这几只问题?

  • 主节点悬挂了能否自行切换连接?目前欲手工切换。
  • 主节点的刻画压力过特别哪解决?
  • 由节点每个点的数码都是针对数据库全量拷贝,从节点压力会无会见了好?
  • 不怕对由节点路由实践路由访问策略能否完成自动扩展?

再有如此多问题,有其他解决方案为?下同样篇就打。

网站地图xml地图