精华内容
下载资源
问答
  • 本资源为kubernetes集群部署mysql高可用读写分离数据库,内含所有需要的yaml文件,有需要的可进行下载
  • 主要介绍了keepalived+haproxy实现MySQL高可用负载均衡的配置方法,通过这两个软件可以有效地使MySQL脱离故障及进行健康检测,需要的朋友可以参考下
  • MySQL高可用架构设计最佳实践,详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等 详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等。 目录 01MySQL复制功能概述 02MySQL二进制日志 ...
  • 该文档详细的想你介绍如何一步一步搭建mysql innodb cluster +mysqlrouter 实现mysql高可用,小白也可以按照文档搭建高可用架构
  • MySQL高可用架构演进-吴炳锡。 1. 什么是高可用 2. 第一代传统复制: MHA及使用架构 3. 第二代基于GTID复制:GTID+Binlog server At Booking & Facebook 4. 第三代增强半同步复制:GTID+增强半同步及多IDC架构及...
  • MySQL高可用方案大全

    2016-05-17 12:26:18
    Lvs+Keepalived+MySQL 单点写入主主同步高可用方案 Lvs+Keepalived+MySQL 单点写入读负载均衡主主同步高可用方案 Heartbeat高可用MySQL主主同步方案 Heartbeat+DRBD+MySQL高可用方案 MMM高可用MySQL方案
  • Mysql高可用一直是mysql业界不断讨论的热点问题,其中涉及的东西比较多,可供选择的方案也相当多,如何选择适合公司的mysql高可用方案呢,首先我们需要了解自己公司项目的业务特性,了解在线系统中那些东西会影响...
  • Mysql高可用架构集群--MyCat集群部署HAProxy+MyCat Mysql高可用 MyCat HAProxy
  • MySQL高可用负载均衡集群部署
  • 基于Zookeeper+MHA的mysql高可用架构设计,基于Zookeeper+MHA的mysql高可用架构设计。
  • MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql高可用。MMM不仅能提供浮动IP的功能,如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器...
  • Mycat高可用以及mycat实现mysql高可用以及mycat的mysql主从配置,负载均衡,读写分离,以及如何验证查询sql具体执行在主库还是从库上
  • 基于mycat的mysql高可用读写分离,适合mysql进阶。比较实用的技术。
  • MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据。完整分享了基于 MHA 方式实现 Mysql高可用的技术实战,希望对您有所帮助。
  • 金融行业MySQL高可用实践 演讲人爱可生 明溪源 全球敏捷运维峰会广州站 1 金融行业MySQL高可用方案选型 2 爱可生金融级MySQL高可用方案 目 录 CONTENTS 3 某大型国有银行MySQL高可用实践 2 全球敏捷运维峰会广州站 ...
  • MySQL高可用

    千次阅读 2020-05-07 14:42:22
    我们一般通过备份的方式来解决数据丢失问题,通过复制来解决MySQL高可用问题。 备份 备份的方法不同可以将备份分为: Hot Backup(热备,在线备份):在数据运行过程中进行备份,对数据库操作没有影响。 Cold ...

    服务在运行过程中存在很多意外情况,如:如服务器宕机、磁盘损坏、RAID卡损坏等。如何保证数据库在服务发生意外的情况下数据不丢失呢?服务还能继续提供服务呢?

    我们一般通过备份的方式来解决数据丢失问题,通过复制来解决MySQL的高可用问题。

    备份

    备份的方法不同可以将备份分为:

    • Hot Backup(热备,在线备份):在数据运行过程中进行备份,对数据库操作没有影响。
    • Cold Backup(冷备,离线备份):在数据停止情况下,直接拷贝数据库物理文件。
    • Warm Backup(温备):在数据运行过程中进行,但是会对当前数据库的操作有所影响,如加一个全局读锁以保证备份数据的一致性。

    按照备份后文件的内容,备份又可以分为:

    • 逻辑备份:是指备份出的文件内容是可读的,一般是文本文件。内容一般是由一条条SQL语句,或者是表内实际数据组成。一般适用于数据库的升级、迁移等工作。但其缺点是恢复所需要的时间往往较长。
    • 裸文件备份:是指复制数据库的物理文件,既可以是在数据库运行中的复制(如ibbackup、xtrabackup这类工具),也可以是在数据库停止运行时直接的数据文件复制。这类备份的恢复时间往往较逻辑备份短很多。

    若按照备份数据库的内容来分,备份又可以分为:

    • 完全备份:完全备份是指对数据库进行一个完整的备份。
    • 增量备份:增量备份是指在上次完全备份的基础上,对于更改的数据进行备份。
    • 日志备份:日志备份主要是指对MySQL数据库二进制日志的备份,通过对一个完全备份进行二进制日志的重做(replay)来完成数据库的point-in-time的恢复工作。

    复制

    复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用,原理如下:

    image.png

    1. 主服务器(master)把数据更改记录到二进制日志(binlog)中,然后通过binary log dump线程将二进制文件推送到从服务器。
    2. 从服务器(slave)通过I/O线程,把主服务器的二进制日志复制到自己的中继日志(relay log)中,中继日志通常会位于os缓存中,所以中继日志的开销很小。
    3. 从服务器通过SQL线程重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性。

    从服务器有2个线程,一个是I/O线程,负责读取主服务器的二进制日志,并将其保存为中继日志;另一个是SQL线程,复制执行中继日志。这里需要特别注意的是,复制是一个异步过程,从服务器数据存在延迟

    MySQL二进制日志文件Binlog有三种格式,StatementRowMixed,所以MySQL的复制也对应有三种方式。

    异步复制

    image.png

    主库执行完Commit后,在主库写入Binlog日志后即可成功返回客户端,无需等Binlog日志传送给从库。

    半同步复制

    image.png

    在 MySQL5.5之前,MySQL的复制是异步操作,主库和从库的数据之间存在一定的延迟,这样存在一个隐患:当在主库上写人一个事务并提交成功,而从库尚未得到主库推送的Binlog日志时,主库宕机了,例如主库可能因磁盘损坏、内存故障等造成主库上该事务 Binlog丢失,此时从库就可能损失这个事务,从而造成主从不一致。

    而半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于主从网络RTT(往返时延),以插件 semisync_master/semisync_slave 形式存在。

    集群

    使用集群可以提高MySQL服务器的可用性和性能,MySQL服务支持多种集群方案。

    MySQL Cluster

    由Mysql本身提供,优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以不推荐。

    DRBD磁盘网络镜像

    Distributed Replicated Block Device,其实现方式是通过网络来镜像整个设备(磁盘)。它允许用户在远程机器上建立一个本地块设备的实时镜像,与心跳链接结合使用,也可看做一种网络RAID。

    优势:软件功能强大,数据可在底层快设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。IO操作保持顺序,可满足数据库对数据一致性的苛刻要求。

    但非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两者相互矛盾,无法适用于性能和可靠性要求都比较苛刻的环境,维护成本高于MySQL Replication。另外,DRBD也是官方推荐的可用于MySQL高可用方案之一,所以这个大家可根据实际环境来考虑是否部署。

    MySQL Replication

    MySQL的复制上在实际应用场景中使用最多的一种方案,主要优势是成本低,实现起来比较简单,缺点是从服务器存在一定的延迟。

    常用架构

    一主多从,提高系统的读性能

    image.png

    一主一从和一主多从是最常见的主从架构,实施起来简单并且有效,主要用来实现读写分离,提升度的性能,降低主库压力,在主库出现异常宕机的情况下,可以把一个从库切换为主库继续提供服务。

    多级复制

    image.png

    MySQL的复制是主库推送Binlog到从库,在上面一主多从的情况下,主库的I/O和网络压力都会随着从库的增加而增大。多级而使用多级复制可以很好的解决这个问题,但是随着从库的链路的增加从库的数据延迟也会随着增大。

    双主复制/Dual Master

    image.png

    其实就是master1和master2互为主从关系,这样任何一方所做的变更,都会通过复制应用到另外一方的数据库中。client客户端的写请求都访问主库 Master1,而读请求可以选择访问主库Master1或 Master2。

    双主多级复制架构

    image.png

    双主复制还能和主从复制联合起来使用,在 Master2库下配置从库 Slave1、 Slave2等,这样即可通过从库Slave等来分担读取压力。

    展开全文
  • mysql高可用实战

    2018-06-01 09:10:35
    mysql高可用的部署方案, galera 集群以及 pxc方案的部署文档。
  • DRBD+Mysql实现Mysql高可用
  • 第5章 MySQL高可用架构设计 百度网盘下载 视频。。 什么是高可用架构,MMM架构介绍,演示等等。。。
  • MySQL高可用解决方案_社区 MySQL高可用解决方案_社区 MySQL高可用解决方案_社区
  • MySQL高可用方案搭建手册,真的得好好练练,要非常熟练,不需要看资料直接上手,这得熟练。
  • 阿里mysql 高可用方案

    2018-06-21 16:15:57
    阿里mysql 高可用方案, 内部包含了阿里TMHA的实现细节。
  • 【27】基于MyCat的MySQL高可用读写分离集群实战课程下载【No215】基于MyCat的MySQL高可用读写分离集群实战课程下载 .txt
  • 明溪源介绍 金融行业MySQL高可用实践 1)金融行业MySQL高可用方案选型 a)MySQL Replication – MHA (MySQL5.7不支持) b)MGR + 轻量级中间件MySQL Router统一访问 2)爱可生金融级MySQL高可用方案 3)某大行核心...
  • 该文档前半部分是一步一步怎么配置mysql_router,然后测试,后半部分是一步一步配置常用的MHA高可用工具和测试,文档详细清楚,基本上按照文档步骤一步步做下去都能配置成功
  • 性能MySQL - 本书荣获2009年Jolt图书大奖,是不可多得的分享MySQL实用经验的图书。...高可用MySQL - 主要讲解真实环境下如何使用mysql 的复制、集群和监控特性,揭示mysql 可靠性和高可用性的方方面面。
  • MySQL高可用系列(一)简单主从复制 MySQL高可用系列(一)——简单主从复制 MySQL主从复制简单背景 一、环境说明 二、数据库安装 1、下载MariaDB10.1.24二进制通用包 2、创建用于运行MySQL服务的用户和用户组、数据...
  • MySQL解决方案工程师总结,MySQL高可用解决方案,全部使用MySQL官方社区版本。
  • mysql高可用方案

    千次阅读 2019-01-04 20:11:08
    前一篇转载啦mysql集群方案 https://blog.csdn.net/nawenqiang/article/details/85051623 接下来继续讲解其他方案。   一 、引子 笔者刚开始进入公司的时候,主要是忙于分布式MySQL系统----MyShard的构建,...

    前一篇转载啦mysql集群方案

    https://blog.csdn.net/nawenqiang/article/details/85051623

    接下来继续讲解其他方案。

     

    一 、引子

    笔者刚开始进入公司的时候,主要是忙于分布式MySQL系统----MyShard的构建,公司使用了大量的IDC机房,基于这种网络特点,MyShard设计当初完全是为了是一套支持Multi-Master操作的高可用性的分布式数据库,可以在多个机房中部署的业务上提供快速的写操作,实现了分布式高可用存储能力。

    在业务增长期,MyShard解决了公司的很多大型的数据库存储业务,随着公司业务逐渐稳定下来,分布式存储需求越来越少。而公司却有大量的小业务以及不断尝试的各种新业务,需要越来越多的小数据量的数据库存储。

    所以这时候发现,之前的工作方向一直集中在公司的10%不到的业务上,而公司的90%以上的存储需求是MySQL的需求,目前有好上千套的MySQL在给不同的业务提供服务。而在当时,不管是MySQL的交付还是管理都比较原始,极端情况下,我们需要业务申请方自己提供服务器来部署MySQL,所以交付的周期也很长。而在高可用方面,都是需要业务方自己去处理主从切换等等问题,出现主数据库故障的时候,往往需要业务方自己去修改配置文件,重启进程,增加了服务的中断时间。

    二、为什么没有采用开源的高可用方案

    业界比较流行的MySQL的高可用方案主要有:MMM和MHA两种,对这个方案的分析网上有很多,MHA是优先选取的方案。

    简单介绍下MHA

    MHA即Master High Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个MySQL高可用管理工具,目的在于维持Master主库的高可用性及数据的一致性。
    MHA目前在 MySQL高可用方面是一个相对成熟的解决方案且在大量的企业得到广泛使用。其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个Slave数据库作为新的Master,并将其它Slave指向它。
        当Master故障时,MHA会从多个Slave中随机选择一个充当新的Master,也可在配置文件中指定某一个Slave优先成为Master。
    其架构如下,请参考:

    对上图做如下简单解释,请参考:
    1.在MHA架构中读写分离,最佳实践是在应用开发设计时提前规划读写分离事宜,在使用时设置两个连接池,即读连接池与写连接池,也可以选择折中方案即引入SQL Proxy;
    2.关于读负载均衡可以使用F5、LVS、HAPROXY或者SQL Proxy等工具,只要能实现负载均衡、故障检查及备升级为主后的读写剥离功能即可,建议使用LVS;
    3.MHA Manager Node 主要负责主库在crash时将bin log完整同步到slave库、监控主备库的状态及切换。
     

    clipboard.png

    当master出现故障时,通过对比slave之间I/O线程读取master binlog的位置,选取最接近的slave做为latestslave。其它slave通过与latest slave对比生成差异中继日志。在latest slave上应用从master保存的binlog,同时将latest slave提升为master。最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制。

    在MHA实现Master故障切换过程中,MHA Node会试图访问故障的master(通过SSH),如果可以访问(不是硬件故障,比如InnoDB数据文件损坏等),会保存二进制文件,以最大程度保证数据不丢失。MHA和半同步复制一起使用会大大降低数据丢失的危险。

    MHA的优点

    MHA提供了一个通用的框架,我们可以自定义判断和切换操作的步骤;而且,MHA的代码开源,我们甚至可以进行二次开发,这都为高可用系统提供了很好的扩展 能力。

    MHA的缺点

    • 需要在各个节点间打通ssh信任,这对某些公司安全制度来说是个挑战,因为如果某个节点被黑客攻破的话,其他节点也会跟着遭殃;
    • 自带提供的脚本还需要进一步补充完善,当然了,一般的使用还是够用的。
    • 虽然一个MHA Manger可以管理多个集群,但是没有大规模集群的经验。
    • 高可用依赖于vip的方案,譬如采用keepalive来达到vip的切换,但是keepalive会限制切换的主机必须在一个网段,对于跨机房不在一个网段的服务器来说,就无法支持了。在大规模为每个MySQL集群安排一个vip也是难以实现的。keepalive在一个网段内,部署多套也会互相影响。

    为什么不采用

    我们公司的数据库的特点:

    • 数据库多机房部署
    • 数据库集群规模上千
    • 安全性考虑

    三、四层代理----RDS项目

    除了MMM和MHA之外,MySQL还可以采用代理来实现高可用,MySQL代理会比MHA方案更适合大规模的使用。

    当时阿里和腾讯分别推出了rds和cdb。我们研究了腾讯的cdb方案,cdb是基于TGW也即是NAT的模式实现了4层代理模型,来达到MySQL的高可用以及负载均衡功能。

    但是TGW方案有个比较大的问题就是需要修改MySQL协议,一旦修改MySQL协议,所有的客户端(各种语言的驱动)都需要进行修改,这在推广上是非常难的。

    所以我们采用了一种折中的方案,启动了RDS项目,主要用于提供MySQL内部云服务,其中高可用方案如下图所示,采用了iptables的NAT来实现MySQL的代理路由功能。

    clipboard.png

    4层代理层基本实现原理

    业务方首先连接到代理服务器上,由于代理服务器上有NAT目标地址转换规则,所以会转到目标MySQL主机上,同时从MySQL主机回包到代理服务器后,由于有NAT源地址转换规则,又会转发回业务方,从而实现了代理功能。

    下面举例说明我们如何为一个业务启动RDS四层代理:
    我们先准备好以下几台机器:

    客户端:172.26.14.16
    代理 :172.26.82.45 启动业务代理端口20000
    目标机器:172.26.82.7 部署MySQL 端口号为3306

    在代理机器上设置规则:

    1、打开forward
    echo 1 > /proc/sys/net/ipv4/ip_forward

    2、设置从客户端请求的目标地址和原地址转换规则
    iptables -t nat -A PREROUTING -p tcp -s 172.26.14.16 --dport 3306 -j DNAT --to-destination 172.26.82.7:20000
    iptables -t nat -A POSTROUTING -p tcp -d 172.26.82.7 --dport 20000 -j SNAT --to-source 172.26.82.45

    3、设置好规则之后,就可以通过mysql来连接到代理的20000端口了。
    mysql -utest -ptest -h172.26.82.45 -P20000
    这时候,实际访问的是172.26.82.7上3306端口的MySQL数据库。

    四、数据库配置中心----代理层(7层代理)

    笔者之前一直都在公司云存储中心工作,由于种种原因,2015年年中调到了运维部的数据库团队,在这里才发现,rds项目其实只是在数据库运维平台中走出了很小的一步。为了提供全方位的数据库云服务平台,于是我们开始打造了全新的数据库配置中心,同时提供MySQL、Redis、Mongodb等数据库和缓存内部云服务。

    与此同时,之前在rds项目中实现的4层代理的缺点也越来越明显:

    • 1、只能使用MySQL主库,M-M-S结构是的MySQL资源极其浪费;
    • 2、只能在单机房使用,跨机房访问效率非常低;
    • 3、运维功能太少,由于采用iptables,在代理机器上无法看到任何的连接信息,也无法捕获任何业务访问的指标,甚至于连接信息都无法获取;

    基于以上几点原因,笔者决定开发基于7层应用层的MySQL代理层平台,系统的具体架构如下所示:

    clipboard.png

    由于代理层是自己实现的应用程序,所以笔者在代码中很容易就实现以下几个核心的功能:

    1、授权认证模型;
    2、SQL拦截;
    3、负载均衡;
    4、读写分离;
    5、高可用;
    6、大SQL隔离;

    除了这些特性以外,基于我们公司的多机房特点,笔者给代理层添加了机房感知能力。在整个数据库配置中心,每个代理层程序、每个MySQL实例都有机房属性。有了机房属性,代理层可以实现自动就近访问MySQL的能力,从而提高了系统性能同时,简化了业务程序的部署。

    一个典型的业务部署例子如下:

    clipboard.png

    从上图可以看出,应用程序永远也不再需要考虑多机房高可用、负载均衡、读写分离的问题。而且由于代理层实现了高可用功能,一旦发现主写MySQL故障,会自动把主读切换为主写,从而在秒级实现FAILOVER。

    平台级设计--多租户模式

    由于我们的代理层采用了平台级的设计,上图中的代理层可以连接多套业务(MySQL集群),新的业务只需要在zookeeper配置好,代理层就会自动感知,业务方马上能够在代理层上使用,而不需要为每个业务部署自己的独立的代理层,从而极大的减少了运维成本。

    除此以外采用代理层还为数据库云服务平台带来不少好处:

    • 业务方连接代理机器和相应的端口,底层MySQL主从切换可以对业务方透明;
    • MySQL实例维护或者迁移可以对业务方透明(一键迁移);
    • MySQL业务扩容/缩容也对业务透明(一键扩缩容);

    代理层上线推广到现在,已经有好几百套的MySQL集群跑在上面了,MySQL的高可用平台成功落地。

    五、后记

    Mongodb相对于MySQL的一个很大的优势就是高可用性,MySQL的高可用方案很多,但是完美的方式不多,代理层是在我们公司成功实施的一套平台,希望有机会能和业界一起探讨和学习,实现更多完美的解决方案。

    代理层虽然已经在公司大规模使用,但是还有很多发展和改善的空间,随着MySQL 5.6和MySQL 5.7的广泛应用,GTID已经非常成熟,由于公司内部使用场景少,代理层的切换还没有实现GTID模式的切换,所以下一阶段,笔者会考虑实现基于GTID的高可用模式。

    Cobar

    Cobar是阿里巴巴B2B部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。Cobar的主要功能如下:
    1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分;
    2. Cobar也支持将不同的表放入不同的库;
    3.多数情况下,会将以上两种方式混搭使用;
    4. Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作。

    对上图做如下简单解释,请参考:
    1.Cobar同时支持Cluster集群功能和Sharding数据切片功能,一般根据实际需要会采用混搭的方式;
    2.Cobar实现了对应用请求的负载均衡、后端节点的健康检查、SQL切分及查询结果集的聚合等功能;
    3.MySQL主备库应设置成主主双向同步方式即须将MySQL M01与MySQL S01设置成主主同步模式。
     


    转自 https://www.jianshu.com/p/bc50221972ca

    转自 https://blog.csdn.net/u012974916/article/details/53118941

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 310,599
精华内容 124,239
关键字:

mysql高可用

mysql 订阅