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文件真实存储格式和其各自的优缺点

STATEMENT:基于SQL语句的复制(statement-based replication, SBR)
ROW:基于行的复制(row-based replication, RBR)
MIXED:混合模式复制(mixed-based replication, MBR)

STATEMENT

是基于mysql的语句的存储
我在mysql 5.6的环境中执行了下面的语句
在这里插入图片描述

对应使用mysqlbinlog 解密对应的文件得到下面的文件
binlog中的文件与我执行的完全一致,所以STATEMENT是对执行的sql进行复制。
在这里插入图片描述

ROW

然后我在8.0继续执行上面的语句,得到的是如下的格式(5.7以后默认ROW)
主要是修改和删除,记录的是每个语句的变化,相对安全但是容量会大(如一个修改语句100个受到影响就会有100条,但是statement只有一个执行语句)
在这里插入图片描述
在这里插入图片描述

Mixed

一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则 采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式

从网上粘的。懒得测试,,感兴趣的可以深入测试

当 DML 语句更新一个 NDB 表时;
. 当函数中包含 UUID() 时;
. 2 个及以上包含 AUTO_INCREMENT 字段的表被更新时;
. 执行 INSERT DELAYED 语句时;
. 用 UDF 时;
. 视图中必须要求运用 row 时,例如建立视图时使用了 UUID() 函数;

优缺点抄的:
原文链接:https://blog.csdn.net/weixin_28736145/article/details/113260588

STATEMENT
优点:生成的日志量少,节约网络传输io;并不强制要求主从数据库的表定义完全相同;相比行的复制模式更为灵活

缺点:对于非确定性事件,无法保证主从复制数据的一致性;对于存储过程,触发器,自定义函数进行的修改也可能造成数据不一致;相比于基于行的复制方式在从上执行时需要更多的行锁

缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的 一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题).

我理解的就是
优点:日志量少,节约网络传输io
缺点:对于存储过程,触发器可能造成数据不一致

ROW

优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下 每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比 如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

我理解的就是
优点:日志量全,对存储过程支持良好
缺点:数据量大,当表结构发生变化时,变动太大

Mixed — 没有了解,也没有地方给我抄

附-命令

是否开启binlog

show variables like '%log_bin%';

log_bin 是ON为开启

设置binlog开启
修改对应的my.cnf 或者window的my.ini
[mysqld]
log_bin=ON
记得重启

查看binlog_format

show variables like 'binlog_format'

获取binlog文件列表

show binary logs;

执行sql语句

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `password` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `flag` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `status` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;


INSERT INTO `test_log`.`user` (`id`, `user_name`, `password`, `flag`, `status`, `create_time`) VALUES (1, '李1', '李1', '李flag', '1', '2022-03-29 09:48:41');
INSERT INTO `test_log`.`user` (`id`, `user_name`, `password`, `flag`, `status`, `create_time`) VALUES (2, '李2', '李2', '2', '2', '2022-03-29 09:48:43');
INSERT INTO `test_log`.`user` (`id`, `user_name`, `password`, `flag`, `status`, `create_time`) VALUES (3, '李3', '李3', '3', '3', '2022-03-29 09:48:46');

update user SET flag = '1' WHERE user_name = '李3';

update user SET flag = '1' WHERE user_name like '%李%';

DELETE FROM user WHERE user_name like '%李%';

SHOW VARIABLES like '%log_bin%';

./mysqlbinlog -vv /usr/data/ON.000004 >end.log

./mysqlbinlog -vv /var/lib/mysql/binlog.000006 >end.log
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:32:03  更:2022-03-30 18:32:49 
 
开发: 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 5:35:54-

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