当前位置: 首页 > news >正文

MySQL Binlog实战应用之一

一、前言

开发业务系统尤其是与财务相关的系统,需要记录每一笔变更操作的日志,这一般有两种实现方案。

1、代码中通过AOP实现,提供注解跟踪记录日志,这种方案能够比较清晰地以业务角度记录操作日志,但记录变更前的旧值会比较困难。

2、对接Binlog日志解析数据生成日志数据,这种方案可以记录字段变更前旧值以及变更后的值,但日志不够清晰,主要是记录谁什么时间对哪张表哪个字段做了变更,变更前数据是什么,变更后数据是什么。

这两种方式我们项目中都有应用,Binlog这一系列文章主要围绕方案二讲解实施过程一些技术知识点。

二、MySQL Binlog 介绍

1、BinLog是什么

BinLog记录数据库所有表结构变更(create alter table)以及表数据修改(insert、update、delete)的二进制日志,它不会记录select这种对数据没有变更的操作。

最开始了解到BinLog是在2007年左右,当时公司会员数据库是1主3从架构,主从复制其实是依赖于binlog,印象比较深的就是主从复制延迟的问题。后来在做对接Vsearch时,数据增量当时有考虑通过BinLog完成同步,不过后来还是通过代码来实现增量数据同步到Vsearch中,具体原因现在想不起来了。

2、开启BinLog

安装的MySQL默认是没有开启BinLog的,可以用命令进行确认

最简单配置只要一行代码,在/etc/my.cnf配置文件[mysqld]下面加上一条语句

log-bin=mysql-bin即可开启binlog。

注:如果是5.7以上版本,需要设置server-id.如果是单机随便指定一个值如果是集群不要重复。

expire_logs_days:不指定时默认为0,binlog不会自动清理,可以根据实际情况修改这个值,超过天数就自动清理掉。

max_binlog_size:日志文件超过这个限定值并且是另一个事务写入时,会新建一个mysql-bin.00000X日志文件。

然后重启MySQL,log_bin变量的值变成ON就说明配置生效了。

3、三种模式

  • ROW

    记录的方式是行,即如果批量修改数据,记录的不是批量修改的SQL语句事件,而是每条记录被更改的SQL语句。

  • Statement

    记录每一条修改数据的SQL语句(批量修改时,记录的不是单条SQL语句,而是批量修改的SQL语句事件)

  • Mixed

    前两种模式的结合。在Mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种.

三、MySQLBinLog

BinLog是二进制文件,无法直接打开,可以使用MySQL自带的MySQLBinLog以查看文件内容。

往user表写入一条数据,然后update,然后执行如下命令。

mysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000002

http://www.lryc.cn/news/217072.html

相关文章:

  • 【MySQL】MVCC机制(undo log,read view)
  • gma 2 教程(三)坐标参考系统:3.投影方法
  • 蓝桥杯每日一题2023.11.2
  • Leetcode67二进制求和
  • 线性代数 第五章 特征值与特征向量
  • Python嵌入式数据库 / 轻量级数据库 / 小型数据库介绍(SQLite、Pandas DataFrame、TinyDB)(python数据库)
  • USB PD v1.0快速充电通信原理
  • 【华为】路由器以PPPoE拨号接入广域网
  • Linux内核分析(一)--内核架构和子系统
  • 【PyQt学习篇 · ⑨】:QWidget -控件交互
  • 新版本IntelliJ IDEA(如2023)中运行Spring Boot找不到VM options进行端口的修改的问题解决
  • Swift语言配合HTTP写的一个爬虫程序
  • 【lvgl】linux开发板搭建环境
  • C之(10)CMocka-单元测试框架使用
  • 如何在idea中使用maven搭建tomcat环境
  • 单点登录
  • 大数据(十):数据可视化(二)
  • pytorch+LSTM实现使用单参数预测,以及多参数预测(代码注释版)
  • 腾讯云3年/5年特惠云服务器购买入口及攻略
  • 【Linux】jdk Tomcat MySql的安装及Linux后端接口部署
  • 天空卫士为集度智能汽车系上“安全带”
  • vue el-table-column 修改一整列的背景颜色
  • docker 安装 minio (单体架构)
  • docker搭建kafka
  • 给Nginx配置环境变量
  • CHS零壹视频恢复程序高级版视频修复OCR使用方法
  • android display 杂谈(三)WMS
  • Docker Macvlan网络创建及通信配置
  • 删除文件要谨慎!如何在Linux中删除目录或文件
  • 使用 Docker 部署高可用 MongoDB 分片集群