mysql分布式思维(十一)- MySQL Cluster

vitasfly 2016-05-22


mysql分布式思维(十一)- MySQL  Cluster
 一、数据切分及整合的中间件
     amoeba 是一个框架----->主要解决分布式数据存储后的整合的中间件 
           -----> amoeba for mysql   针对mysql数据库的
             amoeba.xml文件 --->amoeba for mysql本身的一些信息配置
      dbServers.xml文件---->主要配置代理的多个mysql数据源
      rule.xml文件  ----->配置查询路由的
      functionMap.xml文件---->配置用于解析query中的函数所对应的java类实现
      rulefunctionMap.xml文件---->配置路由规则中需要使用到的特定的函数的实现类。
    ----->amoeba for aladdin 针对异构数据源的            
    ----->amoeba for mongodb  针对Mongodb数据库

      mysqlProxy+lua
      cobar----》阿里巴巴解决异构数据源的代理的中间件--->开源的。

二、整合的问题
      1.事务的问题
                   尽量降低一致性要求,采用消息机制,利用消息中间件
      2.跨节点查询
          join不能直接用了,多个query语句,并且做好query优化
      3.跨节点合并排序
          ----->有些数据切分及整合的中间件已经帮我们实现了该功能。
   ----->join有顺序问题,排序没有驱动表和被驱动表的顺序问题
            自己做可以效率上进行提高可以采用并行机制

三、MySQL  Cluster
    1.Cluster一般特指集群完全自动管理,不需要人为干预太多
    2.mysql cluster
        ---->无共享存储设备的情况下实现的一种完全分布式数据库系统
 ---->NDB(NDB Cluster)存储引擎来实现
              ---->myisam,innodb存储引起在安装mysql server时就直接安装上了
       ---->ndb存储引擎要单独安装才可以。
        ---->数据既能直接放在内存,也能直接放在磁盘
 ----->现在mysql cluster还不是特别成熟,所以使用较少
           ----->国内有家企业 阿尔卡特朗讯 个别事业部有使用
               法国那边修改过的,搭建的集群,国内使用,
        它在使用的时候主要考虑的是实时数据,所以用的是内存存放数据。
 ----->mysql cluster集群的组成
           ---->1.sql服务器节点
                就是mysql server
         只做连接管理,query优化和响应,Cache管理等
         不存放数据
          ----->2.storage节点
                  其实就是NDB节点,存储引擎
    这个节点专门负责存储数据一出现至少两个,数据完全一样,实时同步。
          ----->3.负责管理各个节点的Manager节点主机

       ----->cluster的优缺点
   

          MySQL簇是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的簇。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL簇将标准的MySQL服务器与名为NDB的“内存中”簇式存储引擎集成了起来,MySQL簇由一组计算机构成,每台计算机上均运行着  多种进程,包括MySQL服务器,NDB簇的数据节点,管理服务器,以及(可能)专门的数据访问程序。

•构成组件
–管理(MGM)节点
–数据节点
–SQL节点


mysql分布式思维(十一)- MySQL  Cluster

cluster优缺点

•能运行在普通硬件上,不需要专业的存
 
储设备
 
•一个节点失败不会导致其他节点失败
 
•需要较大的RAM(至少5.0版是有这个要
 
求的)
 
•数据节点和前端(SQL节点)都可以避免
 
单点失效
 
•数据的冗余是同步方式,不像复制采用
 
异步方式;一个数据节点实效,它的备份
 
节点的数据不会与其不一致
 
•不能在线增加和舍弃节点(需要做全备
 
和恢复,需要重启整个cluster)
 
•本身不实现动态的负载均衡
 
•管理复杂程度比复制高
 
•目前应用的广泛程度远不及它的复制


 

•不支持Full Text索引
 
•自增长列必须是主键
 
•不支持事务的部分回滚,重复键或者类似的错
 
误会导致整个事务回滚
 
•只支持read committed隔离级别
 
•varchar占用与char相同的空间
 
•外键被忽略
 
•保存点被忽略
 
•执行范围扫描时,开销相对昂贵
 
•最大节点数为63
 
•数据节点最多为48
 
•不适宜处理大事务
 
•commit时不能保证日志刷新到硬盘
 
•delete某个表的数据,释放的空间,只由在同
 
一个表的insert时再被使用,不会被其他表使用

相关推荐