MySQL高可用方案

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

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

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

第二种:Mysql Cluster

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 mysql 服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。 由于MySQL Cluster架构复杂,部署费时(通常需要DBA几个小时的时间才能完成搭建),而依靠 MySQL Cluster Manager 只需一个命令即可完成,但 MySQL Cluster Manager 是收费的。并且业内资深人士认为NDB 不适合大多数业务场景,而且有安全问题。因此,使用的人数较少。

第三种:Heartbeat+双主从复制

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

第四种:HeartBeat+DRBD+Mysql

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

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

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

第六种:MariaDB Galera

MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到 各个节点上去。在数据方面完全兼容 MariaDB 和 MySQL。 该架构主要有以下几种特性: (1).同步复制 Synchronous replication (2).Active-active multi-master 拓扑逻辑 (3).可对集群中任一节点进行数据读写 (4).自动成员控制,故障节点自动从集群中移除 (5).自动节点加入 (6).真正并行的复制,基于行级 (7).直接客户端连接,原生的 MySQL 接口 (8).每个节点都包含完整的数据副本 (9).多台数据库中数据同步由 wsrep 接口实现 其局限性体现在以下几点: (1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的. (2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集. (3).在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()… (4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。 (5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。 (6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对 于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)). (7).XA事务不支持,由于在提交上可能回滚。 (8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。 (9).集群节点建议最少3个。 (10).如果DDL语句有问题将破坏集群。

出处:http://blog.csdn.net/u013399093/article/details/70597712

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

原文发布于微信公众号 - IT技术精选文摘(ITHK01)

原文发表时间:2017-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

时序数据库InfluxDB之备份和恢复策略

首先创建一个数据库 yhhblog, 里面包含两个measurement,对应的数据如下

3982
来自专栏Java后端生活

MySQL(一)数据库的简单介绍

1898
来自专栏腾讯云数据库(TencentDB)

MySQL 8.0 版本功能变更介绍

作者介绍:朱强,腾讯云数据库高级工程师,主要负责腾讯云数据库MySQL的开发和运营,曾就职于华为和网宿,在存储、文件系统开发有丰富经验。

1.4K56
来自专栏数据和云

DB2 Vs MySQL系列 | 体系架构对比

前些日子,我们做了DB2 VS MySQL的数据类型的对比,今天我们将体系架构的对比分享给大家,让大家对这两类数据库有更深刻的认识。 ? DB2体系结构 ? ?...

3245
来自专栏散尽浮华

Mysql优化系列(0)--总结性梳理

对于一个网站来说,在运行很长一段时间后,数据库瓶颈问题会越来越暴露出来。作为运维人员,对数据库做必要的优化十分重要! 下面总结以往查阅到的以及自己工作中的一些优...

2208
来自专栏吴生的专栏

谈谈MySQL的事务隔离级别

这篇文章能够阐述清楚跟数据库相关的四个概念:事务、数据库读现象、隔离级别、锁机制  

45510
来自专栏性能与架构

InnoDB 日志文件大小设为多大合适?

InnoDB 日志文件的作用 Innodb 数据表崩溃后,再次启动时,MySQL会扫描日志文件,看哪些记录不在表空间中,对其进行 redo 操作,从而完成数据恢...

84911
来自专栏容器云生态

Docker监控方案(TIG)的研究与实践之Influxdb

前言: Influxdb也是有influxdata公司(www.influxdata.com )开发的用于数据存储的时间序列数据库.可用于数据的时间排列。在整个...

3238
来自专栏我是攻城师

Elasticsearch的Mapping之元数据类型

3186
来自专栏数据库

浅谈MySQL的事务隔离级别

推荐阅读 微服务: springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 希望这篇文章能够阐...

2208

扫码关注云+社区

领取腾讯云代金券