关于mysql load语句在binlog中的记录方式:
整理自 实战45讲+自己的一些理解
一:binlog_format=statement这个 load 语句记录到 binlog 里以后,怎么在备库重放呢?由于 /server_tmp/t.csv 文件只保存在主库所在的主机上,如果只是把这条语句原文写到 binlog 中,在备库执行的时候,备库的本地机器上没有这个文件,就会导致主备同步停止。所以,这条语句执行的完整流程,其实是下面这样的。主库执行完成后,将 /server_tmp/t.csv 文件的内容直接写到 binlog 文件中。往 binlog 文件中写入语句 load data local infile ‘/tmp/SQL_LOAD_MB-1-0’ INTO TABLE `db2`.`t`。把这个 binlog 日志传到备库。备库的 apply 线程在执行这个事务日志时:a. 先将 binlog 中 t.csv 文件的内容读出来,写入到本地临时目录 /tmp/SQL_LOAD_MB-1-0 中;b. 再执行 load data 语句,往备库的 db2.t 表中插入跟主库相同的数据。执行流程如图 2 所示:
图 2 load data 的同步流程注意,这里备库执行的 load data 语句里面,多了一个“local”。它的意思是“将执行这条命令的客户端所在机器的本地文件 /tmp/SQL_LOAD_MB-1-0 的内容,加载到目标表 db2.t 中”。也就是说,load data 命令有两种用法:不加“local”,是读取服务端的文件,这个文件必须在 secure_file_priv 指定的目录或子目录下;加上“local”,读取的是客户端的文件,只要 mysql 客户端有访问这个文件的权限即可。这时候,MySQL 客户端会先把本地文件传给服务端,然后执行上述的 load data 流程。
二:binlog_format=row不记录文件内容,直接记录的每行数据的改变,如果binlog_row_image=full,那么格式化binlog后可以看到记录每行数据的所有字段!类似如下:### INSERT INTO `liuwenhe`.`items_1`### SET### @1=10009 /* INT meta=0 nullable=0 is_null=0 */
三:针对binlog格式为statement的格式binlog增量恢复:执行如下load语句后:root@localhost : (none) 13:11:59>load data infile '/var/lib/mysql-files/1.txt' into table liuwenhe.items_3;如果想要借助binlog来实现恢复数据,如果binlog_format=statement的格式,load操作经过测试也是可以恢复数据的,mysqlbinlog -vv格式化后可以看到如下信息:LOAD DATA LOCAL INFILE '/tmp/SQL_LOAD_MB-3-0' INTO TABLE `liuwenhe`.`items_3` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'LINES TERMINATED BY '\n' (`itemid`)那么有个问题,如果你是想借助binlog来实现增量恢复,那么他能找到/tmp/SQL_LOAD_MB-3-0这个文件吗?原来当你执行mysqlbinlog mysql-bin.000154文件的时候,自动就读取记录在binlog文件中的文件内容,并且写进/tmp/SQL_LOAD_MB-3-0文件,也就是说当你执行mysqlbinlog格式化文件的时候,自动在对应的目录下生成SQL_LOAD_MB-3-0文件!然后才可以恢复!
小结:所以需要注意,如果你要使用binlog实现增量恢复,那么你必须保证你格式化binlog的机器,和你执行恢复命令的机器是同一台,就是因为格式化的时候会产生load对应的临时文件
load语句在binlog中的记录方式
来源:这里教程网
时间:2026-03-01 15:56:48
作者:
编辑推荐:
- load语句在binlog中的记录方式03-01
- MySQL rename table方法大全03-01
- 致同:为客户提供全方位专业服务03-01
- 测试03-01
- 带你看懂MySQL执行计划03-01
- MySQL 迁移表空间,备份单表03-01
- 令人咋舌的隐式转换03-01
- 集成电路行业ERP管理系统的三大分类03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- load语句在binlog中的记录方式
load语句在binlog中的记录方式
26-03-01 - 令人咋舌的隐式转换
令人咋舌的隐式转换
26-03-01 - 集成电路行业ERP管理系统的三大分类
集成电路行业ERP管理系统的三大分类
26-03-01 - centos7 编译安装mysql 5.7.28图文详细教程
centos7 编译安装mysql 5.7.28图文详细教程
26-03-01 - 谈谈MYSQL索引是如何提高查询效率的
谈谈MYSQL索引是如何提高查询效率的
26-03-01 - 部署otter实现mysql主备数据同步(下)
部署otter实现mysql主备数据同步(下)
26-03-01 - MySQL不区分大小写设置
MySQL不区分大小写设置
26-03-01 - Navicat连接MySQL Server8.0版Client does not support authentication protocol req
- 部署otter实现mysql主备数据同步(上)
部署otter实现mysql主备数据同步(上)
26-03-01 - 判断集成电路企业是否需要实施ERP管理系统的依据
判断集成电路企业是否需要实施ERP管理系统的依据
26-03-01
