下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

MySQL高可用方案和开源兼容方案

作者:课课家教育     来源: http://www.kokojia.com点击数:783发布时间: 2017-08-22 08:00:04

标签: 数据库MySQL数据库方案

  MySQL是最受欢迎的免费开源应用之一,它是成千上万个网站的数据库骨干。然而,许多开发人员认为有必要将其拆分成其他项目,并且每个分支项目都要有自己的专长,这些需求以及Oracle对核心产品增长缓慢的担忧,导致出现了许多开发人员感兴趣的子项目和分支。另外,为了满足特殊业务的需要,MySQL有时候不能完全胜任,这就需要开发出新的解决方案。同时,为了兼容旧业务系统的升级维护,新的技术方案多是基于MySQL实现而实现的兼容MySQL方案。

  在讲兼容MySQL方案之前,我们先来看一下几种MySQL高可用方案:

  第一种:主从复制+读写分离

  客户端通过Master对数据库进行写操作,slave端进行读操作,并可进行备份。Master出现问题后,可以手动将应用切换到slave端。

  客户端通过Master对数据库进行写操作,slave端进行读操作,并可进行备份。Master出现问题后,可以手动将应用切换到slave端。

  对于数据实时性要求不是特别严格的应用,只需要通过廉价的pcserver来扩展Slave的数量,将读压力分散到多台Slave的机器上面,即可通过分散单台数据库服务器的读压力来解决数据库端的读性能瓶颈,毕竟在大多数数据库应用系统中的读压力要比写压力大的多。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似的方案解决数据库瓶颈问题。

  第二种:MysqlCluster

对于数据实时性要求不是特别严格的应用,只需要通过廉价的pcserver来扩展Slave的数量,将读压力分散到多台Slave的机器上面,即可通过分散单台数据库服务器的读压力来解决数据库端的读性能瓶颈,毕竟在大多数数据库应用系统中的读压力要比写压力大的多。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似的方案解决数据库瓶颈问题。    第二种:MysqlCluster

  MySQLCluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDBCluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。

  由于MySQLCluster架构复杂,部署费时(通常需要DBA几个小时的时间才能完成搭建),而依靠MySQLClusterManager只需一个命令即可完成,但MySQLClusterManager是收费的。并且业内资深人士认为NDB不适合大多数业务场景,而且有安全问题。因此,使用的人数较少。

  第三种:Heartbeat+双主从复制

 heartbeat是linux-HA工程的一个组件,heartbeat最核心的包括两个部分:心跳监测和资源接管。在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

  heartbeat是Linux-HA工程的一个组件,heartbeat最核心的包括两个部分:心跳监测和资源接管。在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

  第四种:HeartBeat+DRBD+Mysql

DRBD是通过网络来实现块设备的数据镜像同步的一款开源Cluster软件,它自动完成网络中两个不同服务器上的磁盘同步,相对于binlog日志同步,它是更底层的磁盘同步,理论上DRDB适合很多文件型系统的高可用。

  DRBD是通过网络来实现块设备的数据镜像同步的一款开源Cluster软件,它自动完成网络中两个不同服务器上的磁盘同步,相对于binlog日志同步,它是更底层的磁盘同步,理论上DRDB适合很多文件型系统的高可用。

  第五种:Lvs+keepalived+双主复制

 Lvs是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡。keepalived是一个类似于layer3,4&5交换机制的软件,主要用于主机与备机的故障转移,这是一种适用面很广的负载均衡和高可用方案,最常用于Web系统。

  Lvs是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡。keepalived是一个类似于layer3,4&5交换机制的软件,主要用于主机与备机的故障转移,这是一种适用面很广的负载均衡和高可用方案,最常用于Web系统。

  第六种:MariaDBGalera

