广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中怎样实现主从同步
  • 304
分享到

MySQL中怎样实现主从同步

2024-04-02 19:04:59 304人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Mysql中怎样实现主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(1) statement : 记录每一条更改数据的s

这篇文章将为大家详细讲解有关Mysql中怎样实现主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

(1) statement : 记录每一条更改数据的sql;

  • 优点:binlog文件较小,节约I/O,性能较高。

  • 缺点:不是所有的数据更改都会写入binlog文件中,尤其是使用mysql中的一些特殊函数(如LOAD_FILE()、UUID()等)和一些不确定的语句操作,从而导致主从数据无法复制的问题。

(2) row : 不记录sql,只记录每行数据的更改细节

  • 优点:详细的记录了每一行数据的更改细节,这也意味着不会由于使用一些特殊函数或其他情况导致不能复制的问题。

  • 缺点:由于row格式记录了每一行数据的更改细节,会产生大量的binlog日志内容,性能不佳,并且会增大主从同步延迟出现的几率。

(3)  mixed:一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。

(二)binlog日志内容

mysqlbinlog命令查看的内容如下:

MySQL中怎样实现主从同步

根据事件类型查看的binlog内容:

MySQL中怎样实现主从同步

(三)binlog事件类型

MySQL  binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型,如果想了解更多请参考官方文档,有关binlog日志内容不在这里过多赘述,简单介绍一下是为了更好的理解主从复制的细节,下面我们进入正题。

四、MySQL主从复制原理

mysql主从复制需要三个线程,master(binlog dump thread)、slave(I/O thread 、SQL thread)。

master

(1)binlog  dump线程:当主库中有数据更新时,那么主库就会根据按照设置的binlog格式,将此次更新的事件类型写入到主库的binlog文件中,此时主库会创建log  dump线程通知slave有数据更新,当I/O线程请求日志内容时,会将此时的binlog名称和当前更新的位置同时传给slave的I/O线程。

slave

(2)I/O线程:该线程会连接到master,向log dump线程请求一份指定binlog文件位置的副本,并将请求回来的binlog存到本地的relay  log中,relay log和binlog日志一样也是记录了数据更新的事件,它也是按照递增后缀名的方式,产生多个relay log(  host_name-relay-bin.000001)文件,slave会使用一个index文件(  host_name-relay-bin.index)来追踪当前正在使用的relay log文件。

(3)SQL线程:该线程检测到relay  log有更新后,会读取并在本地做redo操作,将发生在主库的事件在本地重新执行一遍,来保证主从数据同步。此外,如果一个relay  log文件中的全部事件都执行完毕,那么SQL线程会自动将该relay log 文件删除掉。

下面是整个复制过程的原理图:

MySQL中怎样实现主从同步

四、主从同步延迟

mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的I/O线程到主库取日志,效率也比较高,但是,slave的SQL线程将主库的DDL和DML操作在slave实施。DML和DDL的io操作是随即的,不是顺序的,成本高很多,还可能存在slave上的其他查询产生lock争用的情况,由于SQL也是单线程的,所以一个DDL卡住了,需要执行很长一段事件,后续的DDL线程会等待这个DDL执行完毕之后才执行,这就导致了延时。当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,延时就产生了,除此之外,还有可能与slave的大型query语句产生了等待导致。

由于主从同步延迟是客观存在的,我们只能从我们自己的架构上进行设计, 尽量让主库的DDL快速执行。下面列出几种常见的解决方案:

  1. 业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。

  2. 服务的基础架构在业务和mysql之间加入memcache或者Redis的cache层。降低mysql的读压力;

  3. 使用比主库更好的硬件设备作为slave;

  4. sync_binlog在slave端设置为0;

  5. –logs-slave-updates 从服务器从主服务器接收到的更新不记入它的二进制日志。

  6. 禁用slave的binlog

