首页 > 数据库 >论述MySQL的同异步复制

论述MySQL的同异步复制

时间:2024-06-10 23:32:58浏览次数:12  
标签:主库 异步 同步 复制 MySQL 一致性 从库

MySQL的复制功能是数据库系统中一个重要的特性,它可以实现数据的冗余备份和分布式读写,提高系统的可靠性和性能。MySQL的复制主要分为异步复制、半同步复制和同步复制,这三种复制方式在机制和使用场景上有显著的不同。

异步复制

特点
  1. 主从模式:在异步复制中,主库(Master)将数据的变更操作记录在二进制日志(binary log)中,从库(Slave)异步地读取这些日志并重放操作。
  2. 延迟问题:由于从库的更新是异步进行的,所以在主库提交事务后,从库可能会有延迟。这种延迟时间不定,取决于网络带宽、系统负载等因素。
  3. 性能影响小:异步复制不会显著影响主库的性能,因为主库在提交事务后不需要等待从库的反馈。
优点
  • 效率高:主库的写操作不会被从库的状态所限制,可以在事务提交后立即返回客户端。
  • 扩展性强:适用于读多写少的场景,从库可以承担大量的读操作,从而减轻主库的负载。
缺点
  • 数据一致性问题:在主库故障时,从库的数据可能还未同步,导致数据丢失或不一致。
  • 不适合强一致性要求的场景:对数据一致性要求高的应用场景,异步复制可能无法满足需求。

半同步复制

特点
  1. 确认机制:在半同步复制中,主库在提交事务后,至少要等待一个从库确认已经收到该事务日志,然后才会返回给客户端确认。
  2. 延迟较低:虽然主库需要等待从库的确认,但只需等待一个从库,因此延迟比同步复制低。
优点
  • 数据丢失风险低:在主库故障时,至少有一个从库已经收到了最新的事务日志,数据丢失的风险降低。
  • 性能较好:相比同步复制,半同步复制在保证数据一致性的同时,性能开销较低。
缺点
  • 一致性保障有限:虽然降低了数据丢失的风险,但不能完全保证所有从库的数据都与主库一致。
  • 适用场景有限:适用于对一致性和性能都有一定要求的场景,但不能完全满足强一致性的需求。

同步复制

特点
  1. 事务同步:在同步复制中,主库的每个事务在提交时都需要等待从库确认已经接收到并应用了该事务,之后主库才会继续处理新的事务。
  2. 无延迟一致性:确保主库和从库的数据是一致的,从库与主库的数据实时同步。
优点
  • 数据一致性高:在主库提交事务时保证所有从库都已经同步,适用于对数据一致性要求高的场景。
  • 故障恢复快:主库出现故障时,从库的数据已经同步,可以迅速接管主库的工作。
缺点
  • 性能开销大:主库的事务提交需要等待所有从库的确认,导致写操作的延迟增加,整体系统性能下降。
  • 复杂性高:实现和管理同步复制的复杂度较高,需要更多的配置和资源。

结论

MySQL的异步复制、半同步复制和同步复制各有优缺点,选择哪种复制方式取决于具体的应用场景和需求:

  • 异步复制适用于对写操作延迟敏感、读多写少、对数据一致性要求不高的场景,如数据分析、报表生成等。
  • 半同步复制适用于对数据一致性和性能都有一定要求的场景,如金融交易系统等,在提高数据安全性的同时,尽量减少写操作延迟。
  • 同步复制适用于对数据一致性要求极高的场景,如银行核心系统、实时交易系统等,需要保证所有从库的数据与主库完全一致。

标签:主库,异步,同步,复制,MySQL,一致性,从库
From: https://blog.csdn.net/2301_78925669/article/details/139577165

相关文章

  • MySQL数据库的基础:逻辑集合数据库与表的基础操作
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • MySQL8.0默认TCP端口介绍
    1、本文内容选择题TCP/IPMySQL8.0的默认TCP端口showvariables查看总结2、选择题A、3306B、33060C、33062D、330633、TCP/IPTCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。以下是......
  • Ubuntu 24.04 LTS 安装配置 MySQL Community Server 8.4.0 LTS
    1安装 AptRepository​​​​​​​地址MySQL::DownloadMySQLAPTRepositorysudodpkg-imysql-apt-config_0.8.30-1_all.deb #安装mysql8.4ltssudoaptupdatesudoapt-getinstallmysql-server#修改mysqlroot密码策略 2查看版本test@test:~$my......
  • MySQL bin-log日志恢复数据
    目录一、开启二进制日志二、检查二进制日志是否开启三、使用二进制日志备份和恢复使用二进制日志备份恢复前先创建备份:应用二进制日志:扩展用法:四、常见命令和操作五.使用 mysqlbinlog 工具查看二进制日志1.查看二进制日志的内容2.解码二进制日志并将内容保存到......
  • 如何提高MySQL DELETE 速度
    提高MySQL中DELETE操作的速度通常涉及多个方面,包括优化查询、索引、表结构、硬件和配置等。以下是一些建议,以及一些示例代码,用于帮助我们提高DELETE操作的速度。1.提高MySQLDELETE速度的方法1.1优化查询只删除必要的行:确保我们的WHERE子句是高效的,并且只选择需要删除的行。......
  • 如何提高MySQL DELETE 速度
    提高MySQL中DELETE操作的速度通常涉及多个方面,包括优化查询、索引、表结构、硬件和配置等。以下是一些建议,以及一些示例代码,用于帮助我们提高DELETE操作的速度。1.提高MySQLDELETE速度的方法1.1优化查询只删除必要的行:确保我们的WHERE子句是高效的,并且只选择需要删除的......
  • MySQL分页查询offset过大,Sql优化经验
    低性能版SELECT*FROMtablewherecondition1=0andcondition2=0andcondition3=-1andcondition4=-1orderbyidascLIMIT2000OFFSET50000当offset特别大时,这条语句的执行效率会明显减低,而且效率是随着offset的增大而降低的。原因为:MySQL并不是跳过offset......
  • 按键中断驱动程序-异步通知
    在前面的休眠-唤醒、POLL机制中,都是通过休眠等待某一个事件的发生,而程序一旦陷入休眠,就没法再执行其它任务,相当于整个程序卡死了。在很多的场景中,如果发生了某一个事件我们就去处理它,没有发生事件那就可以做其它的事情。这种正常执行程序,当中断发生时才去执行的方式就叫做异步通知......
  • C语言 & 图形化界面方式连接MySQL【C/C++】【图形化界面组件分享】
      博客主页:花果山~程序猿-CSDN博客文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!目录一.配置开发环境 二,接口介绍1.mysql_init2.mysql_real_connect3.mysql_query4.对select结果分析......
  • MySQL 存储函数及调用
    1.mysql存储函数及调用在MySQL中,存储函数(StoredFunction)是一种在数据库中定义的特殊类型的函数,它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的SQL逻辑,使得在应用程序中调用时更加简单和高效。下面是一个具体的MySQL存储函数的示例,该函数接受一个整数......