基于MySQL双主的高可用解决方案理论及实践

网上科普有关“基于MySQL双主的高可用解决方案理论及实践”话题很是火热,小编也是针对基于MySQL双主的高可用解决方案理论及实践寻找了一些与之相关的一些信息进行分析,如果能碰...

网上科普有关“基于MySQL双主的高可用解决方案理论及实践”话题很是火热,小编也是针对基于MySQL双主的高可用解决方案理论及实践寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段。本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求、各高可用技术特点对比、实施、测试等过程进行整理,完善Mysql高可用方案,同时为后续开展分布式数据库相关测试做相应准备。

存储复制技术: 传统IOE架构下,常用高可用方案,靠存储底层复制技术实现数据的一致性,优点数据安全性有保障,限制在于是依赖存储硬件,实施成本较高。

keepalived+双主复制: 两台MySQL互为主从关系,即双主模式,通过Keepalived配置虚拟IP,实现当其中的一台数据库故障时,自动切换VIP到另外一台MySQL数据库,备机快速接管业务来保证数据库的高可用。

MHA: MHA部署在每台mysql服务器上,定时探测集群中的master节点,当master出现故障时,它可以自动将最新的slave提升为新的master,然后将所有其他的slave重新指向新的master,优点在最大程度保证数据的一致性的前提下实现快速切换,最少需要3台服务器,存在数据丢失的可能性。

PXC: Percona eXtra Cluster是Percona基于galera cluster封装的集群方案。不同于普通多主复制,PXC保障强一致性和实时同步,故障切换更快。但是也需要3个节点,配置相对复杂,对性能也稍有影响。

除了上述方案外,还有MMM、Heartbeat+DRBD等高可用方案,此处不做详细介绍。

综合评估下,本次实施采用了 keepalived+mysql双主实现数据库同城双机房的高可用。MySQL版本为: 5.7.21。操作系统:Red Hat Enterprise Linux Server 7.3。

配置过程如下:

Mysql-master1: IP地址1 --以下简称master1

Mysql-master2: IP地址2 --以下简称master2

Mysql-vip : VIP地址 --应用连接使用

Mysql复制相关概念描述:

1、 Mysql主从复制图示:

2、 Mysql主从复制过程描述:

(1)master记录二进制日志:在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志。在事务写入二进制日志完成后,master通知存储引擎提交事务。

(2)slave将master的binarylog拷贝到自己的中继日志:首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事务,如果已经同步了master,它会睡眠并等待master产生新的事件。I/O线程将这些事务写入中继日志。

(3)SQL slave thread处理该过程的最后一步:SQL线程从中继日志读取事务,并重放其中的事务而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

主主同步就是两台机器互为主的关系,在任何一台机器上写入都会同步至备端。

为了便于后续数据库服务器的扩展,且在整个复制环境中能够自动地切换,降低运维成本,引入了当前主流的基于Mysql GTID的复制特性,工作原理及优缺点简介如下。

3、 GTID工作原理简介:

(1) master更新数据时,会在事务前产生GTID,一同记录到Binlog日志中。

(2) slave的I/O线程将变更的binlog写入到本地的relay log中。

(3) slave的sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。

(4) 如果有记录说明该GTID的事务已经执行,slave会忽略。

(5) 如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。

(6) 在解析的过程中会判断是否有主键,如果有就用索引,如果没有就用全部扫描。

4、 GTID优点:

(1) 一个事务对应一个唯一的ID,一个GTID在一个服务器上 只会执行一次。(2) GTID是用来替代传统复制的方法,GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置。

(3) 减少手工干预和降低服务故障时间,当主机宕机之后会通过软件从众多的备机中提升一台备机为新的master。

5、 GTID也存在一些限制:

(1) 不支持非事务引擎。

(2) 不支持create table … select 语句复制(主库直接报错)。

(3) 不允许一个sql同时更新一个事务引擎表和非事务引擎表。

(4) 在一个复制组中,必须要求统一开启GTID或者是统一关闭GTID。

(5) 开启GTID需要重启(5.7版本除外)。

