MySQL主从复制的原理

MySQL复制技术介绍

主从复制是MySQL数据库的一种容灾备份方案;是mysql自带的功能,无需借助第三方工具,MySQL的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的binlog日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的SQL语句重新应用到mysql数据库中。

MySQL主从复制的应用场景

应用场景

数据备份与容灾、读写分离、业务拆分

使用公司

适合于初创公司,小型电商/互联网公司,一些小型云环境

切换技术

手工切换,时间:>30分钟(含重做主从关系,数据校验等)

自动切换,时间:按分钟计算

MySQL主从复制是如何工作的?

复制一共分3个步骤

01 master将改变记录到二进制日志 (binary log)中

(这些记录叫做二进制日志事件, binary log events)

02 slave将 master的 binary log events拷贝到它的中继日志(relay log);

03 slave重做中继日志中的事件,将日志操作还原并生成数据。

01 master记录二进制日志。在每个事务更新数据完成之前, master在二日志记录这些改变。 MySQL将事务串行的写入二进制日志,在事件写入二进制日志完成后,master通知存储引擎提交事务。

02 slave将 master的 binary log拷贝到它自己的中继日志。

首先, slave开始一个工作线程:I/O线程。

I/O线程在 master上打开一个普通的连接,然后开始 binlog dump process

Binlog dump process 从master的二进制日志中读取事件接受的单位是(event),如果已经跟上 master,它会睡眠并等待 master产生新的事件。

I/O 线程将这些事件写入中继日志。

03. SQL slave thread(SQL从线程)是处理该过程的最后一步。

SQL线程从中继日志读取事件,并重放其中的事件(回放的单位也是 event)而更新slave的数据,使其与 master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

在master中也有一个工作线程:和其它MySQL的连接样,slave 在 master中打开一个连接也会使得 master开始一个线程。

MySQL主从复制的常用拓扑结构

mysql 数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器 binlog文件的日志内容,解析出SQL重新更新到从服务器,使得主从服务器数据达到一致。

不推荐的方式

MySQL主从复制技术之同步方式

MySQL有四种同步方式

异步复制(asynchronous)

搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。但是这种架构数据是异步的,所以有丢失数据库的风险。

全同步复制(fully synchronous)

保证数据安全,不丢数据,损失性能。

传统半同步复制( Semi synchronous)

性能,功能都介于异步和全同步中间。从mysq5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。

无损复制,增强版的半同步复制( lossless replication)

数据零丢失,性能好,mysq5.7诞生

MySQL主从复制技术之GTID特性

什么是GTID?

GTID( Global Transaction Identifiers):对于一个已提交事务的编号,事务的唯一编号,并且是一个全局唯一的编号。GTID和事务会记录到 binlog中,用来标识事务。

GTD是用来替代以前传统复制方法( binlog+ position),MySQL5.6.2开始支持GTD。

MySQL支持GTID后,一个事务在集群中就不再孤单,在每一个节点中,如果存在具相同标识符的情况,可以避免同一个事务,在同一个节点中出现多次的情况。

GTID的出现,最直接的效果就是,每一个事务在集群中具有了唯一性的意义,相对于行复制来讲数据安全性更高,故障切换更简单。

MySQL主从复制技术之 GTID-GTID组成

GTID 是由 server_uuid:Sequence_Number。

Server_Uuid:是一个MySQL实例的全局唯一标识;存放为在 $datadir/auto.cnf

Sequence_Number:是 MySQL内部的一个事务的编号,一个 MySQL实例不会重复的序列号(保证服务器内唯一),也表示在该实例上已经提交事务的数量,并且随着事务提交而递增。

根据GTID可以知道事务最初是在哪个实例上提交的,方便故障排查和切换

cat /mysql/data/3306/data/auto.cnf
[auto]
server-uuid=1599dcea-5a7b-11e8-94bd-000c292834b0

