手机版

在大数据时代构建高可用性mongodb集群配置教程

时间:2021-08-01 来源:互联网 编辑:宝哥软件园 浏览:

类型:编程控件大小:191KB语言:中文评分:6.6标签:立即下载在大数据时代,传统关系数据库必须解决高并发读写、海量数据高效存储、高扩展性和高可用性等问题。但正是因为这些问题,Nosql诞生了。

NOSQL具有以下优点:

数据量大的情况下,大量的数据可以由廉价的服务器存储,这使得很容易摆脱传统mysql单表存储级别的限制。

Nosql具有很高的可扩展性,去除了关系数据库的关系特性,很容易横向扩展,从而摆脱了过去总是纵向扩展的诟病。

凭借高性能,Nosql通过简单的键值方法获取数据,速度非常快。此外,NoSQL缓存是记录级的细粒度缓存,因此NoSQL在这一级应该有更高的性能。

借助灵活的数据模型,NoSQL可以随时存储自定义数据格式,而无需预先设置要存储的数据字段。在关系数据库中,添加或删除字段是一件非常麻烦的事情。如果是一个包含大量数据的表,添加字段简直就是一场噩梦。

凭借高可用性,NoSQL可以在不影响性能的情况下轻松实现高可用性架构。例如,mongodb可以通过mongos和mongo切片快速配置高可用性配置。

在nosql数据库中,大多数查询都是值键值对。MongoDB是介于关系数据库和非关系数据库之间的产品,是非关系数据库中最类似关系数据库的产品。它支持类似面向对象的查询语言,几乎可以实现大多数类似关系数据库单表查询的功能,并且还支持数据索引。因此,这非常方便。我们可以使用sql操作MongoDB,并从关系数据库中迁移。开发者的学习成本会大大降低。如果封装底层的sql API,很难感受到mongodb和关系数据库的区别。同样,MongoDB声称能够快速构建高可用性和可扩展的分布式集群。网上的文章很多,很多东西在搭建的时候都需要去发现和修改,所以要把自己的实战步骤记录下来做备忘录。让我们看看如何一步一步地建立这个东西。

1.mongodb单个实例。这种配置只适合简单的开发,不适合生产,因为单个节点就挂断了整个数据服务,如下图所示。

虽然不能在生产中使用,但这种模式可以快速设置和启动,数据库可以通过mongodb命令操作。以下是在linux下安装单节点mongodb的步骤

1.建立mongodb测试文件夹

1#存储整个mongodb文件2mkdir-p/data/mongodb test/single 34 #存储mongodb数据文件5mkdir-p/data/MongoDB test/single/data 67 #进入MongoDB文件夹8cd /data/mongodbtest/解压下载的压缩包4tar xvzf MongoDB-Linux-x86 _ 64-2 . 4 . 6 . tgz 23 #进入MongoDB程序执行文件夹7cd MongoDB-Linux-x86 _ 64-2 . 4 . 6 . tgz 56 #。

3.启动单实例mongodb

1 MongoD-dbpath/data/MongoDB Test/single/data的输出日志如下。成功!

[initandlisten] db版本v2.4.6…….[initandlisten]等待端口27017上的连接[websvr]管理web控制台等待端口28017上的连接

Mongodb默认提供web访问接口,可以通过IP端口访问。

http://192.168.0.1:28017/

二是主从模式。Mysql数据库被大家广泛使用。采用双机备份后,主节点挂机,从节点可以接管主机继续服务。因此,这种模式比单节点的高可用性好得多。

让我们看看如何逐步构建mongodb的主从复制节点:

1.准备两台机器192.168.0.1和192.168.0.2。192.168.0.1作为主节点,192.168.0.2作为从节点。

2.单独下载mongodb安装包。在192.168.0.1上设置文件夹/数据/mongodbtest/master,在192.168.0.2上设置文件夹/数据/mongodbtest/slave。

3.在192.168.0.1上启动mongodb主节点程序。请注意以下“master”参数,表示主节点。

mongoddbpath/data/mongodbtest/mastermaster

输出日志如下。成功!

[initandlisten]MongoDB start : PID=18285端口=27017 dbpath=/data/MongoDB test/master master=1 #日志显示了主节点参数[initandlisten]options 3360 { dbpath : "/data/MongoDB test/master ",master: true}……。[initandlisten]正在等待端口27017上的连接

4.在192.168.0.2上启动mongodb从程序。密钥配置,指定主节点- source的ip地址和端口,并标记从节点- source的参数。

mongod-dbpath/data/mongodbtest/slave-slave-source 192 . 16880 . 168888888616

输出日志如下。成功!