(6) 开启GTID后,就不再使用原理的传统复制方式。

(7) 不支持create temporary table 和 drop temporary table语句。

(8) 不支持sql_slave_skip_counter。

前置条件:

主备两个节点使用行内统一的安装部署脚本安装mysql5.7.21介质(略)

Master1端创建应用的数据库(略)

1、 修改MySQL配置文件

参考相关配置规范,分别设置master1、master2的my.cnf文件,

其中server-id参数设置为不同值;

由于后续keepalived会挂起VIP,应用通过VIP连接数据库,为了避免应用程序无法通过VIP访问,需将两个节点的bind-address参数注释掉;

2、 设置master1端自动半同步模式

Mysql的同步模式主要有如下3种:

a. 主从同步复制:数据完整性好,但是性能消耗略高;

b. 主从异步复制:性能消耗低,但容易出现不一致;

c. 主从半自动复制:介于上述两种之间,既保持了数据的完整性,又提高了性能;

基于上述特性,建议采用半自动同步模式,由于后续要配置为双主模式,因此任一节点其角色既为master又为slave,因此相关的master/slave插件要同时配置,过程如下。

(1) 首先查看库是否支持动态加载(默认都支持)

(2) 主从库上分别安装插件

作为主库,安装插件semisync_master.so

作为从库,安装插件semisync_slave.so

(3) 安装完成后,从plugin表中能够看到刚刚安装的插件

(4) 分别打开主从库半同步复制

同时添加到各自的my.cnf中,在后续数据库实例重启时自动加载该配置。

此时查看状态还没有启动

(5) 两个节点分别启动IO进程

(6) 查看半同步状态

3、 将master1设为master2的主服务器

(1)在master1主机上创建授权账户,允许在master2主机上连接

(2)将主库master1数据导出

(3)将master.sql传输到master2上并导入

(4)在master2端将master1设置为自己的主库,并开启slave功能

在master2上查看slave状态

至此master1到master2的主从复制关系已经建立完成。

4、 将master2设为master1的主服务器

在master1上执行

在master1上查看slave状态

1、keepalived相关概念说明:

keepalived是集群管理中保证集群高可用的一个软件解决方案,其功能类似于heartbeat,用来防止单点故障

keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组播(组播地址为224.0.0.18),当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core 、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责 健康 检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。同时为了避免出现脑裂,应关闭防火墙或者开启防火墙但允许接收VRRP协议。

2、keepalived的安装配置

(1)配置本地yum源,在master1和master2两台服务器上安装keepalived的相关依赖包Kernel-devel/openssl-devel/popt-devl等

配置指向rhel-7.5.iso的yum本地源,步骤略

注意:如不知道keepalived需要哪些依赖包,可到下载后的源码解压目录下查看INSTALL 文件内容,安装需要的依赖包,源码安装任何一个软件都要养成查看源码包文档的习惯,比如INSTALL,README,doc等文档,可以获得很多有用的信息。

(2)在两台mysql上解压缩并编译安装keepalived

(3)master1、master2上分别配置keepalived.conf

注意上图红色字体中两个节点配置相同处及差异。

说明:keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域:

· global_defs:主要是配置故障发生时的通知对象以及机器标识。

· vrrp_instance:用来定义对外提供服务的VIP区域及其相关属性。

· virtual_server:虚拟服务器定义

(4)同时两个节点上都需要添加检测脚本

作用:是当mysql停止工作时自动关闭本机的keeplived服务,从而实现将故障主机踢出热备组,因每台机器上keepalived只添加了本机为realserver,所以当mysqld正常启动后,我们还需要手动启动keepalived服务。

(5)分别启动两个节点的keepalived服务

检查两个节点keepalived启动进程

检查两个节点的vip挂载情况

(6)主备机故障切换测试

停止master2的mysql服务,看keepalived 健康 检查程序是否会触发脚本,自动进行故障切换,步骤略

查看master1节点的VIP挂载情况,验证是否实现了自动切换,步骤略

