返回顶部
首页 > 资讯 > 数据库 >mysql5.7主从同步中binlog同步模式是怎样的
  • 626
分享到

mysql5.7主从同步中binlog同步模式是怎样的

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

今天就跟大家聊聊有关Mysql5.7主从同步中binlog同步模式是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  mysql5.7主从同步

今天就跟大家聊聊有关Mysql5.7主从同步中binlog同步模式是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

  mysql5.7主从同步中binlog同步模式(binlog_fORMat)中MIXED模式效率和稳定性最好。

  mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。

  一、同步模式

  1.STATEMENT模式(SBR)

  每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)

  2.ROW模式(RBR)

  不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。

  3.MIXED模式(MBR)

  以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

  二、binlog复制配置

  在mysql的配置文件my.cnf中,可以通过一下选项配置binglog相关

  binlog_format           = MIXED                         //binlog日志格式,mysql默认采用statement,建议使用mixed
  log-bin                 = /data/mysql/mysql-bin.log    //binlog日志文件
  expire_logs_days        = 7                           //binlog过期清理时间
  max_binlog_size         = 100m                       //binlog每个日志文件大小
  binlog_cache_size       = 4m                        //binlog缓存大小
  max_binlog_cache_size   = 512m                     //最大binlog缓存大小

  三、MIXED说明

  对于执行的SQL语句中包含now()这样的时间函数,会在日志中产生对应的unix_timestamp()*1000的时间字符串,slave在完成同步时,取用的是sqlEvent发生的时间来保证数据的准确性。另外对于一些功能性函数slave能完成相应的数据同步,而对于上面指定的一些类似于UDF函数,导致Slave无法知晓的情况,则会采用ROW格式存储这些Binlog,以保证产生的Binlog可以供Slave完成数据同步。

  现在来比较以下 SBR 和 RBR 2中模式各自的优缺点:

  SBR 的优点:

  历史悠久,技术成熟

  binlog文件较小

  binlog中包含了所有数据库更改信息,可以据此来审核数据库安全等情况

  binlog可以用于实时的还原,而不仅仅用于复制

  主从版本可以不一样,从服务器版本可以比主服务器版本高

  SBR 的缺点:

  不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候。

  调用具有不确定因素的 UDF 时复制也可能出问题

  使用以下函数的语句也无法被复制:

  * LOAD_FILE()

  * UUID()

  * USER()

  * FOUND_ROWS()

  * SYSDATE() (除非启动时启用了 --sysdate-is-now 选项)

  INSERT ... SELECT 会产生比 RBR 更多的行级

  复制需要进行全表扫描(WHERE 语句中没有使用到索引)的 UPDATE 时,需要比 RBR 请求更多的行级锁

  对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句

  对于一些复杂的语句,在从服务器上的耗资源情况会更严重,而 RBR 模式下,只会对那个发生变化的记录产生影响

  存储函数(不是存储过程)在被调用的同时也会执行一次 NOW() 函数,这个可以说是坏事也可能是好事

  确定了的 UDF 也需要在从服务器上执行

  数据表必须几乎和主服务器保持一致才行,否则可能会导致复制出错

  执行复杂语句如果出错的话,会消耗更多资源

  RBR 的优点:

  任何情况都可以被复制,这对复制来说是最安全可靠的

  和其他大多数数据库系统的复制技术一样

  多数情况下,从服务器上的表如果有主键的话,复制就会快了很多

  复制以下几种语句时的行锁更少:

  * INSERT ... SELECT

  * 包含 AUTO_INCREMENT 字段的 INSERT

  * 没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句

  执行 INSERT,UPDATE,DELETE 语句时锁更少

  从服务器上采用多线程来执行复制成为可能

  RBR 的缺点:

  binlog 大了很多

  复杂的回滚时 binlog 中会包含大量的数据

  主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写问题

  UDF 产生的大 BLOB 值会导致复制变慢

  无法从 binlog 中看到都复制了写什么语句

  当在非事务表上执行一段堆积的SQL语句时,最好采用 SBR 模式,否则很容易导致主从服务器的数据不一致情况发生

  另外,针对系统库 mysql 里面的表发生变化时的处理规则如下:

  如果是采用 INSERT,UPDATE,DELETE 直接操作表的情况,则日志格式根据 binlog_format 的设定而记录

  如果是采用 GRANT,REVOKE,SET PASSWord 等管理语句来做的话,那么无论如何都采用 SBR 模式记录

  注:采用 RBR 模式后,能解决很多原先出现的主键重复问题。

