MysqlBinLog学习
1. 查看是否开启biglog功能
show variables like '%log_bin%';
如果是OFF,则在my.conf文件的mysqld模块下添加一下参数
log_bin=ON
log_bin_bansenam=/use/local/mysql-8.0.30/data/binlog
log_bin_index=/usr/local/mysql-8.0.30/data/binlog.index
然后重启mysql服务
2.查看当前执行到那个日志文件
show master status
3.查看events
show binlog envents in binlog.000003
;
然后找到对应的事务的begin 和commit;
5.拷贝mysql安装目录下的data下的binlog文件
cp binlog.000003 /home/binlog.03
4.去myslq 安装目录下的bin目录下执行命令
./mysqlbinlog --base64-output=decode-rows -vv --start-position=588 --stop-position=857 /home/binlog.03 >a.txt
其中 --base64-output=decode-rows 是 指定按 588 和857 节点获取数据
-vv 是更具体的解析成能明白的数据
5.binlog二进制文件有三种格式
-
statement格式
保存执行的sql语句,但是如果语句中有随机数,会造成主从同步数据不一致 -
row
每次操作保存受影响的行,以及怎么变化。但是会产生大量的日志,比较浪费存储空间 -
mixed
如果语句中没有随机数等,就保存sql语句,否则保存为row格式
5.1当时ROW格式时,会显示下图格式sql
5.2当是STATEMENT 格式时,会显示下图格式sql
-
查看和修改binlog文件格式
show variables like '%log_format%' ##查看当前binlog二进制格式 set global binlog_format ='ROW' ## 修改当前binlog二进制格式