MySQL集群搭建实现高可用(mysql-cluster)之原理概述
MySQ-Cluster集群架构
SQL节点:给上层应用层提供sql访问,不存储数据库数据。
Menagement 管理节点:管理整个集群。 启动,关闭集群。 通过ndb_mgmd命令启动集群
Storage 存储/数据节点:保存cluster中的数据。数据节点,可以提供副本。实现数据冗余。
MySQL集群使用NDB引擎:是一种 “内存中”的存储引擎 , 它具有可用性高和数据一致性好的特点。
拓展:NDB引擎介绍:
NDB引擎
MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如16G, 32G, 甚至128G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。
缺陷
· 基于内存,数据库的规模受集群总内存的大小限制
· 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。
· 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢
优点
· 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
· 扩展性很好,增加节点即可实现数据库集群的扩展。
· 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。
MySQL-Cluster同步集群和Master-Slave异步集群的差异
【分类】:分为同步集群和异步集群。
1)同步集群:(mysql cluster)
结构:(data + sql + mgm节点)
特点:
1. 1) 内存级别的,对硬件要求较低,但是对内存要求较大。换算比例为:1:1.1;
1.2) 数据同时放在几台服务器上,冗余较好;
1.3) 速度一般;
1.4) 建表需要声明为engine=ndbcluster
1.5) 扩展性强;
1.6) 可以实现高可用性和负载均衡,实现对大型应用的支持;
1.7) 必须是特定的mysql版本,如:已经编译好的max版本;
1.8) 配置和管理方便,不会丢失数据
2)异步集群(mysql replication)
结构:(master + slave)
特点:
2.1) 主从数据库异步数据;
2.2) 数据放在几台服务器上,冗余一般;
2.3) 速度较快;
2.4) 扩展性差;
2.5) 无法实现高可用性和负载均衡(只能在程序级别实现读写分离,减轻对主数据库的压力);
2.6) 配置和管理较差,可能会丢失数据