IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【Mysql】- binlog 日志解析 -> 正文阅读

[大数据]【Mysql】- binlog 日志解析

binary log 简介

二进制日志包含描述数据库更改的“事件”,例如表创建操作或表数据更改。它还包含可能已更改的语句的事件(例如:DELETE不匹配任何行),除非使用基于行的日志记录。二进制日志还包含有关每条语句使用更新数据多长时间的信息。二进制日志有两个重要用途:

  • 对于复制,复制源服务器上的二进制日志提供了要发送到副本的数据更改的记录。将源服务器二进制日志中包含的事件发送到其副本,副本执行这些事件以进行与源上相同的数据更改。

  • 某些数据恢复操作需要使用二进制日志。恢复备份后,将重新执行备份后记录的二进制日志中的事件。这些事件使数据库从备份点开始更新。

环境准备

  • Ubuntu 18.04.2 LTS
  • mysql 5.7.28

更改配置

添加如下配置 开启binlog

[mysqld]
...
server-id=123123
log-bin=/var/lib/mysql/mysql-bin # 日志文件位置及前缀 
binlog-format=ROW #  日志格式 [MIXED|STATEMENT|ROW]

操作数据

# 创建数据库
create database test_db
create database test2_db

# 分别创建表并插入数据
CREATE TABLE `cms_help` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `category_id` bigint(20) DEFAULT NULL,
  `icon` varchar(500) DEFAULT NULL,
  `title` varchar(100) DEFAULT NULL,
  `show_status` int(1) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `read_count` int(1) DEFAULT NULL,
  `content` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='帮助表';

# 插入数据
INSERT INTO cms_help(category_id)  VALUES (111),(222),(333),(444);
# 执行查询
SELECT * FROM cms_help;
# 执行删除 匹配行
DELETE FROM cms_help WHERE id = 2;
# 执行删除 不匹配任何行
DELETE FROM cms_help WHERE id = 2;
# 执行更新
UPDATE cms_help SET  show_status = 1 WHERE id = 3;
# 执行更新 不匹配行
UPDATE cms_help SET  show_status = 1 WHERE id = 2;
# 执行alert table
ALTER TABLE `cms_help` CHANGE COLUMN `title` `title_t` varchar(100);
# 执行drop
drop table cms_help;

查看binlog信息

show binary logs;

在这里插入图片描述

查看binlog

我们采用官方提供的mysqlbinlog对文件进行查看

mysqlbinlog /var/lib/mysql/mysql-bin.000001  --base64-output=decode-rows -vv --skip-gtids=true  | grep -E "UPDATE cms_help|SELECT * FROM|INSERT INTO cms_help|DELETE FROM cms_help|CREATE TABLE \`cms_help\`|alter"
  • --base64-output=decode-rows : 声明二级制文件格式化格式 后面加上–verbose可将事件解码为带注释的伪SQL语句
  • --verbose: -v 重组行事件之外的伪SQL语句, -vv重组包括行事件和statement事件的伪sql语句
  • --skip-gtids=true: 不保留全局事务标识符,而是让服务器像执行新事务一样执行事务。

格式化查看结果如下:
在这里插入图片描述

由图中展示可知,binary log记录了对表的增删改以及数据行的增删改,且在删改行无匹配行时不进行记录,改表时无匹配行时有记录。

除此之外还有很多需要注意的点,比如--binlog-do-db=db_name设置记录指定数据库时候的跨库记录问题,mysqlbinlog --database指定数据库打印,是仅适用于没有基于行的事件的BINLOG等。

参考链接:https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:03:13  更:2022-01-14 02:04:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:46:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码