说明在master2服务器的mysql服务发生故障时,触发了脚本,自动完成了切换。

(7)现在我们把master2的mysql服务开起来,并且keepalived的服务也需要启动。

即便master2的mysql服务和keepalived服务都重新开启了,master1仍然是主master了,master2未对主master的权利进行抢夺,说明设置的nopreempt参数生效了,为了保证群集的稳定性,生产环境不允许抢占配置,只有当master1的mysql服务坏掉的时候,master2才会再次成为主master,否则它永远只能当master1的备份。(注:nopreempt一般是在优先级高的mysql上设置)

Sysbench是一个模块化的、跨平台、多线程基准测试工具,可用于评估数据库负载情况,通过sysbench命令配置IP地址、端口号、用户名、密码连接到指定的数据库db1中,创建多个表,并快速插入指定条数的记录,观察主备库同步效率

(1) 下载开源工具sysbench-0.4.12.14.tar.gz,放置在相应目录下并解压

(2) 使用iso配置本地yum源并安装Sysbench如下的依赖包(步骤略):autoconf/automake/cdbs/debhelper(>=9)/docbook-xml/docbook-xsl/libmysqlclient15-dev/libtool/xsltproc

(3) 编译sysbench

编辑配置文件/etc/ld.so.conf中添加mysql lib目录/mysql/app/5.7.21/lib,并执行命令ldconfig生效

(4) 执行sysbench压测

使用sysbench工具向主节点的db1数据库中创建5张表,并且每张表分别插入10万条记录

同时观察备机同步效率

几个重要的参数说明:

B、半自动同步模式、异步模式切换测试

(1) 检查主备同步状态,及同步参数设置

rpl_semi_sync_master_enabled参数表示启用半同步模式;

rpl_semi_sync_master_timeout参数单位为毫秒,表示主库事务等待从库返回commit成功信息超过10秒就降为异步模式,不再等待从库,等探测到从库io线程恢复后,再返回为半自动同步;

rpl_semi_sync_master_wait_no_slave参数表示事务提交后需要等待从库返回确认信息;

(2) 将slave的io线程停止

(3) 使用sysbench向master写入少量的数据,本例创建一张表,并插入10条记录,命令包装在1.sh测试脚本中

通过记录的时间戳发现,master在等待了slave10秒无响应,自动切换为异步模式,将数据写入本地。

(4) Slave启动io线程,数据自动追平

至此MySQL主主复制配置完成,运行在半自动同步模式,通过keepalived实现Mysql的HA高可用。

上线后应符合统一的标准监控策略,添加备份协议对数据进行周期备份并保存到带库中,以及定期的数据恢复测试。

由于是靠keepalived实现的高可用,还应将如下资源添加到监控管理平台:

1、 对每台数据库主机的3个keepalived进程进行监控;

2、 对主备节点的io线程、sql线程工作状态进行监控;

项目计划书主要分为“项目书名称、目录、项目介绍、计划书摘要、项目背景、项目成员、市场前景、营销策略、财务分析、投资分析、风险评估”,那么这十几点应该怎样书写才能博人眼球,使整个项目脱颖而出呢?下面让我们一起来学习一下吧!

第一部分:项目书摘要

对本项目书进行整体性概括陈述(要求简明扼要,重点突出)。

①项目主题 ②实施对象(目标人群)③实施区域 ④项目期限 ⑤希望解决的问题和预期达到的目标

第二部分:项目背景

1、项目背景分析

对该项目相关的背景进行简要分析(包括项目的起因和必要性、实施项目的条件)以前类似项目实施经验教训及相关政策环境等。

2、项目问题分析

①通过项目的实施希望解决什么根本问题?

②导致这些问题的关键因素?

③问题造成的不良后果有哪些?

第三部分:项目的市场前景

项目所希望达到的目标是什么?

1、对本项目所希望达到的目标的精确陈述。

2、应当尽量符合具体可测量,可达到,有时限的原则。

3、项目目标可划分为总目标和分目标,总目标是对项目整体目标较为宏观的描述,分目标则是为实现总目标而形成的一系列具有严密逻辑关系的具体目标。

