MySQL的Binlog日志内容量巨大,这里就不赘述了,后面有时间会做专门的关于MySQL的Binlog日志的总结,不过我们也得知道Binlog日志是干啥的。
一、Binlog日志
1.什么是Binlog日志?
binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。
binlog不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但你可以通过查询通用日志来查看MySQL执行过的所有语句。
2.Binlog日志的作用?
因为Binlog日志主要就是记录数据库表结构变更和数据修改的,所以主要有两个用途:
(1)数据库表备份
(2)数据库主从复制
3.Binlog日志相关参数
参数 | 详解 |
---|---|
log_bin | 设置此参数表示启用binlog功能,并指定路径名称 |
log_bin_index | 设置此参数是指定二进制索引文件的路径与名称 |
binlog_do_db | 此参数表示只记录指定数据库的二进制日志 |
binlog_ignore_db | 此参数表示不记录指定的数据库的二进制日志 |
max_binlog_cache_size | 此参数表示binlog使用的内存最大的尺寸 |
binlog_cache_size | 此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。 |
binlog_cache_use | 使用二进制日志缓存的事务数量 |
binlog_cache_disk_use | 使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量 |
max_binlog_size | Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束 |
sync_binlog | 这个参数直接影响mysql的性能和完整性。sync_binlog=0:当事务提交后,Mysql仅仅是将binlog_cache中的数据写入Binlog文件,但不执行fsync之类的磁盘 同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。sync_binlog=n,在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统绷Crash,在文件系统缓存中的所有Binlog信息都会丢失 |
二、Windows上如何开启MySQL的Binlog日志
默认情况下MySQL的Binary是关闭的,例如你在MySQL中输入“show variables like ‘log_bin’;”得到的记过是OFF(关闭)。Windows和Linux中MySQL开启Binlog日志方式大致相同,这里就以Windows为例。
1.修改mysql的配置文件my.ini
添加如下配置:
# Binary Logging.
# log-bin
log_bin = mysql-bin
# log_bin = C:\ProgramData\MySQL\MySQL Server 5.7\Data\log\bin_log
binlog_format = ROW
log_bin为mysql-bin时,binlog日志文件会默认生成在data目录下,并以mysql-bin.00000x方式命名。
log_bin为绝对路径时,binlog日志文件会生成在指定路径的目录下,命名方式同上。
2.重启MySQL服务即可
Windows中重启MySQL服务:
(1)在任务管理器中直接找到mysql57(我的版本为5.7,版本不同这里也会不同),直接右键点击“重新启动”即可。
(2)在管理员身份下运行cmd界面中输入“net stop mysql57”和“net start mysql57”,先停止服务,再开启服务即可。
重启服务后再通过上面说到的“show variables like ‘log_bin’;”命令查询得到ON,即表示Binlog日志开启完成。
三、Windows上查看MySQL的Binlog日志文件
由于二进制文件不方便直接查看,会有编码问题,这里介绍下通过MySQL自带的mysqlbinlog(在MySQL程序目录的bin目录下有mysqlbinlog.exe程序文件)查看binlog日志文件的方式。(Linux上也可如此)
前提:cmd进入程序目录(bin目录,也就是mysqlbinlog所在目录)
方式一:通过mysqlbinlog直接查看
mysqlbinlog.exe mysql-bin.000001
方式二:通过mysqlbinlog将binlog日志文件转换为txt查看
mysqlbinlog.exe -u username -p password mysql-bin.000001 >001.txt