iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL同步机制
  • 376
分享到

MySQL同步机制

摘要

复制步骤: Slave 上面的io线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容 Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定


	MySQL同步机制
[数据库教程]

复制步骤:

  1. Slave 上面的io线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容
  2. Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的Binary Log 文件的名称以及在 Binary Log 中的位置
  3. Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件(Mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master- info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”
  4. Slave 的 sql 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的

技术图片

复制类型:

异步复制:主库执行完DDL/DML操作后发送给从库,此时主库认为此次操作成功,无论从库是否完成复制。

  主库写完binlog后从库还没有开始或完成复制,导致主从数据暂时不一致。若此时主库宕机则从库将丢失部分数据;若此时从库被升为新的主库则整个数据库将永久丢失部分数据。

半同步复制:主库执行完DDL/DML操作后发送给从库,当其中一个从库完成复制并返回成功信息后,主库才认为此次操作成功。

      主库只需等待一个从库的回应,且超时时间可以设置,超时后自动降级为异步复制。

同步复制:主库执行完DDL/DML操作后发送给从库,当所有从库都完成复制并返回成功信息后,主库才认为此次操作成功。

          主库必须等待所有从库,延迟较大。

延迟复制:从库延迟一段时间再从主库复制。

组复制:

技术图片

复制方式:

  1. 基于行的复制(ROW):主库直接记录数据并复制到从库
  2. 基于语句的复制(STATEMENT):主库记录造成数据更改的语句,从库读取并执行这些语句 → 通过在主库上记录二进制日志,在从库重放日志
  3. 基于GTID的复制:使用全局事务ID(GTID)

复制故障

与I/O线程相关的问题:

  • 服务器无法连接主服务器 → 检查网络能否访问
  • 从服务器能连接到主服务器,但不断地断开连接 → 检查网络状况
  • 从服务器延迟 → 中继日志损坏
  1. 检查复制用户的权限是否正确
    需要replication slave权限
  2. 检查网络
    使用ping检查能否连接
    使用tcpdump查看网络状况
  3. 检查中继日志是否损坏
    查看SQL线程错误,使用mysqlbinlog进行检查
    在从库上执行SHOW SLAVE STATUS,查看Relay_Master_Log_File和Exec_Master_Log_Pos,执行CHANGE MASTER TO
    或在从库的配置文件中添加参数relay_log_recovery=1
  4. 检查表是否一致
    查询表的校验和,比较主从库上的表是否一致
    CHECKSUM TABLE tbl_name

与SQL线程相关的问题:

  1. 从库收到SQL错误 → 查看错误信息
  2. 主从数据不一致 → 
  3. 主从错误不一致 → slave_skip_counter
  4. 从库落后于主库(Seconds_Behind_Master增大) → 从库执行速度慢于主库
    主库使用多线程并行执行语句,从库使用单线程串行执行binlog事件
    提升硬件
    调整性能选项

RESET语句

RESET MASTER

清除所有binlog.index文件中包含的binlog文件,并将binlog.index文件清空,然后从.000001开始创建一个新的binlog文件

此外还会将gtid_purged和gtid_executed这两个变量清除

与 PURGE BINARY LOG 语句的区别在于,PURGE 语句不会清空binlog.index文件,因此还会接着编号继续创建binlog文件;当slave正在复制时,使用 RESET MASTER 语句是不安全

RESET SLAVE

清空slave_master_info,slave_relay_log_info两个表中数据,并清空relay log目录(删除所有的relay log),使slave忘记在master上进行复制对应的binlog文件position。在执行前需要使用 STOP SLAVE 停止slave的复制

 

MySQL同步机制

原文地址:https://www.cnblogs.com/albert32/p/13404172.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL同步机制

本文链接: https://www.lsjlt.com/news/7604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql主从同步机制原理
    本篇内容主要讲解“mysql主从同步机制原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql主从同步机制原理”吧! 1、binlog+pos同步(默认...
    99+
    2024-04-02
  • Mysql异步复制、同步复制、半同步复制的区别
    这篇文章主要介绍“Mysql异步复制、同步复制、半同步复制的区别”,在日常操作中,相信很多人在Mysql异步复制、同步复制、半同步复制的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • OpenCL-3-同步机制
    由于OpenCL在异构系统上进行计算,需要管理并调度多个设备,就需要在设备之间内部或外部进行数据交互以及同步。   根据同步的类型,同步分为两部分:宿主机端同步和设备端同步。   设备端同步主要指同一个内核内不同线程之前的同步,主要用于...
    99+
    2023-01-31
    机制 OpenCL
  • 【MySQL】半同步与增强半同步复制
    首先要明白事务提交的三个阶段,这里不再赘述。     半同步复制:主上已经提交了,但是日志还没来得及传到备库,这时候宕机了,在半同步看来,主库其...
    99+
    2024-04-02
  • MySQL中怎么实现主从同步机制
    MySQL中怎么实现主从同步机制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最直观的表现为:mysql> show ...
    99+
    2024-04-02
  • MySQL的半同步复制
    MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。 异步复制的缺点: MySQL复制默认是异步复制,Master将事件写入binlog,但并不知道Slave是否...
    99+
    2024-04-02
  • MySQL实战之主从数据同步机制
    主从同步的重要性: 解决数据可靠性的问题需要用到主从同步;解决 MySQL 服务高可用要用到主从同步;应对高并发的时候,还是要用到主从同步。 一、MySQL 主从同步流程 当客户端提交一个事务到 MySQL 的集群,直到客户端收到集群返回...
    99+
    2023-09-08
    mysql 数据库 java
  • MySQL复制(二):半同步复制(Semisynchronous replicaiton)
    目录 一、半同步复制介绍 二、搭建半同步复制 2.1 安装半同步插件 2.2 启用半同步复制 三、配置半同步复制 四、监控半同步复制 一、半同步复制介绍 MySQL基础复制有三种模式:异步复制/同步复制/半同步复制,3种模式各有利弊,下...
    99+
    2023-09-20
    mysql 数据库 sql
  • AndroidNTP时间同步机制详解
    目录正文初始化NetworkTimeUpdateCallbackAutoTimeSettingObserverMyHandleronPollNetworkTime总结正文 NTP是A...
    99+
    2022-11-13
    Android NTP 时间同步 Android NTP
  • Java实现synchronized锁同步机制
    目录synchronized实现原理适应性自旋(AdaptiveSpinning)锁升级Java对象头偏向锁(BiasedLocking)偏向锁获取偏向锁释放关闭偏向锁轻量级锁(Li...
    99+
    2024-04-02
  • mysql同步复制和异步复制有什么区别
    这篇文章主要介绍mysql同步复制和异步复制有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:异步复制是Master将事件写入binlog,提交事务,自身并不知道slav...
    99+
    2024-04-02
  • MySQL异步复制和半同步复制怎么实现
    这篇文章主要介绍“MySQL异步复制和半同步复制怎么实现”,在日常操作中,相信很多人在MySQL异步复制和半同步复制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”My...
    99+
    2024-04-02
  • go语言有哪些同步机制
    go语言同步机制有:1、互斥锁,是go中最基本的同步原语之一;2、读写互斥锁,可以提高并发性能;3、条件变量,用于在多个goroutine之间进行通信的同步原语;4、通道,用于goroutine之间进行通信的主要机制;5、原子操作,用于实现...
    99+
    2023-07-31
  • MySQL半同步复制如何配置
    本篇内容主要讲解“MySQL半同步复制如何配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL半同步复制如何配置”吧!前言:MySQL默认的主从复制采用...
    99+
    2024-04-02
  • kafka副本同步机制是什么
    Kafka副本同步机制是指Kafka集群中的副本之间的数据同步方式。在Kafka中,每个分区都有多个副本,其中一个被选为leader...
    99+
    2023-10-12
    kafka
  • golang函数与goroutine的同步机制
    go 中的同步机制包括:通道:用于在 goroutine 之间安全地传递数据,采用阻塞式发送和接收操作。互斥锁:确保同一时间只有一个 goroutine 可以访问共享资源。等待组:跟踪正...
    99+
    2024-04-26
    同步机制 golang
  • Python多线程与同步机制浅析
    目录线程实现Thread类函数方式继承方式同步机制同步锁Lock条件变量Condition信号量Semaphore事件Event屏障BarrierGIL全局解释器锁线程实现 Pyth...
    99+
    2022-12-22
    Python多线程 Python同步机制
  • MySQL级联复制的同步问题(一)
    今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可见延迟是难免的,但...
    99+
    2024-04-02
  • MySQL半同步复制的方法详解
    这篇文章主要介绍“MySQL半同步复制的方法详解”,在日常操作中,相信很多人在MySQL半同步复制的方法详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL半同步复制...
    99+
    2024-04-02
  • MySQL半同步复制的示例分析
    这篇文章主要介绍MySQL半同步复制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码分析int repl_semi_report_commit(Trans_pa...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作