MySQL数据同步基础

什么是数据同步

我们可以通过服务器配置一个主库和一个备库(或多个备库),主库的数据可以同步到备库上,备库本身也可以是另外一台服务器的主库

同步的流程

mysql 10.52.02.png
  1. 主库把数据更改记录到二进制日志中
  2. 备库将主库的二进制日志写入到自己的中继日志中
  3. 备库读取中继日志重放到备库数据上

复制基于BinLog日志

MySQL复制是基于BinLog日志,BinLog日志有三种类型

  1. 基于语句 : binlog中存储SQL语句,存储日志量是最小的,但是使用函数的SQL语句无法正确同步到备库
  2. 基于行 : 将变更的数据记录到BinLog日志中,存储量大,而且无法看到执行的SQL语句
  3. 混合:介于行和语句之间,对于不确定的操作使用基于行的模式,如果每天数据量操作量大,产生的日志比较多,可以考虑选择使用混合模式

控制复制内容

Mysql复制可以对整个实例进行复制,也可以对实例中的某个库或是某个表进行复制

1.在主库的配置

--binlog-do-db//需要同步的数据库
--binlog-ignore-db//忽略同步的数据库

2.在备库的配置

--replicate-do-db//同步的数据库
--replicate-igonre-db//不同步的数据库
--replicate-do-table //同步的表
--replicate-igonre-table //不同步的表 
--replicate-wild-do-table //同步的表(可使用匹配符)
--replicate-wild-ignore-table//不同步的表(可使用匹配符)

半同步复制

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,此时主上已经提交的事务可能并没有传到从上,导致新主上的数据不完整。半同步复制即,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《高性能MySQL》&《MySQL技术内幕 InnoDB存储引擎》笔记 第一章 MySQL架构与历史 MySQL的...
    xiaogmail阅读 12,840评论 0 39
  • 一、什么是Mysql主从复制 MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另...
    人在码途阅读 2,817评论 0 23
  • 前幾天轉發微博的時候,我只是說:那時,我爸還在。 我是個日日糊塗得過且過的人,以至於無法一下準確...
    亦木二巾阅读 220评论 0 0
  • 涨满阳光的黄金麦粒 成为麦穗沉重的负担 倒伏在风的抚慰里 农夫 草帽 镰刀 摇荡在明黄的波纹里 「请不要伤害我」 ...
    INKMAX阅读 534评论 0 2