MariaDBGaleraCluster是一套在mysqlinnodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去。在数据方面完全兼容MariaDB和MySQL。

  MariaDBGaleraCluster是一套在mysqlinnodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去。在数据方面完全兼容MariaDB和MySQL。

  该架构主要有以下几种特性:

  (1).同步复制Synchronousreplication

  (2).Active-activemulti-master拓扑逻辑

  (3).可对集群中任一节点进行数据读写

  (4).自动成员控制,故障节点自动从集群中移除

  (5).自动节点加入

  (6).真正并行的复制,基于行级

  (7).直接客户端连接,原生的MySQL接口

  (8).每个节点都包含完整的数据副本

  (9).多台数据库中数据同步由wsrep接口实现

  其局限性体现在以下几点:

  (1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insertintomysql.user…将不会被复制的.

  (2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT…将出现不同的结果集.

  (3).在多主环境下LOCK/UNLOCKTABLES不支持,以及锁函数GET_LOCK(),RELEASE_LOCK()…

  (4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。

  (5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOADDATA操作。

  (6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对于集群级别的中止,集群返回死锁错误代码(Error:1213SQLSTATE:40001(ER_LOCK_DEADLOCK)).

  (7).XA事务不支持,由于在提交上可能回滚。

  (8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。

  (9).集群节点建议最少3个。

  (10).如果DDL语句有问题将破坏集群。

  看完MySQL高可用方案后对,现在小编对国内著名的兼容MySQL方案进行一个汇总,具体内容如下:

  1、领先的MySQL咨询公司Percona的PerconaServer

  PerconaServer由领先的MySQL咨询公司Percona发布的一款使用XtraDB存储引擎的数据库产品,由XtraDB存储引擎的原作者开发并基于GPL开源协议发布,它为用户提供了换出MySQL安装并换入PerconaServer产品的能力。PerconaServer能够完全与MySQL兼容,开发者无需更改软件中的任何代码,就可以实现二者的相互迁移。从其官网得知PerconaServer具有高扩展性、高性能、高可靠性、诊断和管理等特征。Percona团队还声明PerconaServer是最接近官方MySQL企业级发行版的版本,因此与其它更改了大量基本核心MySQL代码的分支有所区别。但是,PerconaServer的一个缺点是Percona自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的绝对控制。

  2、MySQL之父又一作品MariaDB

  MariaDB是一个基于Maria存储引擎的MySQL分支版本,它是由MySQL的作者MichaelWidenius创办的公司所开发的免费数据库,并遵循GPLV2开源协议发布。它与Percona产品非常类似,但是试图提供了比标准MySQL更多的性能改进,所以对更多底层代码进行了更改。MariaDB直接利用来自Percona的XtraDB引擎,还提供了MySQL提供的标准存储引擎,即MyISAM和InnoDB。因此,可以将MariaDB视为MySQL的扩展集,它不仅提供MySQL提供的所有功能,还提供其他功能。MariaDB还声称自己是MySQL的替代,因此从MySQL切换到MariaDB时,无需更改任何基本代码即可实现。

  3、四家大型互联网公司的WebScaleSQL

  WebScaleSQL是由Facebook、Google、LinkedIn、Twitter四家公司基于MySQL5.6社区版本改编的MySQL通用分支,且基于GPL开源协议发布。WebScaleSQL是专为大型网络公司打造的一个MySQL定制版本,以应对和解决海量数据所带来的挑战,这是这对MySQL技术的一次飞跃。WebScaleSQL项目是来自这四家公司的MySQL工程师团队的工作成果,由于它是开源的,因此其他感兴趣的个人和公司也能够基于自身的资源和规模进行定制。Facebook还公布了其工程师为WebScaleSQL分支所做出的贡献,包括面向内建测试系统、一套完整的压力测试套件、一个自动化性能测试原型以及修改了MySQL的问题架构代码和性能的改进等。

  4、来自网易的InnoSQL

  InnoSQL是网易开发的MySQL数据库分支版本,遵循GPLV2开源协议发布,项目托管在GitHub。InnoSQL的功能完全兼容MySQL数据库,用户根本感受不到InnoSQL与MySQL数据库之间的差异,但是InnoSQL数据库本身解决了目前MySQL数据库存在的一些问题,如主从数据库同步不一致问题、XA分布式事务丢失、多线程连接性能减弱等各类问题。InnoSQL具有高性能、高可用性、易于运维与管理、开源等特点。使用InnoSQL能够保证数据复制的正常运行、软硬件资源的最大利用化、高并发线程下的数据库稳定运行。据相关人士测试,在使用flashcache特性的情况下,InnoSQL的速度是普通Mysql的5到6倍,是FacebookMySQLflashcache的2到3倍。

  5、多主站功能的MySQL/Galera

  MySQL/Galera是MySQL的一个分支版本,且基于GPL开源协议发布。MySQL/Galera基于InnoDB存储引擎实现,可用于创建同步的多主站MySQL(InnoDB)集群。MySQL/Galera具有真正的多主站功能,所以相同的表可以在不同的节点中同时进行修改。MySQL/Galera还具有高可用性、已提交的事务从不会丢失、读写操作能够根据需要进行随意扩展、自动删除故障节点、自动加入节点、行级别的并发复制以及触发、存储过程和用户自定义函数都是透明的特征。

  除了以上兼容标准MySQL的开源方案外,还有前Facebook工程师创办的号称是世界上最快的分布式关系型数据库MemSQL以及Amazon最近出品的企业级关系数据库Aurora等未开源方案。

  小编结语:

  更多内容尽在课课家教育!

赞(23)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程