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

大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL

点一下关注吧!!!非常感谢!!持续更新!!!

Java篇开始了!

  • MyBatis 更新完毕
  • 目前开始更新 Spring,一起深入浅出!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(已更完)
  • 实时数仓(正在更新…)

章节内容

  • Canal 工作原理
  • 工作流程 MySQL
  • Binglog基本介绍

在这里插入图片描述

配置 MySQL 的 binlog

基本介绍

MySQL 的二进制日志(Binary Log,简称 binlog)是 MySQL 数据库中的一种日志文件类型,它记录了对数据库执行的所有更改操作(不包括 SELECT 和 SHOW 等查询操作)。它主要用于数据恢复、复制和审计等场景。

Binlog 的作用

  • 数据恢复:在数据库崩溃或误操作导致数据丢失时,可以通过 binlog 重放来恢复数据。
  • 主从复制:Binlog 是 MySQL 主从复制机制的核心,通过将主库的 binlog 传输到从库并重放,从而实现数据同步。
  • 数据审计:记录了所有数据更改的具体时间和操作人,便于审计与分析。
  • 增量备份:Binlog 支持记录增量数据变化,结合快照备份,可以快速恢复到指定时间点。

Binlog 的工作原理

  • 事件记录:Binlog 将每一个对数据的更改操作记录为“事件”(Event),按时间顺序存储。
  • 日志格式:记录的数据包含事务 ID、表名、变更类型(INSERT、UPDATE、DELETE)、具体变更内容等。
  • 写入过程:当用户执行事务时,数据变更先写入 binlog 缓冲区,事务提交后刷新到 binlog 文件。
  • 日志滚动:Binlog 文件会按配置大小或时间定期轮转生成新的日志文件,并删除旧日志(根据配置)。

Binlog 的日志格式

STATEMENT 模式

记录 SQL 语句。
优点:日志较小。
缺点:依赖环境,某些 SQL 执行结果可能不一致。

ROW 模式

记录具体的行变化。
优点:安全可靠,适合复制。
缺点:日志较大。

MIXED 模式

混合模式,自动选择最合适的模式(一般以 ROW 为主)。

常见命令

是否启用binlog日志

show variables like 'log_bin';

执行结果如下图所示:
在这里插入图片描述

查看binlog类型

show global variables like 'binlog_format';

执行结果如下图所示:
在这里插入图片描述

查看详细的日志配置信息

show global variables like '%log%';

执行结果如下图所示:
在这里插入图片描述

mysql数据存储目录

show variables like '%dir%';

执行结果如下图所示:
在这里插入图片描述

查看binlog的目录

show global variables like "%log_bin%";

执行结果如下图所示:
在这里插入图片描述

查看当前服务器使用的biglog文件及大小

show binary logs;

执行结果如下图所示:
在这里插入图片描述

查看最新一个binlog日志文件名称和Position

show master status;

执行结果如下图所示:
在这里插入图片描述

查询binlog 变动信息

show binlog events;

执行结果如下图所示:
在这里插入图片描述

修改MySQL

在 MySQL 中,需要先开启 binlog 写入功能,配置 binlog-format 为 ROW 模式。

vim /etc/my.cnf.d/mariadb-server.cnf

我们对应的修改为:

[mysqld]
# 配置 MySQL replaction 需要定义,不要和 Canal 的 slaveId 重复
server-id=1 
# 开启 binlog
log-bin=mysql-bin 
# 选择 ROW 模式
binlog-format=ROW 
# dwshow是数据库的名称
binlog-do-db=dwshow 

修改内容如下所示:
在这里插入图片描述

重启MySQL

修改后需要重启 MySQL,只有重启之后配置才能生效。

systemctl restart mariadb
cd /var/lib/mysql
ll

可以看到如下的内容:
在这里插入图片描述

配置授权

授权 Canal 链接 MySQL 账号具有作为 MySQL Slave的权限,如果已有账户可以直接 Grant。
我们需要在 MySQl 中执行:

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;

执行结果如下图所示:
在这里插入图片描述
进行验证:

select Host,User from user;
show grants for 'canal'@'%';

docker run --name mysql8-container -p 3306:3306 -v ./data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql@wzk.icu -d mysql:8

执行结果如下图所示:
在这里插入图片描述

导入数据

接下来往 dbshow 数据库中导入业务数据进行测试,导入数据后,观察 /var/lib/mysql 目录中是否有 mysql-bin.* 文件,如下所示:

cd /var/lib/mysql
ll

可以看到是有日志的:
在这里插入图片描述


http://www.kler.cn/a/459072.html

相关文章:

  • Agent系列:AppAgent v2-屏幕智能Agent(详解版)
  • 国产手机嘴上喊着挑战苹果,实际行动却已承认失败,真的干不过
  • 小程序租赁系统构建指南与市场机会分析
  • [算法] [leetcode-70] 爬楼梯
  • 华为配置 之 RIP
  • 解决tomcat双击startup.bat乱码的几种方法
  • 论文笔记PhotoReg: Photometrically Registering 3D Gaussian Splatting Models
  • 【Unity功能集】TextureShop纹理工坊(七)魔棒工具
  • 深入浅出:从入门到精通大模型Prompt、SFT、RAG、Infer、Deploy、Agent
  • JavaFX与Gradle版本兼容指南
  • leecode213.打家劫舍||
  • Android 源码阅读随笔(一)—— 下载源码
  • git自动压缩提交的脚本
  • python制作打字小游戏
  • 图文检索(37):局部对齐Stacked Cross Attention for Image-Text Matching
  • GPU 进阶笔记(二):华为昇腾 910B GPU
  • 【从0到0.5】基于STM32F427+DP83848+FreeRTOS+LWIP+CubeMx+Keil搭建TCP服务端与客户端
  • 基于JDK 17 编写的Java常用工具类
  • Docker+Portainer 离线安装
  • 数学建模助力干细胞研究,配体纳米簇如何影响干细胞命运
  • 排序算法简单问题(Java)
  • Axture 实现一个简单的父子菜单
  • win32汇编环境下,提取对话框程序中,listview列表控件里的内容示例
  • ES IK分词字典热更新
  • 从0开始的Opencv之旅(到尝试构建一个图像编辑器):0,opencv demo
  • Kotlin 协程基础知识总结五 —— 通道、多路复用、并发安全