mysql心跳线_mysql分布式思维(十二)- mylsql分布式

mysql高可用设计

1.通过复制的方式实现高可用

1.1一个master多个slave

某个slave crash掉只是停止个别读操作

master crash掉要选择某个slave作为master,其它slave 进行change master 命令进行切换

1.2优缺点

slave可以作为master的备份

是异步的,不会给master带来很大压力,某些情况master crash,可能有些数据未复制到slave中

配置简单

正常运转的不需要停机

技术比较成熟

slave可以分流读操作

对slave再进行备份不影响master

master crash人工进行操作升级某slave为master,并有可能数据不一致--->通过智能的方式解决这个问题如使用keepAlived

二、mysql cluster 高可用方案(cluster本身用的就比较少)

1.cluser 其实是比较理想的方案。

但是现在mysql的cluster不是很成熟,很多功能不支持。

所以应用不是特别广泛。

2.优缺点

普通设备

一个节点失败不会导致其它节点失败

需要较大内存

所有节点都可以避免单点失效

数据冗余的方式是同步,而非异步

不可以动态添加或者舍弃节点

本身不实现负载均衡

管理比较复杂

3.限制

三、心跳与复制

1.原理

同一时刻只有一台机器提供数据库服务,两台数据库的数据通过复制同步

,用心跳来检测数据库服务器是否可用的;当master服务器不可用时,slave

服务器绑定对外提供服务的ip(虚拟的IP),从而接管服务。

master/slave服务器需要额外的交叉网线(用另外一块网卡互联),

或者用串口连接的心跳线来检测对方的状态

2.优缺点

----->所有复制技术的缺点

----->可以做到自动切换

3.通过keepAlived也能实现自动切换,并且可以达到切换秒级

四、心跳与DRBD(Distributed Replicated Block Device)

1.原理

---->由内核模块和相关脚本构成,构建高可用集群

---->实现方式是通过网络来镜像整个设备,可以生产分布式的存储系统。

----->把其看成一种网络RAID,Drbd负责接收数据,把数据写到本地磁盘,然后

发送给另外一个主机。另一个主机在将数据存储到自己的磁盘中。

----->介于文件系统和磁盘的一种介质

2.DRBD在处理远程数据写入操作的时候有三种模式

---->Protocol  A

---->Protocol  B

---->Protocol  C

3.优缺点

---->不具备复制的有点,备份机上使用的mysql正常情况下不能启动。

因而不能作为其他用途(如备份)

----->比复制性能高

----->主机失效时,备机是否能完全保证数据一致,需要验证。

----->目前应用还不是特别的广泛

总结:用心跳+复制机制

用keepAlived+复制机制

复制机制     ---》部署简单、实施方便、默认支持。只要通过第三方软件即可完成自动切换

c610ceb5f2b592dd07b2476dd9d17214.png

两个MySQL服务器,一个为Master(主),一个为Slave。master开启二进制日志;slave启动一个线程连接master,来不断地获取master的二进制日志,并写到本地的relaybinlog文件中;slave启动另一个线程把relaybinlog文件中的日志应用到slave数据库中;master中有一个线程负责与slave通讯,不断的读取二进制日志,并传递给slave。

c36ce565623e89934be0da2ac082cfc4.png

slave可以用做master的备份;slave可以分流读操作;备份到其他介质时,可从slave备份,而不增加master的负载。

0fddef44883b424cd878b797ae5bb37f.png

master失效时,通过手工操作,让应用只访问slave。

d3995fec7a2a10d5430c042f78d2073c.png

图有两个数据节点(用于保存持久化数据的)、两个SQL节点(提供给应用程序访问的前端)。

用了五台机器的cluster:

c633b8f7333749b3d3dfa56c4c8ef355.png

上图表述在4个数据节点的情况下,拆分一个表的存储。左上是一张表,字段是ID、CAPITAL、COUNTRY、UTC。目前MySQLCluster是根据数据节点的个数,和replica的个数(即冗余的份数),对主键进行HASH,分布存储到各个节点中。每一个组的成员个数与replica的个数相同

98dd1ec07cb4e512b6288c8e9499c7b4.png

上图每个组中坏了一个数据节点,但在另两个节点中有坏掉的节点的完整并且相同的数据,所以这些数据仍然是可用的

bd43ca10f781f70152c2a1bd1da0df4c.png

487c395df2313d7d264e4b0f1120e009.png

上图坏掉了两个数据节点、四个SQL节点、一个管理节点,cluster仍然是“活”的

89a2588346a2dceb7284abdbead4218d.png

同一时刻只有一台机器提供数据库服务,两台数据库的数据通过复制(replication)同步;用心跳来检测数据库服务器是否可用;当master服务器不可用时,slave服务器绑定对外提供服务的IP(图中的virtual IP),从而接管服务。

master和slave服务器需要额外的交叉网线(利用另一块网卡互联),或者通过串口连接的心跳线来检测对方的状态。

319218033d20a5de40eac32a92f324c9.png

74db481eb31f7b29403cac233ecb9ade.png

8b4ab7371744d553a41e1bd65d1a2533.png

3df92ab45f2d57c7d1c3f28e11d85006.png

也采用了心跳和虚拟IP。不同的是,两台数据库服务器使用共享存储设备,比如NAS或者SAN等,也就是说数据文件保存在共享存储设备上;这样就不需要在两个数据库服务器之间做数据同步了。

b4e9178291976b03ae76847e093bcb3d.png

备用机在主服务器失效后接管虚拟IP,并且启动MySQL服务。因为MySQL不提供两个实例共享存储的机制,因此两个数据库服务不能同时启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值