MySQL数据同步基础

什么是数据同步

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

同步的流程

MySQL数据同步基础_第1张图片
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数据同步基础)