4、可行性分析(从实验材料的可靠性、实验方法、设计的可行性、理论的预见性等角度写。)

第四部分:营销策略

1、策划目的与概述。

根据市场特点策划出一套行销计划。

2、分析当前的营销环境状况。

(一)市场状况分析及市场前景预测

①产品的市场性、现实市场及潜在市场状况。②市场成长状况 。③消费者的心理。

(二)影响产品的不可控因素进行分析

①宏观环境? ②政治环境

③居民经济条件(消费者收入水平、消费结构的变化、消费心理等,对一些受科技发展影响较大)

3、营销战略(具体行销方案)

(一)营销宗旨

以强有力的广告宣传攻势顺利拓展市场,为产品准确定位,突出产品特色,采取差异化营销策略。

(二)产品策略

透过前面产品市场机会与问题分析,提出合理的产品策略推荐,构成有效的组合,到达最佳效果。

(三)价格策略

①定价目标 ②确定需求 ③估计成本 ④选择定价方法 ⑤选定最终价格。

第五部分:财务分析

1、资本结构与前期投资?

2、财务预算及分析

①公司财务预算编制方法

1)长期预算(分会计年度预算数据)

2)短期预算(分季度预算数据)

②公司财务预算编制

第六部分:投资及风险分析一、项目风险来源

项目自身因素: 项目特有因素或估计误差带来的风险

外部因素:① 项目收益风险 ②投资与经营成本风险 ③筹资风险? ④ 其他风险

二、项目风险分析

①同类新技术

②新产品的出现?

③争夺市场份额

三、投资项目风险调整

(一)项目风险的衡量

1、敏感性分析(敏感性分析就是在假定其他各项数据不变的情况下,各输人数据的变动对整个项目净现值的影响程度,是项目风险分析中使用最为普遍的方法。)

2、情景分析(情景分析是用来分析项目在最好、最可能发生和最差三种情况下的净现值之间的差异,与敏感性分析不同的是,情景分析可以同时分析一组变量对项目净现值的影响。)

3、蒙特卡洛模拟(蒙特卡洛模拟是将敏感性与概率分布结合在一起进行项目风险分析的一种方法。) 

4、决策树法(决策树是一种展现一连串相关决策及其期望结果的树形图像方法。)

(二)项目风险的处置

1、项目风险与公司风险(确定当量法、折现率风险调整法。)

2、确定当量法(确定当量法是一种对项目相关现金流进行调整的方法。)

3、风险调整折现率法(确定当量法是对现金流量进行风险调整,而风险调整折现率法是对折现率进行调整。)

行文至此,以上就是项目计划书撰写指南的全部内容,本篇主要讲解了如何撰写项目计划书各部分。

关于“基于MySQL双主的高可用解决方案理论及实践”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[璩明礼]投稿,不代表空气号立场,如若转载,请注明出处:https://haokongqi.org.cn/cshi/202504-1617.html

(185)

