MySQl优化学习笔记(九)二进制日志
二进制日志应用场景就是搭建MySQL主从备份。
MySQL主从备份含义:假设有个库a和库b,两个主机基于协议通信,用他们设置主从备份,a库为主库(master),b库为从库(slave),两个库都有个serverId,假设a为1,b为2。a用来做增删改,写入二进制日志,b实时读二进制日志,同时去执行同样的记录。实现主从备份。只要有增删改或改表结构等操作时就会写入二进制日志。
![](https://img.haomeiwen.com/i9775051/aea47fdf7cfb8da8.png)
1、查询二进制日志相关参数:show VARIABLES like '%log_bin%'
![](https://img.haomeiwen.com/i9775051/109862080b689048.png)
2、开启二进制日志 在my.ini中修改配置项:log-bin=pythonlog , pythonlog 为日志文件名字 。
![](https://img.haomeiwen.com/i9775051/8feda4e471d68e41.png)
![](https://img.haomeiwen.com/i9775051/5738b325c85ec6be.png)
3、生成新的二进制文件:flush logs;
![](https://img.haomeiwen.com/i9775051/7664a14698c6ce5b.png)
flush logs;执行之后,文件夹下会生成一个新的二进制文件00002:
![](https://img.haomeiwen.com/i9775051/9621766c8076f6b9.png)
打开index文件,里面会存放两个二进制文件的文件名:
![](https://img.haomeiwen.com/i9775051/58d18e33a0e419e2.png)
执行以下update语句测试二进制日志记录情况:
![](https://img.haomeiwen.com/i9775051/b91df8ba491e26ed.png)
4、查看二进制日志内容
二进制文件不能直接打开,可用SQL命令:show binlog events in 'pythonlog.000002';查看内容,如下图:
![](https://img.haomeiwen.com/i9775051/b28f9800012226a5.png)
但以上查询结果也不直观,我们用mysqlbinlog.exe工具打开,在cmd中先打开日志所在路径:
![](https://img.haomeiwen.com/i9775051/963a22fe06eb7dd8.png)
然后调用工具:
![](https://img.haomeiwen.com/i9775051/77c81748cd5cc2c7.png)
以下是二进制日志内容:
![](https://img.haomeiwen.com/i9775051/2dbbd2b624988137.png)
仍然看不懂,用以下命令输出到一个目录下:
![](https://img.haomeiwen.com/i9775051/5bbf84cf646e7566.png)
对应文件夹下会生成日志文件:
![](https://img.haomeiwen.com/i9775051/893bc2674077efcb.png)
以下命令将二进制文件解码为能看懂的log内容:
![](https://img.haomeiwen.com/i9775051/513066e114b1975c.png)
打开生成的log文件,以下为解码后日志中的update语句:
![](https://img.haomeiwen.com/i9775051/a6199c9602e3f59e.png)
附:命令行的工具的本质是exe,这个工具安装目录下,在系统环境变量path配置了这个目录。
在命令行随便输入一个工具(例如:mysql),优先找当前文件夹中是否有mySQl.exe的工具,如果没有则从系统环境变量找path配置项,从前往后依次找。