oracle 二进制日志格式,二进制日志文件内容和中继日志内容的区别

二进制日志文件内容和中继日志内容的区别

首先分析下:二进制日志记录的是主库的修改行为,而中继日志记录的是接收自主库的二进制日志,那是否可以认为:从库的中继日志=主库的二进制日志呢?至少Oracle 物理备库的归档=主库的归档 可以这么认为。

以下开始做实验:

以下5.112是主库,5.117是从库,配了半同步。

首先主库上执行flush logs;生成了新的二进制日志,同时从库的中继日志发现也跟着切换了。再执行一条delete操作后,我们来看结果。

我们先登录数据库查现在的二进制日志和中继日志信息。

b15a4a92f47b4b15c54322e82460c7bb.png

主库现在的二进制文件是mysql-bin.000058,位置点是335

这个从库上也能查到:

58964df1ee23f2bd755b9ea565e878b4.png

再看物理文件:

主库的二进制日志:

751cbc50caf6d7441dbfcb2740a96d41.png

注意到了没有,物理文件的大小跟主从库的POS值(位置点)是一样的!!!

从物理文件来看,主从库的文件大小并不一致,难道主从库的这两个文件内容不一样?我们用mysqlbinlog导出内容来看看。

主库:mysqlbinlog --base64-output=decode-rows -v -v mysql-bin.000058 > binlog

从库:mysqlbinlog --base64-output=decode-rows -v -v mysql-relay-bin.000031 > relaylog

使用工具,对比一下内容:

88c5f763ef49043c541dae511edce4fe.png

可以发现:二进制日志和中继日志除了开头注释部分和位置点信息不一样外,其他信息是一样的,而且开头的注释信息无关紧要。注释信息以下,主库的二进制日志位置点是120,从库的中继日志是283,这也是我们每次执行flush logs;查到的第一个位置点。同时注释信息以下,二进制和中继日志的每个位置点都差了163。

所以综上,二进制日志文件内容和中继日志内容的区别是:

1. 两者文件开头的注释内容不一样,两者执行的内容是一样的。

2. 两者主要信息的位置点差了163。

3. 两种文件的位置点值,可认为跟其文件大小一致。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值