Mysql Classic Replication

一、传统复制的组成:

1、master server:

用户写数据。

生成binlog。

2、slave server:

接收master传来的binlog。

应用这些binlog从而达到重现master的用户操作。

二、传统复制的原理:

1、master跟新的数据,要写binlog。

2、slave在master注册一个i/o_thread进程,来捕获binlog日志的变更。

3、i/o_thread截取日志变更之后写入到本地的relay log里。

4、然后通过sql_thread到relay log 里进行解析执行到slave端。

5、在解析的过程中会判断是否存在主键,如果没有,在查看是否有二级索引,如果没有,就直接全表扫描。

三、binlog的主要作用:

1、记录master变更的日志文件。

2、记录的格式分为statement(SBR)、ROW(RBR)、MIXED格式。

3、Event是binlog的最小单位。

4、transaction是由多event组成。

5、binlog由两种文件组成:一种是binary log file;另一种是binary log index

四、binlog的三种日志格式:

1、STATEMENT:记录的是逻辑操作,即用户执行过的sql。

2、ROW:记录的是物理操作,即用户实际修改的数据。

3、MIXED:默认使用statement记录,当遇见不确定的数据时,自动幻化为ROW格式。

注意:

所有的DCL和DDL都是用statement格式记录。

statement是一个sql对应一个event。

row是一个sql对应多个event。

五、statement和row格式的优缺点:

(一)、statement格式:

优点:

1、binlog文件较小。

2、包含所有用户执行的原始sql,方便统计和审计。

3、可以认为听过binlog数据还原某些操作。

4、主从的binlog 版本协议兼容性较好。

缺点:

1、存在安全隐患,可能导致主从不一致。(非常严重了,一般不适用生产环境)

2、对一些特殊函数赋值不准确或者不能复制。

例如:

LOAD_FILE()

UUID()

USER()

FOUND_ROWS()SYSDATA()

(二)、row格式:

优点:

1、相比statement更加安全的复制格式。(选row模式的更大原因)

2、在某些情况下复制速度更快。(复杂sql,表有主键)

3、产生比statement更少的锁。

4、所有特殊函数都能复制。

缺点:

1、binlog文件较大。在MySQL-5.6新特性参数binlog_row_image解决此问题。

2、单sql全表更新会产生大量binlog。

3、无法从binlog看见用户执行的sql。MySQL-5.6新特性参数binlog_rows_query_log_event解决此问题。

4、由于binlog太大,容易造成主从复制端的延迟。

六、搭建传统方式必要的参数:(一个是数据file,一个是位置pos)

(一)、master端:

1、获取master当前的数据快照,并获取当前的binlog号和pos号。

2、数据快照可以通过mysqldump或者Xtrabackup获取。

3、也可以停机考配数据文件。(此功能在5.6已经不能使用)

(二)、slave端:

1、通过获取数据快照搭建一个mysql服务器。

2、然后通过快照的master的binlog文件和pos来开启复制。

七、传统复制日志补齐的方式:

问题:(一主两从结构)

当master1挂掉了,需要slave1专程master,但是发现slave1的binlog记录已经到了100,而slave2记录的binlog只到90,基于传统日志怎么样进行补齐?

解决方法:

1、如果没有用到mha,就会选择slave1作为主库。

2、并在slave1上做show master status得到master的log便宜量。

3、然后在slave2上执行change语句。挂在到slave1上。

注意:

1、按照传统的方式很容易出现数据不一致,因为slave2上的90~100之间的数据已经不能同步到slave2上了。

2、这个时候可以利用mha来补救之间的数据。

3、但是在GTID出现之后,MHA已经没有价值了,因为GTID会在master_auto_postion=1;然后自己去匹配GTID的断点,进行数据的不救。

原文:http://www.cnblogs.com/abobo/p/4239875.html

mysql 有没有sysdata_MySQL传统的同步复制的概念和要点相关推荐

  1. 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  2. Mysql原理、主从复制、半同步复制及基于SSL复制

    本篇博文主要讲解Mysql主从复制.半同步.基于SSL加密的复制 简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上 ...

  3. MySQL 数据库双向同步复制

    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...

  4. MySQL 半同步复制+MMM架构

    介绍 上篇文章介绍了MMM架构的实现方法,但是上篇文章的MMM方案的复制是异步复制,异步复制的主要问题在于当主从存在延时时如果主机出现了故障导致了主从切换时这时将会存在数据丢失:mysql为了解决异步 ...

  5. MHA-结合MySQL半同步复制高可用集群(Centos7)

    目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) ...

  6. MySQL 8 复制(二)——半同步复制

    目录 一.简介 二.性能提升 1. 支持发送二进制日志事件和接收ACK的异步化 2. 控制主库接收确认反馈从库的数量 3. 二进制日志互斥锁改进 三.数据一致性 1. 源码剖析 2. rpl_semi ...

  7. mysql 同步 异步_MySQL异步复制、半同步复制详解

    MySQL数据复制的原理图大致如下: 从上图我们可以看出MySQL数据库的复制需要启动三个线程来实现: 其中1个在主服务器上,另两个在从服务器上.当发出START SLAVE时,从服务器创建一个I/O ...

  8. 企业级运维——Mysql主从复制(异步、半同步、全同步)

    文章目录 主从复制原理 1.主节点 binary log dump 线程 2.从节点I/O线程 3.从节点SQL线程 主从复制过程 异步模式(mysql async-mode) 半同步模式(mysql ...

  9. Centos mysql5.7 主从复制 之 无损复制,增强版的半同步复制 ( lossless replication )单向同步

    mysql 有四种同步方式: 1.异步复制( asynchronous replication) 原理:在异步复制中,master写数据到binlog且sync,slave request binlo ...

最新文章

  1. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
  2. python添加、修改、删除、访问类对象属性的2种方法
  3. 源码之ListView分析
  4. Linux查看硬件信息很Easy
  5. 【Python】密码生成器
  6. 三星GalaxyS21或取消附赠有线耳机:捆绑卖新款无线耳机
  7. LeetCode(908)——最小差值 I(JavaScript)
  8. CentOS7安装python3.6.6(解决所有安装异常情况!!!)
  9. 骆驼IPTV后端源码+前端APP
  10. PLC通过控制器控制步进电机
  11. 电脑登陆出现此工作站和主域间的信任关系失败
  12. vue cle新建vue项目
  13. ERP : 经济批量
  14. nodejs实现公众号服务URL绑定验证,nodejs实现公众号关注并回发送一条消息,以及关注之后的聊天自动回复消息
  15. Spring Cloud Stream报错:Invalid bean definition with name:bean definition with this name already exist
  16. 【转】CLR20R3 程序终止的几种解决方案
  17. Axure RP 从入门到精通(四十二)案例 - 淘宝搜索框
  18. 技术总监的校招之旅——分享校招全攻略指南(万字长文)
  19. linux smit工具,Aix操作系统SMIT工具
  20. 谨防上当:3月1日微信支付宝个人收款码是可以继续使用的-附图

热门文章

  1. 【Protobuf协议】003-嵌套类型、更新一个消息类型、Any、Oneof、Map(映射)、包
  2. Python面向对象二 封装与修饰器
  3. c语言中位运算之布尔运算
  4. git:什么是git
  5. 金融理财直播大热,机构各出奇招
  6. 《Vue》聊一聊实际项目中前端的几种皮肤实现和优缺点
  7. 公平锁与非公平锁的核心原理
  8. java 字符串 去除_java 字符串中去除特定的字符
  9. 带有酒店评论的情绪分析 - 处理数据
  10. 把两个字符合并成单个字符(0,a 合成0x0a)