Mysql集群详解编程语言
高可用性:主服务器故障后可切换到备用服务器
可伸缩性:方便增加db
负载均衡:支持将某数据切换到另外的服务器
mysqlclustermysql 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:用于储存集群数据。
缺点:对需要进行分片的表需要修改引擎Innodb为NDB。NDB的事务隔离级别只支持read commited,即一个事务在提交前,查询不到在事务内所做的修改。Innodb支持所有事务隔离级别,默认用 repeatable read。尽量不要使用外键,因为外键所关联的记录可能在别的分片节点中。
四种事务隔离界别
Serializable 串行化,事务一个接一个地执行,而不能并发执行
Repeatable read 可重复读,一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。
Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
Read Uncommitted(读未提交数据):一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。
mysql fabric两个特性:高可用和使用数据分片实现可扩展性和负载均衡。
Fabric 使用ha组实现高可用,一台主服务器,其他是备份服务器,备份服务器通过同步复制实现数据冗余。链接到fabric的connector组件,当服务器发生故障后,connector自动升级其中一个备份服务器为主服务器。
使用多个HA组实现分片,每个组分担不同的分片数据。应用只需向connector发送query和insert语句,connector 通过master group自动分配数据到各个组,或者从各个组中组合符合条件的数据,返回给应用程序。
缺点:自增长键不能作为分片的键;事务及查询只支持在同一个分片内,事务中更新的数据不能跨分片,查询语句返回的数据也不能跨分片。
Fabric 分片:当一台机器或一个组承受不了服务压力后,可以添加服务器分摊读写压力,通过Fabirc的分片功能可以将某些表中数据分散存储到不同服务器。我们可以设定分配数据存储的规则,通过在表中设置分片key设置分配的规则。另外,有些表的数据可能并不需要分片存储,需要将整张表存储在同一个服务器中,可以将设置一个全局组(Global Group)用于存储这些数据,存储到全局组的数据会自动拷贝到其他所有的分片组中。
Galera Cluster多个服务能够同时被读写,无延迟复制,不会产生数据丢失,备用服务器会自动接管,不会产生宕机时间,无需手动复制数据库到新的节点上,支持innodb引擎。
架构实现原理:
传统:Replication(复制)方式是通过启动复制线程从主服务器上拷贝更新日志,然后传送到备份服务器上执行,存在丢失或者同步不及时的风险。
Galera:客户端通过Galera Load Balancer访问数据,提交每个事物都通过wrsp api在所有服务器中执行,要么全部成功,要么全部回滚。
缺点:由于同一个事务需要在集群的多台机器上执行,性能上会有消耗。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11746.html
cmysql相关文章
- 使用MySQL:如何使用被包含的字段(mysql字段被包含)
- MySQL集群监控系统:实时可靠的管理工具(mysql集群监控)
- 实现MySQL数据安全:掌握隔离机制(mysql隔离机制)
- MySQL用户密码重置指南(mysql用户重置)
- MySQL的主从复制与集群实现(mysql主从复制和集群)
- MySQL高可用集群:实现99.99%服务可用性(mysql高可用集群)
- 如何查看MySQL数据库的密码(如何查看mysql的密码)
- MySQL集群搭建:使用主从复制扩展你的数据库(mysql的集群搭建)
- 优化MySQL集群场景下的性能优化(mysql集群场景)
- 过程MySQL自定义存储过程:实现自动化任务(mysql自定义存储)
- MySQL从不同库中复制表(mysql不同库复制表)
- 掌握MySQL:学习复杂存储过程(mysql复杂存储过程)
- MySQL 添加新账户步骤指南(mysql添加账户)
- 类型MySQL中的二进制数据类型及其用法(mysql二进制数据)
- 集群MHA: Building a MySQL Cluster(mha搭建mysql)
- 精确把握MySQL统计更新(mysql统计更新)
- 搭建MySQL集群:优化连接池性能(mysql集群连接池)
- MySQL集群手册:高效部署和管理数据分布式系统(mysql集群手册)
- MySQL如何查找重复数据(mysql查找数据重复)
- 使用中间表优化MySQL查询(mysql中使用中间表)
- 解决MySQL两表查询报错问题(mysql两表查询报错)
- 主从更换CDH集群中MySQL主从模式(CDH集群更换mysql)
- CDH集群上使用MySQL驱动包的指南(cdh mysql驱动包)
- 一步之遥三台MySQL集群搭建实践(3台机器mysql集群)
- 探究MySQLres的功能与使用方法MySQL资源结果集库详解(mysql_res)
- MySQL集群数据安全的保障(mysql_clust)
- MySQL是正确的选择,Youre Efficient Solutions(mysql yes)
- MySQL 不支持编辑功能(mysql不可以编辑)
- MySQL源代码下载简易教程(mysql下载源代码)