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+复制机制

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


 

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


 

 

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


 

 

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


 

 

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

用了五台机器的cluster


 

 

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


 

 

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


 

 

 

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


 

 

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

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


 

 

 

 

 

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


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


 
 

猜你喜欢

转载自394498036.iteye.com/blog/2300688