mysql binlog详解

1、二进制日志的启用

  二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001和XXX-bin.index,若配置选项没有给出文件名,Mysql将使用主机名称命名这两个文件,其中.index文件包含一份全体日志文件的清单。

  Mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,而不会记录SELECT

2.日志文件的扩展

  当停止或重启时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增,此外,如果日志文件超过max_binlog_size系统变量配置的上限时,也会生成新的日志文件。

3.日志文件的查看

  Mysql提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。

4.日志跟换策略

 使用索引来循环文件,在以下条件将循环至下一个索引

 a.服务器重启

 b.服务器被更新

 c.日志达到了最大日志长度max_binlog_size

 d.日志被刷新mysql> flush logs;

5.binlog相关参数和变量

命令行参数

 --log-bin [=file_name]

 设置此参数表示启用binlog功能,并制定路径名称。


 --log-bin-index[=file]

 设置此参数是指定二进制索引文件的路径与名称。


 --max_binlog_size

 Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束。


 --binlog-do-db=db_name

 此参数表示只记录指定数据库的二进制日志


 --binlog-ignore-db=db_name

 此参数表示不记录指定的数据库的二进制日志

系统变量

 binlog_cache_size

 此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。


 max_binlog_cache_size

 此参数表示binlog使用的内存最大的尺寸


 binlog_cache_use

 使用二进制日志缓存的事务数量


 binlog_cache_disk_use

 使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量。


 binlog_do_db

 binlog_ignore_db

 sync_binlog

 这个参数直接影响mysql的性能和完整性。


 sync_binlog=0:

 当事务提交后,Mysql仅仅是将binlog_cache中的数据写入binlog文件,但不执行fsync之类的磁盘,同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。

使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使二进制日志在每一次二进制日志写入后与硬盘同步

6.如何清除binlog

 --使用下面的两个命令

 PURGE {MASTER|BINARY} LOGS TO 'log_name' //log_name不会被清除

 PURGE {MASTER|BINARY} LOGS BEFORE 'date' //date不会被清除

 --或使用命令:

 RESET MASTER 删除之前所有的binlog,并重新生成新的binlog,后缀从000001开始。


译者介绍:家华,从事mysqlDBA的工作,记录自己对mysql的一些总结

你可能感兴趣的:(binlog,mysql)