聊一聊maridb的binlog|8月更文挑战

427 阅读2分钟

1、什么是Binlog

解释:Binlog 即 Binary Log,是MySQL中的一种二进制日志文件。它可以记录MySQL内部对数据库的所有修改操作记录。
作用:设计Binlog最主要的目的是满足数据库主从复制和增量恢复的需要。

展示binlog中存储的是什么还是用一张图展示比较直观,这是我本地在基于一个插入操作的数据内容:

image.png 内容方便大家进行对比操作并且文本中没有牵涉到较为隐私的信息,因此这里吧文本信息贴出来方便参考文章的时候进行对比展示和拷贝:

Log_namePosEvent_typeServer_idEnd_log_posInfo
mysql-bin.000001328Gtid1370BEGIN GTID 0-1-1
mysql-bin.000001370Annotate_rows1509/* ApplicationName=IntelliJ IDEA 2020.2.2 */ insert into mybatis.user(name, age, des) value ('demo09', 11, 'demo09')
mysql-bin.000001509Table_map1566table_id: 19 (mybatis.user)
mysql-bin.000001566Write_rows_v11622table_id: 19 flags: STMT_END_F
mysql-bin.000001622Xid1653COMMIT /* xid=150 */

2、如何开启binlog

2.1、修改my.ini文件中的配置并重启

(widnows操作系统,这里重启等命令我就不解释了,后面也是)

[mysqld]
datadir=C:/Program Files/MariaDB 10.2/data
port=3306
innodb_buffer_pool_size=2029M
character-set-server=utf8
lower_case_table_names=2
slow_query_log=1
slow_query_log_file=C:\\Program Files\\MariaDB 10.2\\log\\localhost-slow.log
long_query_time=0.01

# Binary Logging
log_bin=mysql-bin
binlog_format=ROW

[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.2/lib/plugin

你需要增加的内容为:

# Binary Logging
log_bin=mysql-bin
binlog_format=ROW

之后重启,查看是否开启:

image.png

3、查看binlog的文件信息和日志位置

  • 命令
show master status;

因为这里的binlog信息在截图之前被我操作过了,所以当前的position信息发生的变化,不过这个不是关注的重点;我这里更加关注的是,里面存储的是什么数据,我每一步操作会导致数据增加哪些东西!!!!! image.png

得到文章中初始化的日志信息之前,我进行一个插入操作,插入操作的内容你也可以自定选择,我这里把我的表结构和执行脚本信息粘贴出来,仅供参考:

create table user
(
    id   int(32) auto_increment
        primary key,
    name varchar(32) null,
    age  int(32)     null,
    des  varchar(32) null
);

create index user_name_index
    on user (name);
    
select * from mybatis.user;
insert into mybatis.user(name, age, des) value ('demo09', 11, 'demo09');

4、查看日志中记录的内容

  • 命令
show binlog events in 'mysql-bin.000001' from 328;
  • 展示效果

image.png

5、总结

这里只是对binlog做了一些解释性的说明,但是里面的具体内容如果感兴趣的话还是需要自己去探究一下。 我这里之所以提到binlog这个概念,主要是因为大家提及到用binlog可以实现缓存数据库和mysql数据的数据一致性。但是,具体的实现方法我还在探究,如果后面有相关的内容产出,我会把另一篇文章的地址粘贴在文章后面。