当前位置:首页 > 文章列表 > 数据库 > MySQL > 【MySQL—高可用】复制

【MySQL—高可用】复制

来源:SegmentFault 2023-01-17 16:35:02 0浏览 收藏

对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《【MySQL—高可用】复制》,主要介绍了MySQL,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,这类应用使用所谓的“水平扩展”的架构。我们可以通过为服务器配置一个或多个备库的方式来进行数据同步。复制功能不仅有利于构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。

概述

复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之间可以有多种不同的组合方式。

适用场景

横向扩展

横向扩展是指在多个从库之间进行读负载均衡,以提高读性能。在此扩展方案中,所有数据变更在主库上执行,读负载可以分摊到一个或者多个从库上。

数据安全

数据安全性在很大程度上需要靠数据副本来保证。在这里,副本可以理解为我们通常所说的备份。

数据分析

在主库上运行OLTP(联机事务处理)应用,而OLAP(联机分析处理)应用可以在从库上运行,避免在主库上运行OLAP应用对主库性能造成影响。

远程数据分发

可以使用复制特性为远程站点创建数据的本地副本,那些对数据实时性没有要求的应用可以访问本地副本,剩下的一小部分对实时性有要求的应用访问主库。远程站点既可以作为灾备中心,也可以用于实现跨地域访问以分摊负载,以及实现就近访问,加快访问速度。

滚动升级

使用一个更高版本的MySQL作为备库,保证在升级全部实例前,查询能够在备库按照预期执行。

高可用性和故障切换

复制能够帮助应用程序避免MySQL单点失败,一个包含复制的设计良好的故障切换系统能够显著地缩短宕机时间。

复制方式

MySQL支持以下两种数据同步方法:

  • 传统复制:也可以称为基于二进制日志文件和位置的复制,在从库中配置复制时,要求指定从主库中获取的二进制日志文件(binlog file)和位置(binlog position),以便从库中的复制线程启动时,能够以指定的二进制日志文件和位置为起点,持续读取主库中的二进制日志,并在从库中应用,从而达到数据同步的目的。
  • 基于GTID的复制:GTID(全局事务标识符)是新的事务性复制方法,利用GTID可以自动在主库中寻找需要复制的二进制日志记录,因此不需要关心日志文件或位置,极大地简化了许多常见的复制任务。使用GTID复制可确保主库和从库之间的一致性。。

同步类型

MySQL支持如下4种不同类型的数据同步:

  • 异步复制:最早出现的复制技术,MySQL内置支持,不需要额外安装插件。其中,一个实例充当主库,一个或多个其他实例充当从库,与同步复制形成对比。
  • 半同步复制:从MySQL 5.5开始支持半同步复制。使用半同步复制时,主库的会话在提交事务之前,会等待至少一个从库返回收到二进制日志的ACK消息(确认接收,并将事务的事件记录到从库的中继日志中)。
  • 延迟复制:从MySQL 5.6开始支持,使得从库可以故意滞后于主库至少一段指定的时间,以便在出现误操作时,有时间对误操作的数据进行补救。
  • 同步复制:指的是需要保证写操作完全同步到其他数据节点,而不仅仅是二进制日志被其他节点接收。对于需要同步复制的场景,可以使用NDB Cluster,或者其他类似的开源解决方案(虚拟同步,非完全同步),例如Percona XtraDB Cluster(PXC)、MariaDB GaleraCluster(MGC)、MySQL Group Replication(MGR)。

复制格式

MySQL的复制格式(二进制日志格式)可以分为三种,由系统变量binlog_format进行设置:

  • 基于statement的复制(Statement Based Replication,SBR):SBR复制的是整个SQL语句的原始文本,日志量较小,但容易出现主从库数据不一致。对于SBR,当执行的某个语句被判定为不安全时,是否允许其执行还取决于事务的隔离级别。
  • 基于row的复制(Row Based Replication,RBR):RBR复制的是发生更改的数据行的实际记录(原始语句会被转换为发生变更的行数据记录),日志量较大,但可以保证主从库数据的一致性。
  • 混合复制(Mixed Based Replication,MBR):MBR实际上是由MySQL自行判断的,即在不影响数据一致性的情况下,使用SBR;如果可能影响数据一致性,则自动转换为RBR。

复制的基本原理

复制是基于主库(master)二进制日志中写入的关于该数据库的所有更改(更新、删除等)的日志记录来实现的。从库(slave)利用这些二进制日志中的事件记录进行回放来同步数据。

对于复制线程在主从之间新建立连接或重新建立连接的情况,从库会主动向主库请求所需的二进制日志(从库向主库注册连接时,携带了从库自身所需二进制日志的位置信息)。如果复制线程已经在主从之间建立连接,而且从库已经完全接收建立连接时请求的二进制日志内容,后续的增量二进制日志是由主库主动推送给从库的。

MySQL的复制功能用三个线程来实现:一个线程在主库上(Binlog Dump线程),两个线程在从库上(I/O线程和SQL线程)。如图所示:

image.png

复制的大致步骤如下:

  1. 用户提交对数据的修改,然后主库把所有数据库变更写进二进制日志。
  2. 从库会启动一个工作线程,称为I/O线程。然后在主库上启动一个特殊的Binlog Dump线程,这个线程会读取主库上二进制日志中的事件,它不会对事件进行轮询,如果该线程追赶上了主库,它将进入睡眠状态,直到主库发送信号量通知其有新的事件产生时才会被唤醒。从库的I/O线程跟主库的Binlog Dump线程建立一个普通的客户端连接,备库I/O线程将接收到的事件记录到中继日志中。
  3. 从库SQL线程读取并解析中继日志中的内容,按照读取的顺序进行回放。

好了,本文到此结束,带大家了解了《【MySQL—高可用】复制》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!

版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
idea连接数据库报错serverTimezone设置idea连接数据库报错serverTimezone设置
上一篇
idea连接数据库报错serverTimezone设置
MySql-数据库语法
下一篇
MySql-数据库语法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ChatExcel酷表:告别Excel难题,北大团队AI助手助您轻松处理数据
    ChatExcel酷表
    ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
    3537次使用
  • Any绘本:开源免费AI绘本创作工具深度解析
    Any绘本
    探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
    3765次使用
  • 可赞AI:AI驱动办公可视化智能工具,一键高效生成文档图表脑图
    可赞AI
    可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
    3761次使用
  • 星月写作:AI网文创作神器,助力爆款小说速成
    星月写作
    星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
    4905次使用
  • MagicLight.ai:叙事驱动AI动画视频创作平台 | 高效生成专业级故事动画
    MagicLight
    MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
    4126次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码