关于不同的MySQL复制解决方案概述

MySQL 复制 为了更详细地展示如何在实际情景中应用MySQL复制技术,我们将通过一个假设的电子商务平台“EcomStore”的案例来深入探讨主从复制、主主复制和半同步复制的具体应用场景。这将帮助您理解在真实环境中应该如何选择和配置不同的复制模式,并且提供详细的配置步骤和维护建议。 阅读详情

我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。


什么是复制?

复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。

下图展示了MySQL复制环境的示例。

13467292-6572d3c27024dc84

如果我们把范围缩小到MySQL中,那么在复制时我们有几种选择呢?

标准异步复制

异步复制意味着事务完全在本地环境中完成,并且不受复制从属本身的影响。完成更改后,主服务器将使用数据修改或实际语句(基于行的复制或基于语句的复制之间的差异会在之后讲)填充二进制日志。此转储线程读取二进制日志并将其发送到从IO线程。从站使用其IO线程将其置于自己的预处理队列(称为中继日志)中。从站使用SQL线程执行从站数据库上的每个更改。

13467292-cb69c3d2799fb5d6

半同步复制

半同步复制意味着从设备和主设备相互通信以保证事务的正确传输。主设备仅填充binlog并继续其会话,其中一个从设备确认事务已正确放置在从设备的中继日志中。

半同步复制可确保正确复制事务,但不保证实际发生从设备上的提交。

13467292-dc797183b07516f0

需要注意的是,半同步复制可确保主服务器等待继续处理特定会话中的事务,直到至少有一个从服务器确认接收到事务(或达到超时)。这与异步复制不同,因为半同步允许额外的数据完整性。

请记住,半同步复制会影响性能,因为它需要等待来自从站的实际ACK的往返。

组复制

这是MySQL Community Edition 5.7中引入的新概念,并且在MySQL 5.7.17中进行了GA。这是一个用于虚拟同步复制的新插件。

每当在节点上执行事务时,插件都会尝试与其他节点达成共识,然后再将其返回给客户端。 虽然与标准MySQL复制相比,该解决方案是完全不同的概念,但它基于使用binlog生成和处理日志事件。

以下是组复制的示例体系结构。

13467292-59acd15ad3512ebc

如果对Group Replication感兴趣,请参考以下文章:

http://mysqlhighavailability.com/mysql-group-replication-its-in-5-7-17-ga/

http://mysqlhighavailability.com/performance-evaluation-mysql-5-7-group-replication/

Percona XtraDB Cluster/ Galera Cluster

另一种允许将信息复制到其他节点的解决方案是Percona XtraDB Cluster。此解决方案侧重于提供一致性,使用认证过程来保证事务避免冲突并正确执行。在这种情况下,我们讨论的是集群解决方案,每个环境都受相同数据的约束,并且节点之间存在通信以保证一致性。

Percona XtraDB Cluster有多个组件:

Percona Server for MySQL

Percona XtraBackup用于执行正在运行的集群的快照(正在恢复或添加节点)。

wsrep patches/Galera Library

该解决方案几乎是同步的,可与组复制相媲美。但是,它还具有使用多主复制的功能。像Percona XtraDB Cluster这样的解决方案是提高数据库基础架构可用性的一个组件。

13467292-fda358c09718b902

基于行的复制与基于语句的复制

使用基于语句的复制,SQL查询本身将写入二进制日志。例如,从站执行完全相同的INSERT / UPDATE / DELETE语句。

该方法有很多优缺点:

由于实际语句记录在二进制日志中,因此审核数据库要容易得多

通过线路传输的数据更少

非确定性查询可能会在从属环境中造成实际破坏

某些查询存在性能劣势,例如基于SELECT的INSERT

由于SQL优化和执行,基于语句的复制速度较慢

基于行的复制是自MySQL 5.7.7以来的默认选择,具有许多优点。行更改记录在二进制日志中,并且不需要上下文信息,消除了非确定性查询的影响。

其它优点包括:

包含少量行更改的高并发查询的性能改进

显着的数据一致性改进

其缺点包括:

如果有修改大量行的查询,那么网络流量可能会大得多

审核数据库的更改更加困难

在某些情况下,基于行的复制可能比基于语句的复制慢

关于复制的误解

复制是集群

标准异步复制不是同步集群。请记住,标准和半同步复制不保证环境服务于同一数据集。使用Percona XtraDB Cluster时,每个服务器实际上需要分别处理每个更改。如果不是,则从群集中删除受影响的节点。异步复制不具有此故障安全性,在不一致的情况下,仍然可以接受读操作。

从理论上讲,环境应具有可比性。但是,有许多参数会影响数据传输的效率和一致性。只要使用异步复制,就无法保证事务正确发生。使用者可以通过增强配置的持久性来避免这种情况,但这会带来性能损失。

使用pt - table - checksum工具验证主服务器和从服务器的一致性 。

