mysql binlog系列(一)----binlog介绍、日志格式、数据查看等

(一) binlog介绍

binlog,即二进制日志,它记录了数据库上的所有改变,并以二进制的形式保存在磁盘中;

它可以用来查看数据库的变更历史、数据库增量备份和恢复、Mysql的复制(主从数据库的复制)。

(二) binlog格式

binlog有三种格式:Statement、Row以及Mixed。

–基于SQL语句的复制(statement-based replication,SBR),
–基于行的复制(row-based replication,RBR),
–混合模式复制(mixed-based replication,MBR)。

2.1 Statement
每一条会修改数据的sql都会记录在binlog中。

优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。

缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题。

ps:相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题

2.2 Row

5.1.5版本的MySQL才开始支持row level的复制,它不记录sql语句上下文相关信息,仅保存哪条记录被修改。

优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题.

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。

ps:新版本的MySQL中对row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement模式来记录,如果sql语句确实就是update或者delete等修改数据的语句,那么还是会记录所有行的变更

2.3 Mixed

从5.1.8版本开始,MySQL提供了Mixed格式,实际上就是Statement与Row的结合。

在Mixed模式下,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。

2.4 查看与配置binlog格式

(1)查看binlog_format

show variables like 'binlog_format'

这里写图片描述

或者通过查看配置文件

whereis my.ini
cat /etc/my.cnf

这里写图片描述

(2)修改binlog_format

直接修改

set globle binlog_format='MIXED'

或者修改配置文件

vi /etc/my.cnf

(三) binlog开启与查看、删除

3.1 查看是否开启binlog

show variables like 'log_bin'

这里写图片描述

如果binlog没有开启,可以通过set sql_log_bin=1命令来启用;如果想停用binlog,可以使用set sql_log_bin=0。

3.2 获取binlog文件列表

show binary logs

3.3 查看当前正在写入的binlog文件

show master status

3.3 查看master上的binlog

show master logs

这里写图片描述

3.4 只查看第一个binlog文件的内容

show binlog events

这里写图片描述

3.5 查看指定binlog文件的内容

show binlog events in 'mysql-bin.000002'

3.6 删除binlog

(1)使用linux命令删除binlog文件

(2)设置binlog的过期时间

这里写图片描述

(3)手动删除binlog

reset master;//删除master的binlog
reset slave;    //删除slave的中继日志
purge master logs before '2012-03-30 17:20:00';  //删除指定日期以前的日志索引中binlog日志文件
purge master logs to 'mysql-bin.000002';   //删除指定日志文件的日志索引中binlog日志文件

(四) binlog的扩展

当停止或重启服务器时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增;此外,如果日志文件超过max_binlog_size(默认值1G)系统变量配置的上限时,也会生成新的日志文件(在这里需要注意的是,如果你正使用大的事务,二进制日志还会超过max_binlog_size,不会生成新的日志文件,事务全写入一个二进制日志中,这种情况主要是为了保证事务的完整性);日志被刷新时,新生成一个日志文件。

如:

flush logs

这里写图片描述

  • 34
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: mysql-binlog-connector-java是一个Java库,用于连接MySQL数据库的二进制日志binlog),以便实时监控和捕获数据库的更改。它可以用于构建实时数据流应用程序,例如数据同步、数据复制、数据分析等。该库由MySQL官方提供支持,并且在GitHub上开源。 ### 回答2: MySQL-Binlog-Connector-Java是一个开源的软件,专为Java开发人员设计,用于实时获取MySQL数据库操作的binlog并将其转换为Java对象。它是适用于MySQL 5.6和MySQL 5.7并且支持容器化部署的可靠且高效的系统。 MySQL-Binlog-Connector-Java解开了处理MySQL binlog的难题。在MySQL数据库中,binlog是记录所有数据库更改的二进制日志文件。利用它,可以追踪查询变更,还可以恢复遗失的数据,指定的时间二进制和进行主/从复制操作。但是,binlog文件通常是非结构化的二进制数据,这使得对其进行有意义的处理非常困难。 因此,MySQL-Binlog-Connector-Java可以解码binlog数据,并将其转换为高度可读的事件,以Java对象和数据流的形式提供给开发人员。它还提供了一个简单易用的Java接口,用于监听MySQL数据库中发生的更改并进行处理。这使得开发人员可以使用Java语言,轻松地创建实时监控,数据同步,在线分析等应用。 最后,值得一提的是,MySQL-Binlog-Connector-Java是一个开源的软件,意味着它是免费的并且可以在开源社区中拥有大量的开发人员和技术支持。此外,它的源代码是公开可用的,这使得开发人员可以根据自己的需要进行修改和定制。因此,MySQL-Binlog-Connector-Java是一种非常有用而且自由的工具,对于想要处理大量MySQL binlog数据的开发人员而言是不可或缺的。 ### 回答3: MySQL-Binlog-Connector-Java是一个为Java开发人员设计的开源项目,它能够读取并解析MySQL二进制日志binlog),并将其转换为易于处理的Java对象,以实现实时数据复制和同步。 该项目基于MySQL的复制技术构建,使它能够实现高效、可靠的数据库复制。通过将各种事件(如INSERT、UPDATE和DELETE)转换为Java对象,Java开发人员能够创建数据库复制和同步应用程序,为实时数据访问和分析提供支持。 MySQL-Binlog-Connector-Java的一个重要功能是支持数据筛选和转换。开发人员可以根据条件选择需要处理的事件,并且可以通过自定义代码将这些事件转换为他们所需的对象。此外,该工具还能够处理多个MySQL节点的同步,这使得在分布式应用程序构建中更加灵活。 使用MySQL-Binlog-Connector-Java的主要优势是实现高效的数据复制和同步,从而提供实时数据处理和分析支持。此外,由于其灵活性和可扩展性,该工具也被广泛用于构建分布式应用程序。 总之,MySQL-Binlog-Connector-Java是一个有效的工具,它可以帮助Java开发人员实现高效的数据复制和同步。它的灵活性和可扩展性使得它成为构建分布式应用程序的理想选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin.Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值