2.6.2.MySQL主从复制的原理相关推荐

  1. MySQL主从复制异步原理以及搭建

    MySQL主从复制的原理: 1.首先,MySQL主库在事务提交时会把数据变更作为时间events记录在二进制日志文件binlog中:MySQL主库上的sync_binlog参数控制Binlog日志以什 ...

  2. mysql主从复制原理_你知道MySQL主从复制的原理吗?

    主从复制是怎么实现的呢?更新语句会记录 binlog,它是一种逻辑日志.有了这个 binlog,从服务器会获取主服务器的 binlog 文件,然后解析里面的 SQL 语句,在从服务器上面执行一遍,保持 ...

  3. mysql主从复制原理的理解,MySQL主从复制以及原理好理解)

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 1.在具有复杂业务的系统中,存在这样一种情况,即存在一个需要锁定表的sql语句,这会导致读取服务暂时不可用,然后会影 ...

  4. MySQL主从复制的原理及配置方法(比较详细)

    MySQL 的数据库的高可用性的架构大概有以下几种:集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题 一.复制的原理 MySQL 复制基于主服务 ...

  5. MySQL主从复制的原理:IO用于交互 SQL用于解析执行;主bin-log 从relay-log;

    作用 实时灾备,用于故障切换:读写分离,提供查询服务 过程 master开启bin-log功能,日志文件用于记录数据库的增删改 需要开启3个线程,master IO线程,slave开启 IO线程 SQ ...

  6. mysql主从复制(master-slave)_mysql主从复制------Master-Slave搭建及注意事项

    前言 关于mysql主从复制的原理实际上是很通俗易懂的,可是,在实际的搭建这个结构的时候,仍是会遇到不一样的状况的.因而下面介绍的是搭建Master-Slave的操做及注意事项,本文不含数据库的调优参 ...

  7. mysql主从复制实战

    一,mysql主从复制的原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新. ...

  8. [转] MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

    转载自: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  9. MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

    ..-------------------------------------master-------------------------------- mysql> GRANT REPLIC ...

最新文章

  1. java计算代码执行时间
  2. zabiix监控磁盘io
  3. TCP/IP协议简述
  4. Ubuntu18.04 下联想电脑 无法连接WIFI问题解决
  5. 智能手机拍照进化论:从传感器到算法摄影
  6. python做excel自动化-Python控制Excel实现自动化办公
  7. 使用 IntraWeb (25) - 基本控件之 TIWRegion
  8. 新中新电子f200a驱动安装_【电子税务局】出口退税功能上线指引
  9. 3D打印机Ender-3 V2 CR-10S CR10S PRO Ender-3 Ender 3PRO Ender 5更换BMG挤出机,挤出电机的脉冲值或传动值E如何修改
  10. UFS系列十:UFS电源管理
  11. 6 - 常用模块(os,sys,timedatetime,random,jsonpicle,shelve,hashlib)
  12. uni-app开发中的#ifdef MP是什么意思?条件编译
  13. 鸢尾花决策树分类及可视化
  14. 上海大学计算机考研改408,上海大学改考408!
  15. 【CTF】Misc7——乌云邀请码+图穷匕见+convert
  16. 中国研究的超级系统计算机,打造超级系统U盘
  17. 一天刷到5篇「x is All You Need」,当学术论文开始标题党……
  18. 图解 RNN, LSTM, GRU
  19. 数据归一化(normalizing)的直观理解和通俗解释。
  20. 不忘初心,方的始终,初心易得,始终难守,致2019

热门文章

  1. python字符编码在哪里_快速入手Python字符编码
  2. vue webpack 自动打开页面_vue中webpack技术详解
  3. Linux环境下配置Tomat
  4. class mywnd : pubic qwidget是什么意思_学了这么久java反射,你知道class.forName和classloader的区别吗?...
  5. c++ map初始化同时赋值_Golang学习笔记五--map
  6. springcloud @EnableDiscoveryClient注解作用
  7. 分享几段祖传的Python代码,拿来直接使用!
  8. 26岁,发25篇SCI,当上211教授、博导。
  9. sqlserver 字段中只有年月 加上中文年月_PowerBI 10月更新,全新图标正式亮相
  10. php怎么关联默认打开程序,win10系统打开文件时提示“请在默认程序控制面板中创建关联”如何解决...