有复制就不需要备份了

没错,复制是一个很好的解决方案,可以获得数据集的可访问副本(例如报告问题,读取查询,生成备份)。但其并不能替代备份解决方案。通过异地备份,可以在发生重大灾难、用户错误或其他原因时可以重建环境。有些人使用 delayed slaves ,但它也不能取代适当的灾难恢复程序。

有复制,所以环境将负载平衡事务

虽然通过使用相同数据集运行辅助实例可能会提高环境的可用性,但仍可能需要将读取查询指向从属服务器,而将写查询指向主服务器。你可以使用代理工具或在自己的应用程序中定义此功能。

复制会显着减慢速度

复制对主服务器的性能影响很小。 Peter Zaitsev在一篇文章中曾讨论过从服务器对主服务器的潜在影响。请记住,写入二进制日志可能会影响性能,尤其是当您有许多小事务,然后被多个从服务器转储和接收时。

当然,除此之外还有许多其他参数都可能会影响实际主从设置的性能。

最后送波福利。现在加群即可获取Java工程化、高性能及分布式、高性能、高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限及领取相关资料,群号:835638062 点击链接加入群聊【Java高级架构】:https://jq.qq.com/?_wv=1027&k=5S3kL3v

链家二手房信息爬取(内附完整代码) 链家二手房信息爬取1.简介2. 爬虫思路2.1 网页分析2.2 详情页分析2.3 不同页码的爬取2.4 解决链家只显示100页数据2.5 简单的反爬与进度条显示3. 总结 1.简介   最近帮同学爬取了链家在售二手房的信息,这是本人学习爬虫以来爬取数据最多的一次,就想着写个博客记录一下。   本次爬虫是利用python+jupyter notebook实现的,用到的第三方库如下: import pandas as pd # 数据存储 import requests # 网页内容获取 import re # 阅读详情

相关推荐

别再手动算临界转速了!用ANSYS Workbench 2023 R2快速搞定转子坎贝尔图(附完整APDL命令流)

本文详细介绍了如何利用ANSYS Workbench 2023 R2快速生成转子坎贝尔图,实现全自动临界转速分析。通过对比传统手动计算与Workbench自动化流程的效率差异,展示了其在旋转机械设计中的革命性优势,包括大幅缩短分析周期、提升精度至98.7%。文章还提供了完整的APDL命令流和实战案例,帮助工程师快速掌握这一高效工具。

weixin_42699679的博客 472

mysql start slave_MySQL主从复制(Master-Slave)实践

MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化,业务服务器在执行写或者相关修改数据库的操作是在主服务器上进行的,读操作则是在各从服务器...

weixin_36063465的博客 564

【科研绘图】【数据拟合曲线】:附Origin详细画图流程

拟合曲线图

weixin_50236590的博客 4万+

java复制mysql数据库_Java:jdbc连接mysql数据库

安装eclipse和mysql的步骤这里不赘述了。1.一定要下jar包要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包。低版本的jar包不会出现时差问题的异常。建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的。https://blog.youkuaiyun.com/weixin_44747284...

weixin_34836906的博客 595

怎么选?一文读懂12种SPC控制图,从基础到进阶,再到Python代码实现

本文系统介绍了12种常用SPC控制图的应用场景和特点,包括计量型(Xbar-R图、Xbar-s图、I-MR图等)、计数型(P图、NP图、U图等)及进阶控制图(EWMA图、CUSUM图、多元控制图)。文章强调控制图是SPC的核心工具,能有效区分过程变异类型,实现"预防优于检测"的质量管理目标。通过数据示例和Python代码展示了各类控制图的实现方法,为质量管理人员提供了实用参考。

m0_56592100的博客 4141

jlink驱动安装

jlink驱动下载安装及keil识别

qq_43868701的博客 3万+

navicat 转储的sql文件 运行时出错

navicat部署测试环境,加载从生产环境转储的sql文件,加载失败,报错。 出现这种错误的原因有很多,我目前遇到的有两种。 mysql版本不同。 生产环境的mysql版本mysql5.7,而测试环境是mysql5.6,因此有些sql语句不兼容。 解决方式有两种: 更换mysql版本(比较麻烦,尤其是集成环境) 开启要复制的数据库的远程连接,利用navicat...

weixin_42079053的博客 7367

App inventor2通过蓝牙控制Arduino Uno LED开关

App inventer2控制Arduino Uno LED开关 如果学会这个小程序,大部分的手机通过蓝牙控制Arduino的功能都可以实现,这个小示例是通过蓝牙模块向Arduino发送"0"和"1",而其它功能要发送其它不同的字符串内容给Arduino. 所需硬件: Arduino Uno JDY-16 蓝牙模块(我的是蓝牙4.2版本) 草帽LED(可选) 手机(我用的是安卓,苹果手机应该也可以,最近其应用商店也有App inventor(AI)伴侣) 软件: Aduino IDE或者Platfom

