拓冰建站拓冰建站
首页 / 资讯中心 / 正文

大数据-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-id1 # 开启 binlog log-binmysql-bin # 选择 ROW 模式 binlog-formatROW # dwshow是数据库的名称 binlog-do-dbdwshow 修改内容如下所示### 重启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_PASSWORDmysqlwzk.icu -d mysql:8 执行结果如下图所示### 导入数据接下来往 dbshow 数据库中导入业务数据进行测试导入数据后观察 /var/lib/mysql 目录中是否有 mysql-bin.* 文件如下所示 cd /var/lib/mysql ll 可以看到是有日志的
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门