百度免费校园网站建设,新闻发稿平台有哪些,wordpress 4.5 多站点,网站 实名认证集群的好处 高可用性#xff1a;故障检测及迁移#xff0c;多节点备份。
可伸缩性#xff1a;新增数据库节点便利#xff0c;方便扩容。
负载均衡#xff1a;切换某服务访问某节点#xff0c;分摊单个节点的数据库压力。
集群要考虑的风险 网络分裂#xff1a;群集还…集群的好处 高可用性故障检测及迁移多节点备份。
可伸缩性新增数据库节点便利方便扩容。
负载均衡切换某服务访问某节点分摊单个节点的数据库压力。
集群要考虑的风险 网络分裂群集还可能由于网络故障而拆分为多个部分每部分内的节点相互连接但各部分之间的节点失去连接。
脑裂导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情况可能导致数据不一致并且无法修复例如当两个数据库节点独立更新同一表上的同一行时。
[toc] 一mysql原厂出品
1MySQL Replication
mysql复制MySQL Replication是mysql自带的功能。 原理简介 主从复制是通过重放binlog实现主库数据的异步复制。即当主库执行了一条sql命令那么在从库同样的执行一遍从而达到主从复制的效果。在这个过程中master对数据的写操作记入二进制日志文件中(binlog)生成一个 log dump 线程用来给从库的 i/o线程传binlog。而从库的i/o线程去请求主库的binlog并将得到的binlog日志写到中继日志relaylog中从库的sql线程会读取relaylog文件中的日志并解析成具体操作通过主从的操作一致而达到最终数据一致。 技术图片 MySQL Replication一主多从的结构主要目的是实现数据的多点备份没有故障自动转移和负载均衡。相比于单个的mysql一主多从下的优势如下 如果让后台读操作连接从数据库让写操作连接主数据库能起到读写分离的作用这个时候多个从数据库可以做负载均衡。
可以在某个从数据库中暂时中断复制进程来备份数据从而不影响主数据的对外服务如果在master上执行backup需要让master处于readonly状态这也意味这所有的write请求需要阻塞。
就各个集群方案来说其优势为 主从复制是mysql自带的无需借助第三方。
数据被删除可以从binlog日志中恢复。
配置较为简单方便。
其劣势为 从库要从binlog获取数据并重放这肯定与主库写入数据存在时间延迟因此从库的数据总是要滞后主库。
对主库与从库之间的网络延迟要求较高若网络延迟太高将加重上述的滞后造成最终数据的不一致。
单一的主节点挂了将不能对外提供写服务。
2MySQL Fabirc
mysql织物MySQL Fabirc是mysql官方提供的。 这是在MySQL Replication的基础上增加了故障检测与转移自动数据分片功能。不过依旧是一主多从的结构MySQL Fabirc只有一个主节点区别是当该主节点挂了以后会从从节点中选择一个来当主节点。 就各个集群方案来说其优势为 mysql官方提供的工具无需第三方插件。
数据被删除可以从binlog日志中恢复。
主节点挂了以后能够自动从从节点中选择一个来当主节点不影响持续对外提供写服务。
其劣势为 从库要从binlog获取数据并重放这肯定与主库写入数据存在时间延迟因此从库的数据总是要滞后主库。
对主库与从库之间的网络延迟要求较高若网络延迟太高将加重上述的滞后造成最终数据的不一致。
2014年5月推出的产品数据库资历较浅应用案例不多网上各种资料相对较少。
事务及查询只支持在同一个分片内事务中更新的数据不能跨分片查询语句返回的数据也不能跨分片。
节点故障恢复30秒或更长采用InnoDB存储引擎的都这样。
3MySQL Cluster
mysql集群MySQL Cluster也是mysql官方提供的。 MySQL Cluster是多主多从结构的 就各个集群方案来说其优势为 mysql官方提供的工具无需第三方插件。
高可用性优秀99.999%的可用性可以自动切分数据能跨节点冗余数据其数据集并不是存储某个特定的MySQL实例上而是被分布在多个Data Nodes中即一个table的数据可能被分散在多个物理节点上任何数据都会在多个Data Nodes上冗余备份。任何一个数据变更操作都将在一组Data Nodes上同步以保证数据的一致性。
可伸缩性优秀能自动切分数据方便数据库的水平拓展。
负载均衡优秀可同时用于读操作、写操作都都密集的应用也可以使用SQL和NOSQL接口访问数据。
多个主节点没有单点故障的问题节点故障恢复通常小于1秒。
其劣势为 架构模式和原理很复杂。
只能使用存储引擎 NDB 与平常使用的InnoDB 有很多明显的差距。比如在事务其事务隔离级别只支持Read Committed即一个事务在提交前查询不到在事务内所做的修改外键虽然最新的NDB 存储引擎已经支持外键但性能有问题因为外键所关联的记录可能在别的分片节点表限制上的不同可能会导致日常开发出现意外。点击查看具体差距比较
作为分布式的数据库系统各个节点之间存在大量的数据通讯比如所有访问都是需要经过超过一个节点至少有一个 SQL Node和一个 NDB Node才能完成因此对节点之间的内部互联网络带宽要求高。
Data Node数据会被尽量放在内存中对内存要求大而且重启的时候数据节点将数据load到内存需要很长时间。
官方的三兄弟的区别对比如下图所示 技术图片 二mysql第三方优化
4MMM
MMM是在MySQL Replication的基础上对其进行优化。 MMMMaster Replication Manager for MySQL是双主多从结构这是Google的开源项目使用Perl语言来对MySQL Replication做扩展提供一套支持双主故障切换和双主日常管理的脚本程序主要用来监控mysql主主复制并做失败转移。 技术图片
注意这里的双主节点虽然叫做双主复制但是业务上同一时刻只允许对一个主进行写入另一台备选主上提供部分读服务以加速在主主切换时刻备选主的预热。 就各个集群方案来说其优势为 自动的主主Failover切换一般3s以内切换备机。
多个从节点读的负载均衡。
其劣势为 无法完全保证数据的一致性。如主1挂了MMM monitor已经切换到主2上来了而若此时双主复制中主2数据落后于主1即还未完全复制完毕那么此时的主2已经成为主节点对外提供写服务从而导致数据不一。
由于是使用虚拟IP浮动技术类似Keepalived故RIP真实IP要和VIP虚拟IP在同一网段。如果是在不同网段也可以需要用到虚拟路由技术。但是绝对要在同一个IDC机房不可跨IDC机房组建集群。
5MHA
MHA是在MySQL Replication的基础上对其进行优化。 MHAMaster High Availability是多主多从结构这是日本DeNA公司的youshimaton开发主要提供更多的主节点但是缺少VIP虚拟IP需要配合keepalived等一起使用。 要搭建MHA要求一个复制集群中必须最少有三台数据库服务器一主二从即一台充当master一台充当备用master另外一台充当从库。 技术图片 就各个集群方案来说其优势为 可以进行故障的自动检测和转移
具备自动数据补偿能力在主库异常崩溃时能够最大程度的保证数据的一致性。
其劣势为 MHA架构实现读写分离最佳实践是在应用开发设计时提前规划读写分离事宜在使用时设置两个连接池即读连接池与写连接池也可以选择折中方案即引入SQL Proxy。但无论如何都需要改动代码 关于读负载均衡可以使用F5、LVS、HAPROXY或者SQL Proxy等工具只要能实现负载均衡、故障检查及备升级为主后的读写剥离功能即可建议使用LVS
6Galera Cluster
Galera Cluster是由Codership开发的MySQL多主结构集群这些主节点互为其它节点的从节点。不同于MySQL原生的主从异步复制Galera采用的是多主同步复制并针对同步复制过程中会大概率出现的事务冲突和死锁进行优化就是复制不基于官方binlog而是Galera复制插件重写了wsrep api。 异步复制中主库将数据更新传播给从库后立即提交事务而不论从库是否成功读取或重放数据变化。这种情况下在主库事务提交后的短时间内主从库数据并不一致。 同步复制时主库的单个更新事务需要在所有从库上同步 更新。换句话说当主库提交事务时集群中所有节点的数据保持一致。 对于读操作从每个节点读取到的数据都是相同的。对于写操作当数据写入某一节点后集群会将其同步到其它节点。 技术图片 就各个集群方案来说其优势为 多主多活下可对任一节点进行读写操作就算某个节点挂了也不影响其它的节点的读写都不需要做故障切换操作也不会中断整个集群对外提供的服务。
拓展性优秀新增节点会自动拉取在线节点的数据当有新节点加入时集群会选择出一个Donor Node为新节点提供数据最终集群所有节点数据一致而不需要手动备份恢复。
其劣势为 能做到数据的强一致性毫无疑问也是以牺牲性能为代价。
三依托硬件配合
不同主机的数据同步不再依赖于MySQL的原生复制功能而是通过同步磁盘数据来保证数据的一致性。 然后处理故障的方式是借助Heartbeat它监控和管理各个节点间连接的网络并监控集群服务当节点出现故障或者服务不可用时自动在其他节点启动集群服务。 7heartbeatSAN
SAN共享存储主库从库用的一个存储。SAN的概念是允许存储设施和解决器服务器之间建立直接的高速连接通过这种连接实现数据的集中式存储。 技术图片
就各个集群方案来说其优势为 保证数据的强一致性 与mysql解耦不会由于mysql的逻辑错误发生数据不一致的情况
其劣势为 SAN价格昂贵
8heartbeatDRDB
DRDB这是linux内核板块实现的快级别的同步复制技术。通过各主机之间的网络复制对方磁盘的内容。当客户将数据写入本地磁盘时还会将数据发送到网络中另一台主机的磁盘上这样的本地主机(主节点)与远程主机(备节点)的数据即可以保证明时同步。 技术图片
就各个集群方案来说其优势为 相比于SAN储存网络价格低廉 保证数据的强一致性
与mysql解耦不会由于mysql的逻辑错误发生数据不一致的情况
其劣势为 对io性能影响较大 从库不提供读操作
四其它
9Zookeeper proxy
Zookeeper使用分布式算法保证集群数据的一致性使用zookeeper可以有效的保证proxy的高可用性可以较好的避免网络分区现象的产生。 技术图片
就各个集群方案来说其优势为 扩展性较好可以扩展为大规模集群。
缺其劣势为 搭建Zookeeper 集群在配置一套代理整个系统的逻辑变得更加复杂。
10Paxos
分布式一致性算法Paxos 算法处理的问题是一个分布式系统如何就某个值决议达成一致。这个算法被认为是同类算法中最有效的。Paxos与MySQL相结合可以实现在分布式的MySQL数据的强一致性。