MySQL中二进制和重做日志文件的基本概念学习教程
二进制日志二进制日志记录对数据库的所有更改,而二进制文件具有以下两个功能:
1,恢复(恢复)2,复制(复制)
二进制日志启动:配置参数日志bin {名称}。如果未指定名称,则默认二进制日志文件名是主机名,后缀称为两级日志的序列号。路径是数据库的目录。
一种索引文件,其索引为二进制日志的后缀,用于存储过去生产的二进制日志。
二元测井相关参数:
max_binlog_size,binlog_cache_size,sync_binlog,binlog-do-db,binlog-ignore-db,更新日志的奴隶,binlog_format
max_binlog_size,它指定一个单一的二进制日志文件的最大值。如果超过该值,则生成一个新的二进制日志文件,后缀名为+ 1,并将其记录到索引文件中。从MySQL5.0默认值是1073741824,代表1g。
MySQL5.5的默认值
使用事务的InnoDB存储引擎时,所有未提交的事务将被记录到缓存中,等待提交事务,直接将写入二进制日志文件以二进制日志缓冲区,和缓冲区的大小是由binlog_cache_size确定,默认大小为32KB,此外,binlog_cache_size基于回来,这是。当一个线程启动一个事务,MySQL会自动分配一个binlog_cache_size缓存,因此设置需要非常小心,你可以通过显示全球地位的binlog_cache_use和binlog_cache_disk_use,可以判断当前的binlog_cache_size设置是否合适。
binlog_cache_size的默认大小是32kb
参数sync_binlog = { }表示多少次写缓存同步到磁盘。如果n设置为1,则意味着通过同步磁盘写入来编写二进制日志。这个参数是非常重要的,它将被提及。值得注意的是,当这个参数设置为1,innodb_support_xa也应该设置为1,保证了同步之间的二进制日志和InnoDB存储引擎的数据文件。
参数binlog-do-db和binlog-ignore-db表明图书馆日志需要写或忽视,和默认值是空的,这意味着图书馆的所有日志同步二进制日志。
日志从属更新。
的binlog_format参数也尤为重要。这个参数是从MySQL5.1版本介绍,和参数可以设置报表,行,和混合。
(1)表的格式是为以前的MySQL版本相同,与二进制日志文件记录日志的loglogical SQL语句。
(2)在行格式中,二进制日志不再是简单的SQL语句,而是一行更改的记录。在这个时候,InnoDB事务隔离基本上可以设置为读取,以实现更好的并发性。
(3)在混合格式下,MySQL使用语句格式记录二进制日志文件,但在某些情况下,使用行格式。
1)表的存储引擎是NDB,和表的DML操作记录行格式
2)使用不确定的功能如UUID(),用户(),(),()current_user found_rows,row_count(),等等。
3)使用INSERT延迟语句
4)使用用户定义函数
5)使用临时表
重做日志
MySQL默认情况下会有两个文件:ib_logfile0和ib_logfile1,和两个文件重做日志文件,或事务日志。
重做日志的目的:如果一个实例或介质失败,它将重做日志文件有用。
每个InnoDB存储引擎至少有一个重做日志文件组。每个文件组至少有2个重做日志文件,如默认的ib_logfile0和ib_logfile1.the InnoDB存储引擎先写入重做日志文件1。当它到达文件的结尾时,它会切换到重做日志文件2。当重做日志文件2也被写入时,它将被切换到重做日志文件1。
影响重做日志的参数:
的innodb_log_file_size,innodb_log_files_in_group,和innodb_log_group_home_dir效应集中在日志文件的属性。
重做日志与二进制日志的区别:
1)二进制日志中记录的所有日志记录相关的MySQL InnoDB存储引擎,包括和其他日志,而InnoDB存储引擎的重做日志记录的事务日志。
2)记录的内容是不允许的。不管是什么格式,你记录的二进制日志文件,记录所有交易的具体操作内容,而每一页的物理记录在重做日志文件中记录的InnoDB存储引擎。
3)写作时间也不同。在事务提交之前记录二进制日志文件,在事务处理过程中,重做日志条目被写入重做日志文件中。
重做日志文件写入的日志缓冲磁盘的状态:
在主线程中,重做日志缓冲区写入重做日志文件的磁盘的每一秒,不管是提交事务。另一个触发过程参数的innodb_flush_log_at_trx_commit控制,指示处理重做日志时提交的方式。
对innodb_flush_log_at_trx_commit参数设定值0, 1、2.0的名义进行交易,不会写日志文件的磁盘上的事务日志,但每秒刷新等待主线程,和1和2在不同的地方是:1在提交时,重做日志缓冲区写入磁盘;2重做日志写入磁盘的异步,不能保证承诺将重做日志文件,只是有这个动作。
有一点需要注意:因为重做日志有容量变量,这个值代表最后一个不能超过阈值的检查点。