看完上述内容,你们对mysql5.7主从同步中binlog同步模式是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: mysql5.7主从同步中binlog同步模式是怎样的

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

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

猜你喜欢
  • mysql5.7主从同步中binlog同步模式是怎样的
    今天就跟大家聊聊有关mysql5.7主从同步中binlog同步模式是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  mysql5.7主从同步...
    99+
    2024-04-02
  • MySQL5.7多主一从同步配置
    这篇文章主要讲解了“MySQL5.7多主一从同步配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL5.7多主一从同步配置”吧!部署环境    注:使用docke...
    99+
    2023-06-19
  • MySQL中怎样实现主从同步
    这篇文章将为大家详细讲解有关MySQL中怎样实现主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(1) statement : 记录每一条更改数据的s...
    99+
    2024-04-02
  • mysql中怎样配置主从同步
    这期内容当中小编将会给大家带来有关mysql中怎样配置主从同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 主host:www IP:192.168.9.124 从...
    99+
    2024-04-02
  • Redis中的主从同步和哨兵模式是什么
    本篇内容主要讲解“Redis中的主从同步和哨兵模式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中的主从同步和哨兵模式是什么”吧!主从同步主从同...
    99+
    2024-04-02
  • mysql主从模式同步的设置方法
    本篇内容介绍了“mysql主从模式同步的设置方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!http:/...
    99+
    2024-04-02
  • CentOS 7 MySQL5.7 主从只同步部分库或表
      同步部分数据有两个思路: master只发送需要的; 优点:中继日志小;如果多从库,只需要在主库中统一控制  缺点:中途修改比较麻烦,不能控制同步的表 slave只接收想要的 优点:中途修改同步的表或库方便;可以控制...
    99+
    2018-10-18
    CentOS 7 MySQL5.7 主从只同步部分库或表
  • MongoDB主从模式中怎么手动强制同步数据
    MongoDB主从模式中怎么手动强制同步数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 如果slave因为特...
    99+
    2024-04-02
  • mysql主从同步指的是什么
    mysql主从同步指的是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql主从同步的意思为备份,主库(Maste...
    99+
    2024-04-02
  • mysql中怎么配置主从同步
    今天就跟大家聊聊有关mysql中怎么配置主从同步,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 0.首先在准备两个机器A,B,在上面安装相同版本的...
    99+
    2024-04-02
  • mysql中怎么部署主从同步
    这篇文章将为大家详细讲解有关mysql中怎么部署主从同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 mysql主从同步部署: master:192....
    99+
    2024-04-02
  • MySQL中怎么设置主从同步
    MySQL中怎么设置主从同步,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1、  配置主库my.ini port=3306 ...
    99+
    2024-04-02
  • 简单的mysql主从同步
    1 准备好两台mysql(192.168.206.128(这台做主库)     192.168.206.129(从库)) 2 设置主库 #vi /etc/mysql/my.cnf      [mysqld]          log-b...
    99+
    2020-12-26
    简单的mysql主从同步
  • Redis的主从同步解析
    一、Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断...
    99+
    2022-06-04
    主从 Redis
  • mysql主从同步的原理
    mysql 主从同步是一种数据复制技术,通过将主服务器数据同步到从服务器以实现一致性。同步过程涉及:1. 从服务器连接主服务器并请求二进制日志副本;2. 主服务器 i/o 线程将二进制日...
    99+
    2024-08-01
    mysql
  • mysql5.6半同步主从的安装步骤
    这篇文章主要讲解了“mysql5.6半同步主从的安装步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql5.6半同步主从的安装步骤”吧! 一 配置...
    99+
    2024-04-02
  • MYSQL架构中怎样进行主从半同步复制
    本篇文章为大家展示了MYSQL架构中怎样进行主从半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql 5.5 版本之后引入了半同步复制功能,主从服务器...
    99+
    2024-04-02
  • redis怎么实现主从同步
    redis怎么实现主从同步?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。Redis主从复制可以根据是否是全量分为全量同步和增量同步。1 全量同步Redis...
    99+
    2024-04-02
  • 怎么搭建mysql主从同步
    搭建mysql主从同步的方法首先,使用记事本打开主服务器my.cnf配置文件,在文件进行以下配置:log-bin = mysql-binserver-id = 1  # ...
    99+
    2024-04-02
  • mysql主从同步怎么实现
    mysql 主从同步实现 什么是 MySQL 主从同步? MySQL 主从同步是一种数据复制机制,其中一台服务器(主服务器)将数据更改复制到一台或多台其他服务器(从服务器)。 如何实现 ...
    99+
    2024-05-22
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作