Firmin123456的博客 5499

对比MySQL的异步复制、全同步复制与半同步复制

MySQL的异步复制、全同步复制与半同步复制 异步复制 异步复制,主库将事务 Binlog 事件写入到 Binlog 文件中,此时主库只会通知一下 Dump 线程发送这些新的 Binlog,然后主库就会继续处理提交操作,而此时不会保证这些 Binlog 传到任何一个从库节点上。 全同步复制 全同步复制,当主库提交事务之后,所有的从库节点必须收到、APPLY并且提交这些...

Sunny_Future的博客 6324

第44节:cesium 大雾效果(cesium自带)(含源码+视频)

cesium 大雾效果(cesium自带)

qq_29384639的博客 1702

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

mysql 复制 事务_关于不同的MySQL复制解决方案概述

原标题:关于不同的MySQL复制解决方案概述【IT168 技术】我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。什么是复制?复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理...

weixin_39883670的博客 104

执行HDevelop项目

这一节,我们讲述的是如何用HDevEngine加载和执行一个HDevelop项目。代码部分来源于示例程序exec_program(源文件exec_program.cpp),检测塑料零件边界上的毛刺。1.Step 1:初始化首先,我们包含HALCON/C++和HDevEngine头文件以及命名空间。注意到在这个示例程序中,HDevEngine头文件已经包含在my_hdevoperatorimpl中,所

Z's Palace 2995

mysql 复制方案_关于不同的MySQL复制解决方案概述

我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。什么是复制?复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。下图展示了MySQL复制环境的示例。如果我们把范围缩小...

weixin_42298645的博客 110

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql不复制_关于不同的MySQL复制解决方案概述

【IT168 技术】我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。什么是复制?复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。下图展示了MySQL复制环境的示例...

weixin_33147645的博客 189

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

mysql 复制技术有什么用_关于不同的MySQL复制解决方案概述

【IT168 技术】我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。什么是复制?复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。下图展示了MySQL复制环境的示例...

weixin_39887386的博客 98

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql组复制清除_mysql8 参考手册--组复制限制

组复制存在以下已知限制。请注意,在故障转移事件期间,针对多主要模式组描述的限制和问题也可以适用于单主要模式集群,而新选举的主要对象会从旧的主要对象中清除其申请者队列。提示组复制建立在基于GTID的复制之上,因此,您还应该注意 第17.1.3.6节“使用GTID进行复制的限制”。--upgrade=MINIMAL选项。 使用MINIMAL选项(--upgrade=MINIMAL)的MySQL Se...

weixin_39831493的博客 394

【译】MySQL复制入门: 探索不同类型的MySQL复制解决方案

MySQL 复制是将主 MySQL 数据库中的数据复制并发送到一个或多个辅助数据库(称为副本)的过程。复制确保信息被复制并有目的地填充到另一个环境中,而不是只存储在一个位置(基于源环境的事务)。这样做的目的是将基础架构上的辅助服务器用于读取或其他管理解决方案。下图显示了一个 MySQL 复制环境示例。MySQL复制是将主MySQL数据库中的数据复制并发送到一个或多个称为副本的辅助数据库的过程。

markvivv随笔 1015

MySQL 主从复制的问题及解决方案

复制功能是构建 MySQL 的大规模、高性能的基础,也就是所谓的 “水平扩展” 架构。我们可以通过为服务器配置一个或多个备库。同时,复制也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。MySQL主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案。 一、复制概述 复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。通过复制可以将读操作指向备库来获得更好的读扩展

程序猿进阶 1万+

MySQL主从复制架构实践:主从不同步的解决方案

模拟MySQL主从,从库宕机的情况

低调,谦虚,自律,反思,成长,保持热爱,奔赴梦想 3514

MySQL主从复制《主库已经有数据的解决方案》《几种复制模式》

MySQL主从复制架构 目前MySQL支持两种复制类型: 1.传统方式:基于主库的bin-log将日志事件和事件位置复制到从库,从库再加以应用来达到主从同步的目的。 2.Gtid方式(MySQL>=5.7推荐使用): 基于GTID的复制中,从库会告知主库已经执行的事务的GTID的值,然后主库会将所有未执行的事务的GTID的列表返回给从库,并且可以保证同一个事务只在指定的从...

weixin_41309035的博客 951

mysql主从复制概述

mysql主从复制概述

xueping_wu的博客 992

MySQL主从复制

简单地说,集群 就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的 计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。打开谷歌,百度的页面,看起来好简单,也许你觉得用几分钟就可以制作出相似的网页,而实际上,这个页面的背后是由成千上万台服务器集群协同工作的结果。

yovo1的博客 1163
上一篇: mysql关于ibdata文件的理解
下一篇: 金九银十铁12,目前腾讯、美团等五家大厂都收到意向offer
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值