[initandlisten]MongoDB start : PID=17888端口=27017 dbpath=/data/MongoDB test/slave slave=1.#日志显示从节点参数[initandlisten]选项: { dbpath : "/data/mongodbtest/slave ",slave: true,Source : " 192 . 168 . 0 . 1:27017 " }.[initand listen]等待端口27017 #上的连接日志显示,从节点从主机:192.168.0.13333同步复制主节点[replslave] repl3360的数据

5.测试主从复制。

连接到主节点上的终端:

1234567891011mongo 127.0.0.1#建立测试数据库。usetest将数据插入testdb表。db . testdb . insert({ ' test 1 ' : ' test val 1 ' })查询test db数据以查看它是否成功。db . testdb . find();{“_ id”: objectid(' 5284 e5cb 1 F4 EB 215 B2 ECC 463 '),' test1' :' testval1'}可以看到主机的同步日志

[initandlisten]从192.168.0.2:37285 #3接受的连接(2个连接现已打开)[slaveTracking]更新local . slave query : { _ id : ObJect id(' 5284 e 6268 ed 115d 6238 BDB 39 '),config : { host 3360 " 192 . 168 . 0,upgradeneedd : 33333333333333362

检查来自主机的数据。

mongo 127.0.0.1

查看当前数据库。

1234567显示dbs本地0.203125 gbtest 0.203125 gbusetest;db . testdb . find();{ ' _ id ' : objectid(' 5284 e5cb 1 F4 EB 215 B2 EC 463 '),' test1' :' testval1'}查询后数据已同步。再次查看日志,我们发现数据是从主机同步的。

12 thu nov 14233:05:13[repl slave]repl :检查点应用了15个操作thu nov 1423:05:13[repl slave]repl :同步到: nov 1423:083360105284 e 75 a 33333338。

12345 db . printpreplicationinfo();这是一个从机,正在打印从机复制信息。源: 192.168.0.1:27017同步到: sunnov 17201316:04:02 GMT 0800(CST)=-54 secsago(-0.01小时)到这个主从结构的mongodb

故障转移测试,如果主服务器死了,从服务器能正常工作吗?

a、首先测试从服务器是否可以作为主服务器,即在从服务器中写入是否可以同步主服务器。

在192.168.0.2上连接mongodb。

123 mongo 127 . 0 . 0 . 1:27017 db . testdb . insert({ ' test3 ' : ' testval 3 ' });不是主节点可以看到mongodb的从节点不能提供写操作,只能提供读操作。

b、如果从服务器挂机,主服务器也可以提供服务。如果主服务器死了,从服务器能自动变成可写吗?测试一下!

先干掉原来的mongodb主服务器。

1kill-3 ` PS-ef | grep mongod | grep-v grep | awk“{ print $ 2 }”`测试从属服务器是否可写。在192.168.0.2上连接mongodb测试。

12db . testdb . insert({ ' test 3 ' : ' test val 3 ' });好像从服务器不会自动替换主服务器,要手动处理!

停止从属服务器,从原始数据文件开始,添加主服务器标签。

1 god-db path/data/MongoDB test/slave-master等待,直到启动成功(时间有点长)。连接到192.168.0.2

1不,不,不,不,不,不,不,不,不,不,不,不。

123 db . testdb . find();{ ' _ id ' : objectid(' 5288629 e9 b 0318 be 4 b 20 bd4c '),' test1 ' : ' testval 1 ' } { ' _ id ' : objectid(' 528862d 69 b 0318 be 4 b 20 bd4d '),' test2。

多个从节点。目前只有一个数据库服务器提供写和读两种功能,机器负载会出现瓶颈。你还记得mysql里读写分离吗?将20%的写操作放在主节点上,将80%的读操作放在从节点上,可以减少服务器的负载。但是大多数应用都是因为读操作的压力造成的,一个从节点是不能受力的,所以可以改成多个节点。mongodb的一个主人和许多奴隶能支持它吗?答案是肯定的。

为了便于测试,在192.168.0.2上创建一个文件夹/数据/mongodbtest/slave2作为另一个从服务器。启动slave2服务,

1 mongod-dbpath/data/MongoDB test/slave 1-slave-port 27017-source 192 . 168 . 0 . 20000000006成功启动后通过mongodb连接测试:

123 db . testdb . find();{“_ id”: ObJect id(' 5288629 e9 b 0318 be 4 b 20 bd4c '),' test1 ' : ' test val 1 ' } {“_ id”: ObJect id(' 528862d 69 b 0318 be 4 b 20 bd4d '),' test2':'testval2'}

版权声明:在大数据时代构建高可用性mongodb集群配置教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。