文章推荐

  • 全国性质的舞蹈比赛有哪些?

    网上科普有关“全国性质的舞蹈比赛有哪些?”话题很是火热,小编也是针对全国性质的舞蹈比赛有哪些?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。全国最老的是“桃李杯”所有舞蹈界的人都会关注这个大赛,所有高手也都会参加!然后就是“荷花奖”和“cctv”cctv综合

    2025年02月26日
    207
  • 梦见很多人吃饭自己没吃是什么意思 预兆着什么

    网上科普有关“梦见很多人吃饭自己没吃是什么意思预兆着什么”话题很是火热,小编也是针对梦见很多人吃饭自己没吃是什么意思预兆着什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。 在现实中,吃饭这件事是每天必做的,毕竟人是铁饭是钢,一顿不吃饿得慌,那么要是

    2025年03月01日
    204
  • 3年后疫情会结束吗(疫情过后三年)

    本篇文章给大家谈谈3年后疫情会结束吗,以及疫情过后三年对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。新冠病毒可能长期存在下去吗?疫情在全球范围内发展着,一些地方还很严重,疫情让世界变得很不一样了。终南山院士揭露了一个事实:病毒可能是长期存在的,但是,病毒的大规模传播是可以控制的。同时,我

    2025年03月02日
    17
  • 疫情期间的英雄人物及感人作文故事(疫情期间的英雄事例)

    今天给各位分享疫情期间的英雄人物及感人作文故事的知识,其中也会对疫情期间的英雄事例进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!关于疫情中让我感动的人作文精选5篇1、关于疫情中让我感动的人作文篇一近日,新型肺炎引发了大家的高度关注,亿万华夏儿女一同努力,共渡难关,而在此刻

    2025年03月06日
    35
  • 疫情啥时候彻底结束(真诚的问一句,疫情什么时候彻底结束)

    本篇文章给大家谈谈疫情啥时候彻底结束,以及真诚的问一句,疫情什么时候彻底结束对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。疫情啥时候能彻底结束据美国专家预测,新冠疫情有望在2023年得到彻底控制,最迟不会晚于2024年。英国专家认为,疫情可能会在2022年或2023年结束,但若情况不佳

    2025年03月07日
    28
  • 当代英雄人物事迹钟南山的故事简介(钟南山事迹 英雄事迹)

    本篇文章给大家谈谈当代英雄人物事迹钟南山的故事简介,以及钟南山事迹英雄事迹对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。钟南山院士简介钟南山院士简介钟南山,中国工程院院士,著名呼吸病学专家。钟南山出生于医学世家,自幼受到良好的医学熏陶。他在医学领域拥有深厚的学术背景和丰富的临床经验。

    2025年03月10日
    10
  • 什么是4k电视 4k电视哪个牌子好-

    网上科普有关“什么是4k电视4k电视哪个牌子好?”话题很是火热,小编也是针对什么是4k电视4k电视哪个牌子好?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。现在的电视机产品技术越来越先进,功能越来越强大,所以对于人们的家居休闲娱乐生活来说,也会越来越丰富

    2025年03月14日
    156
  • 中国疫情啥时候能过去结束(中国疫情到底什么时候可以结束)

    今天给各位分享中国疫情啥时候能过去结束的知识,其中也会对中国疫情到底什么时候可以结束进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!疫情是哪年结束的全球范围内的疫情结束时间是在2023年1月30日,中国国内是在2022年12月9日宣布疫情结束。全球范围:世界卫生组织(WHO

    2025年03月11日
    13
  • 2020年疫情是从几月份开始的(2020年疫情是从几月几日开始的?)

    今天给各位分享2020年疫情是从几月份开始的的知识,其中也会对2020年疫情是从几月几日开始的?进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!中国新冠疫情开始和结束时间1、2019年12月31日,新型冠状病毒肺炎(COVID-19)疫情在中国武汉市首次爆发。2020年1月

    2025年03月13日
    20
  • 2019年是疫情嘛(2019年疫情在几月几日开始)

    本篇文章给大家谈谈2019年是疫情嘛,以及2019年疫情在几月几日开始对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。中国新冠疫情开始和结束时间1、中国没有宣布疫情结束日期,中国在2022年12月发布了新冠疫情“新十条”防控优化措施,并于2022年12月7日疫情全面放开。很多网友把2022

    2025年03月24日
    17

发表回复

本站作者后才能评论

评论列表(4条)

  • 璩明礼
    璩明礼 2025年04月19日

    我是空气号的签约作者“璩明礼”!

  • 璩明礼
    璩明礼 2025年04月19日

    希望本篇文章《基于MySQL双主的高可用解决方案理论及实践》能对你有所帮助!

  • 璩明礼
    璩明礼 2025年04月19日

    本站[空气号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 璩明礼
    璩明礼 2025年04月19日

    本文概览:网上科普有关“基于MySQL双主的高可用解决方案理论及实践”话题很是火热,小编也是针对基于MySQL双主的高可用解决方案理论及实践寻找了一些与之相关的一些信息进行分析,如果能碰...