mysql cluster构架

mysql cluster构架

今天下了一份mysql cluster architecture overview,大致了解下mysql的cluster功能
1.mysql cluster现在主要是解决ha(高可用性)的问题,并不是完全的支持ha,load balance的cluster.
2.mysql cluster构架是建立在share nothing的基础上的,这也应该是cluster发展的趋势吧,否则,要使用共享磁盘的话,代价太昂贵了.
3.mysql cluster只适用于mysql的ndb storage,mysql的存储引擎很多,不同的引擎适用于不同的业务,以后还得花些时间研究下这些引擎的特征
4.mysql cluster体系把一组计算机节点分为三大类,分别是sql节点,storage存储节点,mgmt管理节点.
5.存储节点:mysql cluster在各存储节点之间复制数据,这样当任意一个存储节点发生意外的时候,始终有另外的存储节点上存储有相同的数据.如果节点多于两个的话,这个复制的性能不知道是否会降低?因为还不知道它的复制原理,也不能妄下结论.数据库事务是由存储节点来保证的,任一个事务产生的数据变化会同时反映到所有存储节点中;当在一个事务执行的时候,由于其中一个存储节点失败,那么会导致整个事务的回退.
6.管理节点:一般在一个mysql cluster体系中只需要一个管理节点.它仅用于cluster的启动及cluster的系统参数配置,因此,存储节点是可以在没有管理节点的情况下正常运行的.(恩,可以节省一台机器^_^,其实是不可以的,因为sql节点和存储节点在启动的时候需要连接到管理节点读取cluster的配置信息,但是在sql节点和存储节点启动完成后,管理节点是可以停止的)
7.sql节点:就是mysqld服务器了.应用程序通过sql节点访问存储节点中的数据.在mysql cluster体系中,任意一个sql节点都是连接到所有的存储节点的.所以当任意一个存储节点发生意外的时候,sql节点都可以把请求转移到另一个存储节点执行
8.mysql cluster的sql节点,存储节点可以动态增加,减少,这可以管理节点配置
9.存储节点的故障检测:mysql cluster通过两种方式来检测故障,
一是通讯丢失,可以通过tcp,共享内存等方式在各存储节点之间通讯来侦测节点是否正常这种方式是最快的故障检测方式,
二是心跳失败,通讯丢失的检测方法在某些特殊情况下无效,例如磁盘故障等问题.所有的存储节点通过组成一个环路,每个节点向下一个节点发送心跳信号,如果下一个节点没有收到心跳信号,则认为上一个存储节点故障,并依次向下下个节点广播此故障信息

你可能感兴趣的:(mysql cluster构架)