关于MySQL中怎样实现主从同步就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中怎样实现主从同步

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL中怎样实现主从同步
    这篇文章将为大家详细讲解有关MySQL中怎样实现主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(1) statement : 记录每一条更改数据的s...
    99+
    2022-10-18
  • mysql中怎样配置主从同步
    这期内容当中小编将会给大家带来有关mysql中怎样配置主从同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 主host:www IP:192.168.9.124 从...
    99+
    2022-10-18
  • MySQL中怎么实现主从同步机制
    MySQL中怎么实现主从同步机制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最直观的表现为:mysql> show ...
    99+
    2022-10-18
  • Mysql 中怎么实现主从数据库同步
    这篇文章给大家介绍Mysql 中怎么实现主从数据库同步,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、主服务器1.1、创建一个复制用户,具有replication slave 权限。...
    99+
    2022-10-18
  • MySql主从同步配置及实现
    mysql主从复制 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群...
    99+
    2022-10-18
  • MYSQL架构中怎样进行主从半同步复制
    本篇文章为大家展示了MYSQL架构中怎样进行主从半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql 5.5 版本之后引入了半同步复制功能,主从服务器...
    99+
    2022-10-18
  • mysql5.7主从同步中binlog同步模式是怎样的
    今天就跟大家聊聊有关mysql5.7主从同步中binlog同步模式是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  mysql5.7主从同步...
    99+
    2022-10-18
  • redis怎么实现主从同步
    redis怎么实现主从同步?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。Redis主从复制可以根据是否是全量分为全量同步和增量同步。1 全量同步Redis...
    99+
    2022-10-18
  • MySQL中怎么设置主从同步
    MySQL中怎么设置主从同步,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1、  配置主库my.ini port=3306 ...
    99+
    2022-10-18
  • mysql中怎么配置主从同步
    今天就跟大家聊聊有关mysql中怎么配置主从同步,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 0.首先在准备两个机器A,B,在上面安装相同版本的...
    99+
    2022-10-18
  • mysql中怎么部署主从同步
    这篇文章将为大家详细讲解有关mysql中怎么部署主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 mysql主从同步部署: master:192....
    99+
    2022-10-18
  • mysql中怎么实现主主同步
    本篇文章为大家展示了mysql中怎么实现主主同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 A服务器: host 192.168.1.101 port 3...
    99+
    2022-10-18
  • MySQL 搭建主从同步实现操作
    目录一、MySQL 8.0 主从同步二、MySQL主从搭建2.1 Master 上的操作2.2 Slave 上的操作一、MySQL 8.0 主从同步 主从同步的流程(原理): mas...
    99+
    2022-11-13
  • 怎么样配置mysql主从复制、mysql-5.5异步及半同步
    下文主要给大家带来怎么样配置mysql主从复制、mysql-5.5异步及半同步,希望这些内容能够带给大家实际用处,这也是我编辑怎么样配置mysql主从复制、mysql-5.5异步及半同步这篇文章的主要目的。...
    99+
    2022-10-18
  • 怎样实现MYSQL主从搭建
    怎样实现MYSQL主从搭建,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一主单从步骤:1、配置master...
    99+
    2022-10-19
  • 怎么搭建mysql主从同步
    搭建mysql主从同步的方法首先,使用记事本打开主服务器my.cnf配置文件,在文件进行以下配置:log-bin = mysql-binserver-id = 1  # ...
    99+
    2022-10-23
  • linux中怎么配置mysql主从同步
    这期内容当中小编将会给大家带来有关linux中怎么配置mysql主从同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。linux下配置mysql主从同步的步骤 ...
    99+
    2022-10-18
  • MySQL中怎么实现主从复制和半同步复制
    这篇文章将为大家详细讲解有关MySQL中怎么实现主从复制和半同步复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、复制的介绍MySQL支持单向、异步复制...
    99+
    2022-10-18
  • Shell脚本实现监控MySQL主从同步
    代码如下: #!/bin/bash #check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LISTEN...
    99+
    2022-06-04
    主从 脚本 Shell
  • docker配置mysql实现主从同步问题
    主从同步遇到 Got fatal error 1236 from master when reading data from binary log: "Could not find first log file name in b...
    99+
    2018-08-25
    docker配置mysql实现主从同步问题
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作