mysql主从查看sbr rbr_MySQL主从同步 - osc_zj67f075的个人空间 - OSCHINA - 中文开源技术交流社区...

一. 基本概念

主从同步就是当master(主)库的数据发生变化的时候,实时的将变化会同步到slave(从)库。

主从同步的优点:

水平扩展数据库的负载能力

增加容错率,提供高可用

数据备份

二. 基本原理

我们对数据库的所有操作都是在master上进行操作,当master上进行操作时,slave会快速的接收到这些操作信息,然后将这些操作作用在slave上,从而实现同步。

2.1 同步机制

在master机器上,所有的同步事件都会被写到一个特殊的日志文件(binary-log)中;

在slave机器上,slave从master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作;

2.2 binary-log的三种模式

基于SQL语句的复制(statement-based replication, SBR),会将对数据库操作的sql语句写入到binlog中;

基于行的复制(row-based replication, RBR),将每一条数据的变化写入到binlog中;

混合模式复制(mixed-based replication, MBR),Mysql决定什么时候用什么模式,默认为SBR模式;

SBR优点:

binlog文件较小;

binlog中包含了所有数据库修改信息,不仅可以用来复制,还可以用来还原;

主从版本可以不一样,从服务器版本可以比主服务器版本高;

SBR缺点:

不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候;

调用具有不确定因素的 UDF 时复制也可能出疑问;

INSERT … SELECT 会产生比 RBR 更多的行级锁;

RBR优点:

任何情况都可以被复制,最安全可靠;

从服务器上的表如果有主键的话,复制就会快很多;

执行 INSERT,UPDATE,DELETE 语句时锁更少;

从服务器上采用多线程来执行复制成为可能;

RBR缺点:

binlog 大了很多;

复杂的回滚时 binlog 中会包含大量的数据;

UDF 产生的大 BLOB 值会导致复制变慢;

不能从 binlog 中看到都复制了写什么语句(加密过的);

2.3 同步过程

Master : 当slave连接到master的时候,master机器会为slave开启binlog dump线程。

当master 的 binlog发生变化的时候,binlog dump线程会通知slave,并将相应的binlog内容发送给slave。

Slave :当主从同步开启的时候,slave上会创建2个线程.

I/O 线程 :该线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log(中继日志);

SQL线程:该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值