加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 通讯 > 正文

MySQL Cluster的案例分析

发布时间:2021-12-20 12:24:22 所属栏目:通讯 来源:互联网
导读:MySQL Cluster的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1.背景 MySQL的cluster方案有很多官方和第三方的选择,选择多就是一种烦恼,因此,我们考虑mysql数据库满足下三
MySQL Cluster的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
 
1.背景
MySQL的cluster方案有很多官方和第三方的选择,选择多就是一种烦恼,因此,我们考虑mysql数据库满足下三点需求,考察市面上可行的解决方案:
 
高可用性:主服务器故障后可自动切换到后备服务器
可伸缩性:可方便通过脚本增加DB服务器
负载均衡:支持手动把某公司的数据请求切换到另外的服务器,可配置哪些公司的数据服务访问哪个服务器
 需要选用一种方案满足以上需求。在MySQL官方网站上参考了几种解决方案的优缺点:
  
综合考虑,决定采用MySQL Fabric和MySQL Cluster方案,以及另外一种较成熟的集群方案Galera Cluster进行预研。
 
2.MySQLCluster
简介:
 
MySQL Cluster 是MySQL 官方集群部署方案,它的历史较久。支持通过自动分片支持读写扩展,通过实时备份冗余数据,是可用性最高的方案,声称可做到99.999%的可用性。
 
 架构及实现原理:
 
MySQL cluster主要由三种类型的服务组成:
 
NDB Management Server:管理服务器主要用于管理cluster中的其他类型节点(Data Node和SQL Node),通过它可以配置Node信息,启动和停止Node。
 SQL Node:在MySQL Cluster中,一个SQL Node就是一个使用NDB引擎的mysql server进程,用于供外部应用提供集群数据的访问入口。
Data Node:用于存储集群数据;系统会尽量将数据放在内存中。
MySQL Cluster的示例分析MySQL Cluster的示例分析
 
缺点及限制:
 
对需要进行分片的表需要修改引擎Innodb为NDB,不需要分片的可以不修改。
NDB的事务隔离级别只支持Read Committed,即一个事务在提交前,查询不到在事务内所做的修改;而Innodb支持所有的事务隔离级别,默认使用Repeatable Read,不存在这个问题。
外键支持:虽然最新的Cluster版本已经支持外键,但性能有问题(因为外键所关联的记录可能在别的分片节点中),所以建议去掉所有外键。
Data Node节点数据会被尽量放在内存中,对内存要求大。
数据库系统提供了四种事务隔离级别:
A.Serializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库所做的更新(事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行。)。
B.Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。
C.Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
D.Read Uncommitted(读未提交数据):一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。
 
3.MySQL Fabric
简介:
 
为了实现和方便管理MySQL 分片以及实现高可用部署,Oracle在2014年5月推出了一套为各方寄予厚望的MySQL产品 -- MySQL Fabric, 用来管理MySQL 服务,提供扩展性和容易使用的系统,Fabric当前实现了两个特性:高可用和使用数据分片实现可扩展性和负载均衡,这两个特性能单独使用或结合使用。
 
MySQL Fabric 使用了一系列的Python脚本实现。
 
应用案例:由于该方案在去年才推出,目前在网上暂时没搜索到有大公司的应用案例。
 
架构及实现原理:
 
Fabric使用HA组实现高可用性,其中一台是主服务器,其他是备份服务器, 备份服务器通过同步复制实现数据冗余。应用程序使用特定的驱动,连接到Fabric 的Connector组件,当主服务器发生故障后,Connector自动升级其中一个备份服务器为主服务器,应用程序无需修改。
 
Fabric支持可扩展性及负载均衡的架构如下:
 
使用多个HA 组实现分片,每个组之间分担不同的分片数据(组内的数据是冗余的,这个在高可用性中已经提到)
应用程序只需向connector发送query和insert等语句,Connector通过MasterGroup自动分配这些数据到各个组,或从各个组中组合符合条件的数据,返回给应用程序。
 
缺点及限制:
影响比较大的两个限制是:
 
自增长键不能作为分片的键;
事务及查询只支持在同一个分片内,事务中更新的数据不能跨分片,查询语句返回的数据也不能跨分片。
MySQL Cluster的示例分析
 
测试高可用性
 
服务器架构:
 
功能
 
IP
 
Port
 
Backing store(保存各服务器配置信息)
 
200.200.168.24
 
3306
 
Fabric 管理进程(Connector)
 
200.200.168.24
 
32274
 
HA Group 1 -- Master
 
200.200.168.23
 
3306
 
HA Group 1 -- Slave
 
200.200.168.25
 
3306
 
安装过程省略,下面讲述如何设置高可用组、添加备份服务器等过程
 
首先,创建高可用组,例如组名group_id-1,命令:
 
mysqlfabric group create group_id-1
 
往组内group_id-1添加机器200.200.168.25和200.200.168.23:
 
mysqlfabric group add group_id-1 200.200.168.25:3306
 
mysqlfabric group add group_id-1 200.200.168.23:3306
 
然后查看组内机器状态:
 
由于未设置主服务器,两个服务的状态都是SECONDARY
提升其中一个为主服务器:
mysqlfabric group promote group_id-1 --slave_id 00f9831f-d602-11e3-b65e-0800271119cb
 
可以看到它的主服务器已经指向23
 
然后查看状态:
 
可以看到,这时将25自动提升为主服务器。
但如果将23恢复起来后,需要手动重新设置23为主服务器。
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读