文章目录

  • 生猛干货
  • 官方文档
  • 主从复制的分类
  • 基于SQL语句的复制-SBR
    • 优点
    • 缺点
  • 基于行的复制 RBR
    • 优点
    • 缺点
  • MySQL主从复制的过程
  • 搞定MySQL

生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


官方文档

https://dev.mysql.com/doc/

如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


主从复制的分类

根据主节点配置的binlog的格式,可以分为

  • 基于SQL语句的复制(statement-based replication,SBR),

    这种情况是主节点的binlog格式为 STATEMENT

  • 基于行的复制(row-based replication,RBR),

    这种情况是主节点的binlog格式为ROW

  • 混合模式复制(mixed-based replication,MBR)。

    这种情况是主节点的binlog格式为MIXED

我们来看下,这三种格式对 主从复制的影响


基于SQL语句的复制-SBR

MySQL5.1.4 之前只有这种模式。 又称之为逻辑复制 。

主库记录SQL修改语句,从库回放这些SQL 。


优点

  • 基于段的模式,binlog相对较小,因此生成的日志量少,节省网络传输I/O
  • 并不要求主从数据库的表的定义完全相同。举个例子,比如主从上有个表的类型不同,但是是兼容的,碰巧这个表也是个大表 ,这样的话修改大表,可以先在从库修改,再切过去。
  • 相比基于行的复制方式更为灵活

缺点

  • 基于段的模式,对于非确定性的时间,无法保证主从复制的一致性, 比如UUID, now等函数(因为是执行SQL,那uuid这种函数相同的可能性基本为0),造成主从复制链路的中断
  • 对于存储过程,触发器,自定义函数修改也可能造成数据不一致
  • 相比基于行的复制方式在从节点上执行需要更多的行锁 。 当执行一条批量的SQL,在主库上锁定了一批数据,那么在从节点上也要锁定相同的一批数据。

基于行的复制 RBR

主库的二进制日志格式为ROW。

优点

  • 因为binlog的格式row,所以可以应用于任何SQL的复制,包括非确定函数,存储过程、自定义函数等。因为它同步过去的是值,举个例子,UUID,从库执行的时候不是重新执行UUID,而是把主库的这个已经生成的值直接同步到从节点上。
  • 可以减少数据库锁的使用

缺点

  • 求主从数据库的表结构必须要相同,对于相同的列,即使顺序不同,有可能会引起主从中断
  • 无法在从节点单独执行触发器,有的时候你只想在从库上执行一些操作,是不行的。 但基于SQL语句的没问题,执行那些变更的SQL就行了,但是基于行的就不行了。

MySQL主从复制的过程

1.主节点将变更写入binlog , 因此主节点必须开启binlog .

2. 从节点读取主节点的binlog,并保存到从服务本地的relay log 中继日志

要完成保存到中继日志中,从服务器启动一个I/O 线程,连接到主库,主库上启动 bin log dump线程,从节点读取。

3. 启动SQL Log线程,在从节点上重返relay_log中的日志

基于SQL段的日志是在从库上重新执行记录的SQL

基于Row的日志这是在从库上直接应用对数据库行的修改


搞定MySQL

MySQL-binlog格式对主从复制的影响MySQL主从复制的过程相关推荐

  1. mysql 带宽测试_网络带宽如何影响 MySQL 性能

    网络是数据库基础架构的主要部分.但是,通常性能基准测试是在本地计算机上完成的,客户端和服务器并置在一起.这样做是为了简化结构并排除一个以上的变量(网络部分),但是我们也忽略了网络对性能的影响. 对于像 ...

  2. mysql query browser的使用_影响MySQL性能的配置参数

    (一)连接 连接通常来自Web服务器,下面列出了一些与连接有关的参数,以及该如何设置它们.1.max_connections这是Web服务器允许的最大连接数,记住每个连接都要使用会话内存(关于会话内存 ...

  3. MySQL Binlog 介绍

    Binlog 简介 MySQL中一般有以下几种日志: 日志类型 写入日志的信息 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 二进制日志 记 ...

  4. MySQL Binlog三种格式介绍及分析

    一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在binlog ...

  5. MySQL Binlog解析

    概述 MySQL的安装可以参考:Linux(CentOS)中常用软件安装,使用及异常--MySQL, VmTools MySQL关于Binlog的官方文档:The Binary Log 基于Binlo ...

  6. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  7. 浅谈MySQL Binlog

    1 什么是binlog? binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新状况,在mysql主从复制中就是依靠的binlog.可以通过语句"show binlog ev ...

  8. mysql binlog协议_mysql binlog协议分析--具体event

    这几天在修改canal, 连接mysql和maria接收到的event有所区别 拿一个简单的insert sql来举例 mysql 会有以下几个event写入到binlog里 1.ANONYMOUS_ ...

  9. MySQL binlog 数据恢复

    不求人,MySQL Binlog数据恢复 文章目录 不求人,MySQL Binlog数据恢复 浅谈恢复形式 开启 binlog 及配置 删库跑路(搭建测试数据库,然后删除它) 起死回生(分析binlo ...

最新文章

  1. 【Linux sshfs】sshfs将远程目录挂载到本地目录
  2. java mysql embedded,java-将MySQL Connector / MXJ用于应用程序的优点/缺点/替代品有哪些...
  3. ws2_32.dll的妙用与删除 (禁网)
  4. 二叉树C++ | 查找节点(中序搜索)_5
  5. 阿里云ECS利用密钥对ssh登录服务器
  6. 在centos7部署etcd v3的c++客户端
  7. Centos8 安装 mariadb 最新版 10.5.x
  8. 【C#】1.2 控制台应用程序学习要点
  9. 完美解决“运行引擎需要DX11特性等级10.0”
  10. 一文掌握步进电机控制
  11. 【转】对前端质量保障的思考 - Barret Lee
  12. php 养宠物,养宠物必知的十个知识,关爱宠物注重细节
  13. 支付宝支付对账单java_[Java]解析支付宝对账单csv
  14. xdocreport根据模板生成合同(docx/pdf)神器:(三)如何制作报告模板并根据它生成docx或者ppt
  15. Android 科大讯飞语音评测SDK 踩坑实录
  16. Android: 如何切换 SCO 链路。
  17. TOPSIS--优劣解距离法
  18. 移动端web界面开发
  19. Ubuntu 怎么重启网络
  20. 22 个免费的网页设计插图资源

热门文章

  1. ssh linux mysql 乱码_JAVA ,SSH中文及其乱码问题的解决 6大配置点 使用UTF-8编码
  2. Ubuntu20.04软件源更换
  3. ubuntu 安装spark
  4. shell 取中间行的第一列_shell脚本的使用该熟练起来了,你说呢?(篇三)
  5. 电脑编程教学_河东CNC产品零件编程培训量身定制课程大纲
  6. Leetcode 344. 反转字符串 (每日一题 20210812)
  7. 寻找搜索二叉树中两个错误的节点
  8. 有负权重边的图可以有拉普拉斯矩阵吗?
  9. 数据可视化应用案例:从面积到人口,再到经济、房贷等等方面透析重庆市
  10. MATLAB实现批量处理图像图片的两种方法