MySQL binlog简介

binlog是MySQL日志中非常重要的日志,今天结合MySQL的官方文档系统学习一下binlog的知识。

目录

binlog介绍

binlog的作用

如何开启binlog 

何时生成新的日志文件 

二进制日志三种格式  

如何查看二进制日志内容

关于binlog的操作 与参数


binlog介绍

binlog记录了使数据库发生变化的操作,比如创建表,更新表(create ,update,delete,insert)等,同时也会记录这些操作花费的时间。二进制日志不会记录select 和 show操作,如果你想要查看这类的操作,可以开启全量日志查看。开启binlog会是数据库性能有轻微的损耗,但是相比于开启日志后带来的好处,这些性能损耗可以忽略。

MySQL 8.0.14开始,二进制日志和中继日志可以加密。保护日志的敏感信息,防止外部攻击者获取泄露。相关参数binlog_encryption 

binlog的作用

1 主从复制 

2 恢复数据库

如何开启binlog 

开启参数 log_bin

一般我们都是通过指定配置文件启动MySQL实例,所以可以将该参数写入到配置文件中。

可以直接写改参数 ,后面不加路径和文件,数据库和会根据参数datadir路径和服务器主机名生成binlog。

在配置文件中添加参数如下,不加任何选项

 

生成的binlog文件路径和格式如下,Master 为主机名 

路径为datadir路径

也可以通过以下方式参看 

建议的开启方式为该参数后指定路径和文件名,这样在主机名称改变后binlog还能继续使用相同的文件名。

log-bin = /server/mysql_data/mysql-bin

注意 开启binlog必须制定server_id 参数 ,如果没有server_id参数报错如下

Starting MySQL.. ERROR! The server quit without updating PID file (/server/mysql_data/mysql.pid).

何时生成新的日志文件 

MySQL服务在以下三种情况下会生成新的二进制文件,新生成的二进制文件名会使用base name之后数字递增的方式命名,另外为了跟踪使用了哪些二进制日志文件,还会生成一个以.index结尾的索引文件,索引文件中记录实际的日志文件名。

1 在服务启动或者重启

2 数据库执行flush logs;

3 当日志的大小超过设置的大小 。max_binlog_size 

注意:如果数据库中有大事务,二进制日志文件可能会比max_binlog_size更大,因为事务是完整地写入文件的,而不是在文件之间分割。

二进制日志三种格式  

1 row-based logging,

2 statement-based logging

3 mixed-base logging.

如何查看二进制日志内容

可以使用工具mysqlbinlog查看二进制日志的内容。另外还可以利用该工具进行恢复,此功能很有用。例如

shell> mysqlbinlog log_file | mysql -h server_name

mysqlbinlog还可以查看中继日志内容, 因为它们使用与二进制日志文件相同的格式编写

关于binlog的操作 与参数

删除 :https://www.cnblogs.com/xu-xiao/p/8026586.html

 purge binary logs to 'mysql-bin.000003';

直接删除文件后 元数据中还有记录 会出现文件不存在但是在元数据还记录,但是文件的大小为0

rm -rf  mysql-bin.000002

恢复多个文件的小技巧 

可以使用正则去匹配多个文件恢复

官方文档 https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html

官方文档 https://dev.mysql.com/doc/refman/8.0/en/binary-log.html

原文地址:https://www.cnblogs.com/DBABlog/p/12926868.html