图片 38

MySQL二进制日志总结,MySQL二进制日志

MySQL二进制日志(binary log)总结,mysqlbinary

 

本文出处: 
(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)

 

今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,
Multi-statement transaction required more than
‘max_binlog_cache_size’ bytes of storage,increase this mysqld
variable and try agagin

图片 1

 提示max_binlog_cache_size空间不足,因为开启了二进制日志,之前是默认设置没有大批量的事务性操作,没有遇到该问题,这一次一开始就遇到一个较大的事务性操作就失败了。
之后修改binlog_cache_size的大小之后,问题解决。

 

由于使用的是默认的innodb引擎,开启了二进制日志,
对于事务性的操作,是要事物完成的时候写入二进制日志,事物提交之前,执行的写入性操作会被缓存起来,直到整个事物完成,mysqld进程会将整个事物写入二进制日志。
当事物开始的时候,会按照binlog_cache_size系统变量指定的值分配内容空间,如果指定的binlog_cache_size缓存空间不够,执行的事务性操作回滚并提示失败。

图片 2

 

 

顺便总结一下二进制日志(binary log)以及其相关参数信息

什么是二进制日志?
  用来记录操作MySQL数据库中的写入性操作(增删改,但不包括查询),相当于sqlserver中的完整恢复模式下的事务日志文件。
二进制日志的作用?
  1,用于复制,配置了主从复制的时候,主服务器会将其产生的二进制日志发送到slave端,slave端会利用这个二进制日志的信息在本地重做,实现主从同步
  2,用户恢复,MySQL可以在全备和差异备份的基础上,利用二进制日志进行基于时间点或者事物Id的恢复操作。原理雷同于主从复制的日志重做。
 

二进制日志(binary log)的相关参数信息

1,开启二进制日志
 开启二进制日志,需要指定一个log-bin参数的路径,比如:log_bin=/var/lib/mysql/mysql-bin
 开始二进制日志之后会自动生成一个管理二进制日志的log_bin_index文件。log_bin选项也显示为on,也即开启了二进制日志。

 图片 3

 

2,二进制日志文件的格式

  二进制日志的格式由参数binlog_format控制,二进制日志有三种模式,基于语句(statement)的,基于行的(row),以及结合前两者的混合模式(mixed)
 基于语句的二进制功能有一些硬伤(个人认为),比如同样的update语句中的利用当前时间的now更新操作,在主服务器和从服务器上同样都是获取当前时间,主从复制得到的结果是不一样的。
 基于行的二进制日志模式解决了基于语句的一些缺陷,但是某些情况下回产生大量的日志,比如一个update操作更新了100W行数据,如果是基于行的二进制日志,结果就是产生了100W条日志
 基于混合模式的,结合上述两种方式的优点。
 可以在配置文件中设置:binlog_format = MIXED

 图片 4

 

3,二进制日志的记录时机

 二进制日志记录可以使同步的,也即事物提交之后就写入二进制日志,也可以是异步的,由操作系统的磁盘缓存觉得什么时候写入磁盘。
 由参数sync_binlog= n来控制,设置sync_binlog =
1的话,表示最高安全级别的写入(但也不能保证不丢失任何事物日志),相当于是一种安全写入模式,不过对性能有一定的影响。
 个人觉得,如果是事务性的引擎,本身就是为了保证事物安全的,没理由不把sync_binlog
设置为1。

 据说设置为sync_binlog设置为1也会潜在丢失一个事务日志的可能性,但是还没想明白为什么会丢失,因为既然是事务性引擎,还有一层undo或者redo日志在做后盾啊?

 后面想想,因为有redo和undo日志的存在,事物的一致性可以在主服务器上得到保证,应该是主从复制的时候,可能丢失的一条事物可能无法传递到从服务器。

 图片 5

 

4,二进制日志的单个文件大小

 二进制日志的大下就是单个日志文件的最大限制,正常情况下都不会超过设置的最大文件的大小限制,超过设置的最大限制之后,会发生日志滚动,也即重新生成一个二进制日志文件。
 max_binlog_size  = 100M
 这里显示的104857600单位是字节,也即104857600/1024/1024 = 100M

 图片 6

 

5,二进制日志的清理

 二进制日志滚动之后会生成新的文件来存储日志,日志文件逾期之后会自动删除,否则会产生源源不断的日志文件
 比如可以设置过期时间为2,可配值为:expire_logs_days =
2,超过两天的二进制日志会被自动删除。
 可以通过命令show master logs 查看当前的二进制日志文件个数

  图片 7

 

6,二进制日志文件的滚动

 1)正常情况下,记录满之后,自动滚动,后缀名+1
 2)重启mysql服务之后,自动滚动,不管日志文件是否按照指定的最大容量写满
 3)手动滚动,执行flush logs命令,如下执行flush
logs之后,重新生成了一个二进制日志文件

 图片 8

 4)手动删除二进制日志

 可以通过命令purge binary logs to fileName删除指定fileName之前的文件

 图片 9

 可以通过命令purge binary logs before ‘2017-03-10
10:10:00’删除指定时间之前的文件

 图片 10

 删除指定日志purge binary logs before date_sub( now( ), interval 7
day);
 潇湘大神是purge master logs before date_sub( now( ), interval 7
day),应该是一个效果(binary和master关键词)?

 

7,二进制日志的绑定(或者排除)的数据库

 可以设置某些数据库开启二进制日志,或者某些数据库不开启二进制日志
 # binlog_do_db:设置master-slave时使用;
 # binlog-ignore-db:设置哪个数据库不记录日志;
 MySQL5.7.18中设置了(my.cnf中配置了),但是查询的时候好像没用?

 图片 11

 

8,二进制日志的缓存以及缓存大小配置

 binlog_cache_size的大小,一开始提到的问题,当事物开始的时候,会按照binlog_cache_size系统变量指定的值分配内容空间,如果指定的binlog_cache_size缓存空间不够则会报错并回滚事物
 这里显示的记录的单位同样是字节,除以两个1024之后就是以MB为单位的容量了,这里的20971520
/1024/1024就相当于20MB了。
 如果有较大的事务性操作,比如在测试的时候,必须要将此缓存设置的相对较大一些,否则语句无法成功执行

 图片 12

 max_binlog_cache_size语binlog_cache_size的区别在于前者是实例级别的cache,后者是Session级别的cache,如果并发量很大,就需要考虑将max_binlog_cache_size设置的稍微大一些。
 max_binlog_cache_size默认是是4GB,最大值也是4GB,这里为了测试设置的是100MB(104857600/1024.0/1024.0)

 图片 13

   
max_binlog_cache_size设置的最大内存大小为4GB,如果服务器内容较大,比如128GB或者更大,max_binlog_cache_size默认为设置为最大也无伤大雅,因为要保证并发成功写入。
 至于对于Session级别的binlog_cache_size大小,可以根据业务情况自行调整,个人觉得设置的稍微大一点也问题不大,毕竟,除了正常的OLTP操作,有一些定时作业之类的数据提取或者merge数据之类的操作可能会产生大量的日志。
 据说是可以通过查看binlog_cache_disk_use 与
binlog_cache_use来判断binlog_cache_size是否需要调整。
 但是在MySQL5.7.18中并没有发现这个参数

 图片 14

 

9,二进制日志其他参数

 max_binlog_stmt_cache_size针对非事务语句,非事务性的参数暂不关心它了
 记得某次看到过某大师说过,innodb引擎优势不仅仅在事务性的支持上,与非事物引起的myisam引擎相比,读取性能上差距越来越小,MySQL因此将innodb设置为默认引擎。
 放弃myisam,投奔innodb是正道。
 binlog_checksum 用作复制的主从校检。暂时没有研究过这个参数,暂不论
 详细参考想想大神的文章

 

 

总结:

  MySQL二进制日志不仅仅作用于功能性(master-slave复制)的,还作用于安全性(二进制日志)以及开启了二进制日志情况下的事务性操作,因此对于生产环境,可以认为是一个必不可少的配置。
  同时,其各种参数又会影响到某些操作,因此二进制日志的参数要格外的重视,确保数据库在使用时在功能性和可用性上得到保证。

 

参考: 

   《涂抹MySQL》

   以及各种翻书,网上资料

 

行动起来,可以改变思维模式以及畏惧心理。

 

log)总结,mysqlbinary
本文出处:
(保留出处并非什么原创作品权利,本人拙作还远…

  图片 15

 

 

1:修改my.cnf,在[mysqld]下面增加log_bin=mysql_bin_log,重启MySQL后,你就会发现log_bin变为了ON,二进制日志(binary
log)默认放在数据目录下(系统变量datadir下),如下所示:

7,二进制日志的绑定(或者排除)的数据库

Holds the name and complete path to the binary log file. Unlike the
log_bin system variable, log_bin_basename reflects the name set with
the –log-bin server option

2,二进制日志文件的格式

接下来,我们来看看使用mysqlbinlog命令如何查看二进制日志文件中的的内容

   《涂抹MySQL》

二进制日志开启方法

6,二进制日志文件的滚动

图片 16

 

mysql> show variables like '%binlog%';

+-----------------------------------------+----------------------+

| Variable_name                           | Value                |

+-----------------------------------------+----------------------+

| binlog_cache_size                       | 32768                |

| binlog_checksum                         | CRC32                |

| binlog_direct_non_transactional_updates | OFF                  |

| binlog_format                           | MIXED                |

| binlog_max_flush_queue_time             | 0                    |

| binlog_order_commits                    | ON                   |

| binlog_row_image                        | FULL                 |

| binlog_rows_query_log_events            | OFF                  |

| binlog_stmt_cache_size                  | 32768                |

| binlogging_impossible_mode              | IGNORE_ERROR         |

| innodb_api_enable_binlog                | OFF                  |

| innodb_locks_unsafe_for_binlog          | OFF                  |

| max_binlog_cache_size                   | 18446744073709547520 |

| max_binlog_size                         | 1073741824           |

| max_binlog_stmt_cache_size              | 18446744073709547520 |

| sync_binlog                             | 0                    |

+-----------------------------------------+----------------------+

16 rows in set (0.00 sec)

 

mysql> 

 二进制日志滚动之后会生成新的文件来存储日志,日志文件逾期之后会自动删除,否则会产生源源不断的日志文件
 比如可以设置过期时间为2,可配值为:expire_logs_days =
2,超过两天的二进制日志会被自动删除。
 可以通过命令show master logs 查看当前的二进制日志文件个数

mysql> show variables like '%log_bin%';

+---------------------------------+------------------------------------+

| Variable_name                   | Value                              |

+---------------------------------+------------------------------------+

| log_bin                         | ON                                 |

| log_bin_basename                | /var/lib/mysql/DB-Server-bin       |

| log_bin_index                   | /var/lib/mysql/DB-Server-bin.index |

| log_bin_trust_function_creators | OFF                                |

| log_bin_use_v1_row_events       | OFF                                |

| sql_log_bin                     | ON                                 |

+---------------------------------+------------------------------------+

6 rows in set (0.00 sec)

 

mysql> 

 后面想想,因为有redo和undo日志的存在,事物的一致性可以在主服务器上得到保证,应该是主从复制的时候,可能丢失的一条事物可能无法传递到从服务器。

mysql> show master logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000004 | 478421400 |

| mysql-bin.000005 |      9653 |

| mysql-bin.000006 |  340631484 |

+------------------+-----------+

3 rows in set (0.00 sec)

 

mysql> 

 据说设置为sync_binlog设置为1也会潜在丢失一个事务日志的可能性,但是还没想明白为什么会丢失,因为既然是事务性引擎,还有一层undo或者redo日志在做后盾啊?

12:系统变量binlog_format
指定二进制日志的类型。分别有STATEMENT、ROW、MIXED三种值。MySQL
5.7.6之前默认为STATEMENT模式。MySQL
5.7.7之后默认为ROW模式。这个参数主要影响主从复制。

 4)手动删除二进制日志

 

  MySQL二进制日志不仅仅作用于功能性(master-slave复制)的,还作用于安全性(二进制日志)以及开启了二进制日志情况下的事务性操作,因此对于生产环境,可以认为是一个必不可少的配置。
  同时,其各种参数又会影响到某些操作,因此二进制日志的参数要格外的重视,确保数据库在使用时在功能性和可用性上得到保证。

 

由于使用的是默认的innodb引擎,开启了二进制日志,
对于事务性的操作,是要事物完成的时候写入二进制日志,事物提交之前,执行的写入性操作会被缓存起来,直到整个事物完成,mysqld进程会将整个事物写入二进制日志。
当事物开始的时候,会按照binlog_cache_size系统变量指定的值分配内容空间,如果指定的binlog_cache_size缓存空间不够,执行的事务性操作回滚并提示失败。

请注意,每次重启MySQL服务也会生成一个新的二进制日志文件,相当于二进制日志切换。切换二进制日志时,你会看到这些number会不断递增。另外,除了这些二进制日志文件外,你会看到还生成了一个DB-Server-bin.index的文件,这个文件中存储所有二进制日志文件的清单又称为二进制文件的索引。

 

 

二进制日志(binary log)的相关参数信息

10:系统变量binlog_checksum 用作复制的主从校检。
NONE表示不生成checksum,CRC-32表示使用这个算法做校检。

9,二进制日志其他参数

8: 系统变量max_binlog_stmt_cache_size

 1)正常情况下,记录满之后,自动滚动,后缀名+1
 2)重启mysql服务之后,自动滚动,不管日志文件是否按照指定的最大容量写满
 3)手动滚动,执行flush logs命令,如下执行flush
logs之后,重新生成了一个二进制日志文件

 

 图片 17

 

 

图片 18

参考:http://www.cnblogs.com/kerrycode/p/6610874.html (写的比较详细)

 

 

mysqlbinlog有许多参数,你可以分析、提取指定position位置的binlog日志;也可以按指定时间恢复数据;也可以导出的脚本文件;或者压缩处理等等,非常灵活强大。在这里不做详细展开,后面将单独的写一篇总结介绍。

图片 19

 

 

 

1,开启二进制日志
 开启二进制日志,需要指定一个log-bin参数的路径,比如:log_bin=/var/lib/mysql/mysql-bin
 开始二进制日志之后会自动生成一个管理二进制日志的log_bin_index文件。log_bin选项也显示为on,也即开启了二进制日志。

2:系统变量log_bin_index是MySQL 5.6.4开始引入的。
它表示二进制日志的索引文件。该参数可以在my.cnf中设置。

顺便总结一下二进制日志(binary log)以及其相关参数信息

 

 二进制日志记录可以使同步的,也即事物提交之后就写入二进制日志,也可以是异步的,由操作系统的磁盘缓存觉得什么时候写入磁盘。
 由参数sync_binlog= n来控制,设置sync_binlog =
1的话,表示最高安全级别的写入(但也不能保证不丢失任何事物日志),相当于是一种安全写入模式,不过对性能有一定的影响。
 个人觉得,如果是事务性的引擎,本身就是为了保证事物安全的,没理由不把sync_binlog
设置为1。

 

 可以通过命令purge binary logs before ‘2017-03-10
10:10:00’删除指定时间之前的文件

当然你还可以使用下面命令查看

 图片 20

 

总结:

 

 删除指定日志purge binary logs before date_sub( now( ), interval 7
day);
 潇湘大神是purge master logs before date_sub( now( ), interval 7
day),应该是一个效果(binary和master关键词)?

二进制日志的删除可以通过命令手工删除,也可以设置自动清理。下面简单介绍一下,如何删除二进制日志。

 可以通过命令purge
binary logs to fileName删除指定fileName之前的文件

可以适当的调整sync_binlog,
在牺牲一定的一致性下,获取更高的并发和性能。

 

4:系统变量sql_log_bin
用于控制会话级别二进制日志功能的开启或关闭,默认为ON,表示启用二进制日志功能。

 图片 21

 

 

SHOW BINLOG EVENTS[IN ‘log_name’] [FROM pos] [LIMIT [offset,]
row_count]

 binlog_cache_size的大小,一开始提到的问题,当事物开始的时候,会按照binlog_cache_size系统变量指定的值分配内容空间,如果指定的binlog_cache_size缓存空间不够则会报错并回滚事物
 这里显示的记录的单位同样是字节,除以两个1024之后就是以MB为单位的容量了,这里的20971520
/1024/1024就相当于20MB了。
 如果有较大的事务性操作,比如在测试的时候,必须要将此缓存设置的相对较大一些,否则语句无法成功执行

图片 22

5,二进制日志的清理

 

 

二进制日志切换方法

 

参考资料:

3,二进制日志的记录时机

方法2: 使用mysqlbinlog命令行查看日志内容(适宜批量提取日志)。

 

mysql> show variables like 'max_binlog_stmt_cache_size';

+----------------------------+----------------------+

| Variable_name              | Value                |

+----------------------------+----------------------+

| max_binlog_stmt_cache_size | 18446744073709547520 |

+----------------------------+----------------------+

1 row in set (0.00 sec)

 

mysql> 

 图片 23

如上所示,可以通过查看Binlog_cache_disk_use 与
Binlog_cache_use来判断binlog_cache_size是否需要调整。

 图片 24

max_binlog_cache_size针对事务语句,max_binlog_stmt_cache_size针对非事务语句,当我们发现Binlog_cache_disk_use或者Binlog_stmt_cache_disk_use比较大时就需要考虑增大cache的大小

本文出处: 
(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)

图片 25

什么是二进制日志?
  用来记录操作MySQL数据库中的写入性操作(增删改,但不包括查询),相当于sqlserver中的完整恢复模式下的事务日志文件。
二进制日志的作用?
  1,用于复制,配置了主从复制的时候,主服务器会将其产生的二进制日志发送到slave端,slave端会利用这个二进制日志的信息在本地重做,实现主从同步
  2,用户恢复,MySQL可以在全备和差异备份的基础上,利用二进制日志进行基于时间点或者事物Id的恢复操作。原理雷同于主从复制的日志重做。
 

关于二进制日志(binary
log)的一些相关参数,下面一一介绍,如有不足或疏漏之处,敬请指出:

 

mysql> show variables like 'max_binlog_size';

+-----------------+------------+

| Variable_name   | Value      |

+-----------------+------------+

| max_binlog_size | 1073741824 |

+-----------------+------------+

1 row in set (0.00 sec)

 

mysql> 

 可以设置某些数据库开启二进制日志,或者某些数据库不开启二进制日志
 # binlog_do_db:设置master-slave时使用;
 # binlog-ignore-db:设置哪个数据库不记录日志;

2: 查看某个特定binglog文件的内容。

4,二进制日志的单个文件大小

mysql> show variables like 'log_bin_basename';

+------------------+------------------------------+

| Variable_name    | Value                        |

+------------------+------------------------------+

| log_bin_basename | /var/lib/mysql/DB-Server-bin |

+------------------+------------------------------+

1 row in set (0.00 sec)

 

mysql> 

   以及各种翻书,网上资料

 

8,二进制日志的缓存以及缓存大小配置

 

 提示max_binlog_cache_size空间不足,因为开启了二进制日志,之前是默认设置没有大批量的事务性操作,没有遇到该问题,这一次一开始就遇到一个较大的事务性操作就失败了。
之后修改binlog_cache_size的大小之后,问题解决。

 

 

 

  二进制日志的格式由参数binlog_format控制,二进制日志有三种模式,基于语句(statement)的,基于行的(row),以及结合前两者的混合模式(mixed)
 基于语句的二进制功能有一些硬伤(个人认为),比如同样的update语句中的利用当前时间的now更新操作,在主服务器和从服务器上同样都是获取当前时间,主从复制得到的结果是不一样的。
 基于行的二进制日志模式解决了基于语句的一些缺陷,但是某些情况下回产生大量的日志,比如一个update操作更新了100W行数据,如果是基于行的二进制日志,结果就是产生了100W条日志
 基于混合模式的,结合上述两种方式的优点。
 可以在配置文件中设置:binlog_format = MIXED

 

 图片 26

 

 图片 27

 

 

5:系统变量expire_logs_days ,前面已经阐述。在此不做介绍。

 

 

 max_binlog_stmt_cache_size针对事务语句,非事务性的参数暂不关心它了
 记得某次看到过某大师说过,innodb引擎优势不仅仅在事务性的支持上,与非事物引起的myisam引擎相比,读取性能上差距越来越小,MySQL因此将innodb设置为默认引擎。
 放弃myisam,投奔innodb是正道。
 binlog_checksum 用作复制的主从校检。暂时没有研究过这个参数,暂不论
 详细参考想想大神的文章http://www.cnblogs.com/kerrycode/p/6610874.html。

二进制日志删除方法

 图片 28

方法1:使用show binlog
events方式可以获取当前以及指定binlog的日志,不适宜提取大量日志。

 图片 29

 

 

mysql> show variables like 'log_bin_index';

+---------------+------------------------------------+

| Variable_name | Value                              |

+---------------+------------------------------------+

| log_bin_index | /var/lib/mysql/DB-Server-bin.index |

+---------------+------------------------------------+

1 row in set (0.01 sec)

 

mysql> 

 

图片 30

 图片 31

 

 二进制日志的大下就是单个日志文件的最大限制,正常情况下都不会超过设置的最大文件的大小限制,超过设置的最大限制之后,会发生日志滚动,也即重新生成一个二进制日志文件。
 max_binlog_size  = 100M
 这里显示的104857600单位是字节,也即104857600/1024/1024 = 100M

基于SQL语句的复制(statement-based replication, SBR),

基于行的复制(row-based replication, RBR),

混合模式复制(mixed-based replication, MBR)。

 max_binlog_cache_size语binlog_cache_size的区别在于前者是实例级别的cache,后者是Session级别的cache,如果并发量很大,就需要考虑将max_binlog_cache_size设置的稍微大一些。
 max_binlog_cache_size默认是是4GB,最大值也是4GB,这里为了测试设置的是100MB(104857600/1024.0/1024.0)

mysql> show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000002 |      120 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql> flush logs;

Query OK, 0 rows affected (0.03 sec)

 

mysql> show master status

    -> ;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000003 |      120 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql> 

 

MySQL的二进制日志(binary
log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句。二进制日志(binary
log)中记录了对MySQL数据库执行更改的所有操作,并且记录了语句发生时间、执行时长、操作数据等其它额外信息,但是它不记录SELECT、SHOW等那些不修改数据的SQL语句。二进制日志(binary
log)主要用于数据库恢复和主从复制,以及审计(audit)操作。

   
max_binlog_cache_size设置的最大内存大小为4GB,如果服务器内容较大,比如128GB或者更大,max_binlog_cache_size默认为设置为最大也无伤大雅,因为要保证并发成功写入。
 至于对于Session级别的binlog_cache_size大小,可以根据业务情况自行调整,个人觉得设置的稍微大一点也问题不大,毕竟,除了正常的OLTP操作,有一些定时作业之类的数据提取或者merge数据之类的操作可能会产生大量的日志。
 据说是可以通过查看binlog_cache_disk_use 与
binlog_cache_use来判断binlog_cache_size是否需要调整。
 但是在MySQL5.7.18中并没有发现这个参数

今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,
Multi-statement transaction required more than
‘max_binlog_cache_size’ bytes of storage,increase this mysqld
variable and try agagin

 

 图片 32

2: 清除某个时间点以前的二进制日志文件。

图片 33

 

行动起来,可以改变思维模式以及畏惧心理。

6:系统变量binlog_cache_size
表示为每个客户端分配binlog_cache_size大小的缓存,默认值32768。二进制日志缓存使用的前提条件是服务器端使用了支持事务的引擎以及开启了bin
log功能,它是MySQL用来提高binlog的效率而设计的一个用于短时间内临时缓存binlog数据的内存区域。一般来说,如果我们的数据库中没有什么大事务,写入也不是特别频繁,2MB~4MB是一个合适的选择。但是如果我们的数据库大事务较多或多事务语句,写入量比较大,可适当调高binlog_cache_size。同时,我们可以通过binlog_cache_use
以及
binlog_cache_disk_use来分析设置的binlog_cache_size是否足够,是否有大量的binlog_cache由于内存大小不够而使用临时文件(binlog_cache_disk_use)来缓存了。

查看二进制日志内容

2:如果在my.cnf里面只设置log_bin,但是不指定file_name,然后重启数据库。你会发现二进制日志文件名称为${hostname}-bin
这样的格式。如下所示:

 

图片 34

mysql> show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000012 |      552 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql> flush logs;

Query OK, 0 rows affected (0.01 sec)

 

mysql> use gsp;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> insert into test values(303, 'kerry');

Query OK, 1 row affected (0.01 sec)

 

mysql> show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000013 |      337 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql> system mysqlbinlog /var/lib/mysql/DB-Server-bin.000013;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#170323 18:43:17 server id 1  end_log_pos 120 CRC32 0xabfd028f  Start: binlog v 4, server v 5.6.20-enterprise-commercial-advanced-log created 170323 18:43:17

# Warning: this binlog is either in use or was not closed properly.

BINLOG '

hU/UWA8BAAAAdAAAAHgAAAABAAQANS42LjIwLWVudGVycHJpc2UtY29tbWVyY2lhbC1hZHZhbmNl

ZC1sb2cAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAY8C

/as=

'/*!*/;

# at 120

#170323 18:43:46 server id 1  end_log_pos 197 CRC32 0xc5ff49de  Query   thread_id=4     exec_time=0     error_code=0

SET TIMESTAMP=1490309026/*!*/;

SET @@session.pseudo_thread_id=4/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1075838976/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 197

#170323 18:43:46 server id 1  end_log_pos 306 CRC32 0x75c26223  Query   thread_id=4     exec_time=0     error_code=0

use `gsp`/*!*/;

SET TIMESTAMP=1490309026/*!*/;

insert into test values(303, 'kerry')

/*!*/;

# at 306

#170323 18:43:46 server id 1  end_log_pos 337 CRC32 0x6ea837f4  Xid = 80

COMMIT/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

mysql> 

 

[mysqld]

相应地,二进制日志的格式也有三种:STATEMENT,ROW,MIXED。这里限于篇幅和主题,不做展开介绍。后面会单独总结介绍。

 

mysql> show variables like 'max_binlog_cache_size';

+-----------------------+----------------------+

| Variable_name         | Value                |

+-----------------------+----------------------+

| max_binlog_cache_size | 18446744073709547520 |

+-----------------------+----------------------+

1 row in set (0.00 sec)

 

mysql> 
mysql> show variables like 'sql_log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sql_log_bin   | ON    |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql> 

1: purge binary logs to xxx;
表示删除某个日志之前的所有二进制日志文件。这个命令会修改index中相关数据

 

mysql> show variables like 'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | OFF   |

+---------------------------------+-------+

1 row in set (0.00 sec)

 

mysql> 

 

查看当前二进制日志文件状态

图片 35

 

5:另外,我们也可以设置expire_logs_days参数,设置自动清理,其默认值为0,表示不启用过期自动删除功能,如果启用了自动清理功能,表示超出此天数的二进制日志文件将被自动删除,自动删除工作通常发生在MySQL启动时或FLUSH日志时。

 

图片 36

开启MySQL的二进制日志会影响服务器性能吗?答案是会有一些性能损耗,但是性能开销非常小(slightly
slower),另外,开启binlog带来的好处要远远超过带来的性能开销。官方文档的介绍如下所示:

 

 

 

mysql> show variables like 'binlog_format';

+---------------+-----------+

| Variable_name | Value     |

+---------------+-----------+

| binlog_format | STATEMENT |

+---------------+-----------+

1 row in set (0.00 sec)

 

mysql> 

开启二进制日志影响性能吗?

 

Running a server with binary logging enabled makes performance slightly
slower. However, the benefits of the binary log in enabling you to set
up replication and for restore operations generally outweigh this minor
performance decrement.

mysql> show variables like 'binlog_cache_size';

+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| binlog_cache_size | 32768 |

+-------------------+-------+

1 row in set (0.00 sec)

 

mysql> 

mysql>  show status like 'binlog%';

+----------------------------+---------+

| Variable_name              | Value   |

+----------------------------+---------+

| Binlog_cache_disk_use      | 37      |

| Binlog_cache_use           | 1048300 |

| Binlog_stmt_cache_disk_use | 0       |

| Binlog_stmt_cache_use      | 2306    |

+----------------------------+---------+

4 rows in set (0.00 sec)

 

mysql> 

官方文档关于二进制日志(binary log)的介绍如下:

The binary log contains “events” that describe database changes such as
table creation operations or changes to table data. It also contains
events for statements that potentially could have made changes (for
example, a DELETE which matched no rows),
unless row-based logging is used. The binary log also contains
information about how long each statement took that updated data. The
binary log has two important purposes:

复制的模式有下面几种:

 

 

 

系统变量log_bin的值为OFF表示没有开启二进制日志(binary
log)。ON表示开启了二进制日志(binary log)

下面我们来通过实验验证一下,先看看show binlog events方式的测试:

查看当前服务器所有的二进制日志文件

 

 

mysql> purge master logs before date_sub( now( ), interval 7 day);

Query OK, 0 rows affected (0.00 sec)

 

mysql> show binary logs;

+----------------------+-----------+

| Log_name             | File_size |

+----------------------+-----------+

| DB-Server-bin.000004 |       171 |

| DB-Server-bin.000005 |       171 |

| DB-Server-bin.000006 |       143 |

| DB-Server-bin.000007 |       143 |

| DB-Server-bin.000008 |       143 |

| DB-Server-bin.000010 |       143 |

| DB-Server-bin.000011 |       120 |

+----------------------+-----------+

7 rows in set (0.00 sec)

 

mysql> reset master;

Query OK, 0 rows affected (0.02 sec)

 

mysql> show binary logs;

+----------------------+-----------+

| Log_name             | File_size |

+----------------------+-----------+

| DB-Server-bin.000010 |       120 |

+----------------------+-----------+

1 row in set (0.00 sec)

 

mysql> 

 

 

 

二进制日志相关参数

max_binlog_stmt_cache_size sets the size for the statement cache
only; the upper limit for the transaction cache is governed exclusively
by the max_binlog_cache_size system
variable.

1: 查看第一个binlog文件的内容(show binlog events)

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | ON    |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql> show variables like 'datadir';

+---------------+-----------------+

| Variable_name | Value           |

+---------------+-----------------+

| datadir       | /var/lib/mysql/ |

+---------------+-----------------+

1 row in set (0.00 sec)

 

mysql> show variables like '%log_bin%';

+---------------------------------+------------------------------------+

| Variable_name                   | Value                              |

+---------------------------------+------------------------------------+

| log_bin                         | ON                                 |

| log_bin_basename                | /var/lib/mysql/mysql_bin_log       |

| log_bin_index                   | /var/lib/mysql/mysql_bin_log.index |

| log_bin_trust_function_creators | OFF                                |

| log_bin_use_v1_row_events       | OFF                                |

| sql_log_bin                     | ON                                 |

+---------------------------------+------------------------------------+

6 rows in set (0.00 sec)

 

mysql> 

 

 

7: 系统变量max_binlog_cache_size
二进制日志能够使用的最大cache内存大小。当执行多语句事务时,max_binlog_cache_size
如果不够大,系统可能会报出“Multi-statement transaction required more
than ‘max_binlog_cache_size’ bytes of storage”的错误。

 

 

 

2: 解析DB-Server-bin.000013并将内容输出到test.sql

mysql> show master status;

+------------------+-----------+--------------+------------------+-------------------+

| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+-----------+--------------+------------------+-------------------+

| mysql-bin.000006 | 373655406 |              |                  |                   |

+------------------+-----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql> 

 
sync_binlog=n,在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同时文件系统将Binlog文件缓存刷新到磁盘。

 

mysql> purge binary logs before '2017-03-10 10:10:00';

Query OK, 0 rows affected (0.00 sec)

图片 37

 

· Certain data recovery operations require use of the binary log. After
a backup has been restored, the events in the binary log that were
recorded after the backup was made are re-executed. These events bring
databases up to date from the point of the backup. See Section 7.5, “Point-in-Time (Incremental) Recovery
Using the Binary Log”.

 

mysql> show binlog events in 'DB-Server-bin.000012' from 336;

+----------------------+-----+------------+-----------+-------------+-------------------------------------------------+

| Log_name             | Pos | Event_type | Server_id | End_log_pos | Info                                            |

+----------------------+-----+------------+-----------+-------------+-------------------------------------------------+

| DB-Server-bin.000012 | 336 | Query      |         1 |         413 | BEGIN                                           |

| DB-Server-bin.000012 | 413 | Query      |         1 |         521 | use `gsp`; insert into test values(22, 'kkk22') |

| DB-Server-bin.000012 | 521 | Xid        |         1 |         552 | COMMIT /* xid=47 */                             |

+----------------------+-----+------------+-----------+-------------+-------------------------------------------------+

3 rows in set (0.00 sec)

 

mysql> 

 

 

 

1:系统变量log_bin_basename是MySQL 5.6.2开始引入的。
它表示二进制日志文件名。默认值为datadir + ‘/’ + hostname + ‘-bin’。
该参数不需要设置,也不能在my.cnf中设置,否则会报错(实验环境为MySQL
5.6.20,如有不对,敬请指出!)。

 

mysql> show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000011 |      120 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

mysql> flush logs;

Query OK, 0 rows affected (0.01 sec)

 

mysql> insert into test values(21, 'kkk21');

Query OK, 1 row affected (0.02 sec)

 

mysql> insert into test values(22, 'kkk22');

Query OK, 1 row affected (0.00 sec)

 

mysql> select * from test;

+------+-------+

| id   | name  |

+------+-------+

|   10 | kerry |

|   20 | kern  |

|   21 | kkk21 |

|   22 | kkk22 |

+------+-------+

4 rows in set (0.00 sec)

 

mysql> desc test;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(12) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

2 rows in set (0.00 sec)

 

mysql> show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| DB-Server-bin.000012 |      552 |              |                  |                   |

+----------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

mysql>  show binlog events in 'DB-Server-bin.000012';

+----------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| Log_name             | Pos | Event_type  | Server_id | End_log_pos | Info                                                                 |

+----------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| DB-Server-bin.000012 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.20-enterprise-commercial-advanced-log, Binlog ver: 4 |

| DB-Server-bin.000012 | 120 | Query       |         1 |         197 | BEGIN                                                                |

| DB-Server-bin.000012 | 197 | Query       |         1 |         305 | use `gsp`; insert into test values(21, 'kkk21')                      |

| DB-Server-bin.000012 | 305 | Xid         |         1 |         336 | COMMIT /* xid=46 */                                                  |

| DB-Server-bin.000012 | 336 | Query       |         1 |         413 | BEGIN                                                                |

| DB-Server-bin.000012 | 413 | Query       |         1 |         521 | use `gsp`; insert into test values(22, 'kkk22')                      |

| DB-Server-bin.000012 | 521 | Xid         |         1 |         552 | COMMIT /* xid=47 */                                                  |

+----------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

7 rows in set (0.00 sec)

 

mysql> 

3:系统变量log_bin_trust_function_creators,默认为OFF,这个参数开启会限制存储过程、Function、触发器的创建。

 

[root@DB-Server ~]# mysqlbinlog /var/lib/mysql/DB-Server-bin.000013 > test.sql;

[root@DB-Server ~]# more test.sql 

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#170323 18:43:17 server id 1  end_log_pos 120 CRC32 0xabfd028f  Start: binlog v 4, server v 5.6.20-enterprise-commercial-advanced-log created 170323 18:43:17

# Warning: this binlog is either in use or was not closed properly.

BINLOG '

hU/UWA8BAAAAdAAAAHgAAAABAAQANS42LjIwLWVudGVycHJpc2UtY29tbWVyY2lhbC1hZHZhbmNl

ZC1sb2cAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAY8C

/as=

'/*!*/;

# at 120

#170323 18:43:46 server id 1  end_log_pos 197 CRC32 0xc5ff49de  Query   thread_id=4     exec_time=0     error_code=0

SET TIMESTAMP=1490309026/*!*/;

SET @@session.pseudo_thread_id=4/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1075838976/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 197

#170323 18:43:46 server id 1  end_log_pos 306 CRC32 0x75c26223  Query   thread_id=4     exec_time=0     error_code=0

use `gsp`/*!*/;

SET TIMESTAMP=1490309026/*!*/;

insert into test values(303, 'kerry')

/*!*/;

# at 306

#170323 18:43:46 server id 1  end_log_pos 337 CRC32 0x6ea837f4  Xid = 80

COMMIT/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

log_bin

 

 

 

 

 

Running a server with binary logging enabled makes performance
slightly slower. However, the benefits of the binary log in enabling you
to set up replication and for restore operations generally outweigh this
minor performance decrement.

使用命令flush logs切换二进制日志,如下所示:

 
sync_binlog=0,当事务提交后,Mysql仅仅是将binlog_cache中的数据写入binlog文件,但不执行fsync之类的磁盘同步指令通知文件系统将缓存刷新到磁盘,而是让Filesystem自行决定什么时候来做同步。MySQL中默认的设置是
sync_binlog=0,即不作任何强制性的磁盘刷新指令,这个设置性能是最好的,但风险也是最大的。一旦系统崩溃(Crash),在文件系统缓存中的所有二进制日志信息都会丢失。从而带来数据不完整问题。

 

 

· For replication, the binary log on a master replication server
provides a record of the data changes to be sent to slave servers. The
master server sends the events contained in its binary log to its
slaves, which execute those events to make the same data changes that
were made on the master. See Section 17.2,
“Replication Implementation”.

 

二进制日志状态查看

二进制日志简单介绍

查看系统变量log_bin,如果其值为OFF,表示没有开启二进制日志(binary
log),如果需要开启二进制日志,则必须在my.cnf中[mysqld]下面添加log-bin
[=DIR\[filename]]
,DIR参数指定二进制文件的存储路径;filename参数指定二级制文件的文件名。
其中filename可以任意指定,但最好有一定规范。系统变量log_bin是静态参数,不能动态修改的(因为它不是Dynamic
Variable)。如下所示:

mysql> show binary logs;

+----------------------+-----------+

| Log_name             | File_size |

+----------------------+-----------+

| DB-Server-bin.000001 |       143 |

| DB-Server-bin.000002 |       171 |

| DB-Server-bin.000003 |       171 |

| DB-Server-bin.000004 |       171 |

| DB-Server-bin.000005 |       171 |

| DB-Server-bin.000006 |       143 |

| DB-Server-bin.000007 |       143 |

| DB-Server-bin.000008 |       120 |

+----------------------+-----------+

8 rows in set (0.00 sec)

 

mysql> purge binary logs to 'DB-Server-bin.000002';

Query OK, 0 rows affected (0.02 sec)

 

mysql> show binary logs;

+----------------------+-----------+

| Log_name             | File_size |

+----------------------+-----------+

| DB-Server-bin.000002 |       171 |

| DB-Server-bin.000003 |       171 |

| DB-Server-bin.000004 |       171 |

| DB-Server-bin.000005 |       171 |

| DB-Server-bin.000006 |       143 |

| DB-Server-bin.000007 |       143 |

| DB-Server-bin.000008 |       120 |

+----------------------+-----------+

7 rows in set (0.00 sec)

 

mysql> purge binary logs to 'DB-Server-bin.000004';

Query OK, 0 rows affected (0.00 sec)

 

mysql> show binary logs;

+----------------------+-----------+

| Log_name             | File_size |

+----------------------+-----------+

| DB-Server-bin.000004 |       171 |

| DB-Server-bin.000005 |       171 |

| DB-Server-bin.000006 |       143 |

| DB-Server-bin.000007 |       143 |

| DB-Server-bin.000008 |       120 |

+----------------------+-----------+

5 rows in set (0.00 sec)

 

mysql> 
mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | ON    |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql> 
mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | OFF   |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql> set global log_bin=mysql_bin;

ERROR 1238 (HY000): Variable 'log_bin' is a read only variable

mysql> 

log_bin=/mysql/bin_log/mysql_binlog

 

[root@DB-Server mysql]# ls -lrt DB-Server-bin*

-rw-rw---- 1 mysql mysql 143 Mar 22 10:55 DB-Server-bin.000001

-rw-rw---- 1 mysql mysql 171 Mar 22 11:20 DB-Server-bin.000002

-rw-rw---- 1 mysql mysql 171 Mar 22 11:23 DB-Server-bin.000003

-rw-rw---- 1 mysql mysql 171 Mar 22 11:24 DB-Server-bin.000004

-rw-rw---- 1 mysql mysql 138 Mar 22 11:24 DB-Server-bin.index

-rw-rw---- 1 mysql mysql 120 Mar 22 11:24 DB-Server-bin.000006

-rw-rw---- 1 mysql mysql 171 Mar 22 11:24 DB-Server-bin.000005

[root@DB-Server mysql]# more DB-Server-bin.index 

./DB-Server-bin.000001

./DB-Server-bin.000002

./DB-Server-bin.000003

./DB-Server-bin.000004

./DB-Server-bin.000005

./DB-Server-bin.000006

[root@DB-Server mysql]# 

3:当然你可以可以指定二进制日志的路径位置,如下所示:

mysql> show variables like 'binlog_checksum';

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| binlog_checksum | CRC32 |

+-----------------+-------+

1 row in set (0.00 sec)

 

mysql> 

The binary log is not used for statements such as SELECT or SHOW
that do not modify data. To log all statements (for example, to identify
a problem query), use the general query log. See Section 5.4.3, “The General Query Log”.

4: 清除所有的二进制日志文件(当前不存在主从复制关系)

9:系统变量max_binlog_size,
表示二进制日志的最大值,一般设置为512M或1GB,但不能超过1GB。该设置并不能严格控制二进制日志的大小,尤其是二进制日志比较靠近为不而又遇到一根比较大事务时,
为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束。

3: 清除7天前的二进制日志文件

mysql> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000004 | 478421400 |

| mysql-bin.000005 |      9653 |

| mysql-bin.000006 | 340631484 |

+------------------+-----------+

3 rows in set (0.00 sec)
mysql> show variables like 'expire_logs_days';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| expire_logs_days | 7     |

+------------------+-------+

1 row in set (0.00 sec)

 

mysql> 

图片 38

 

11:系统变量sync_binlog,这个参数对于Mysql系统来说是至关重要的,它不仅影响到二进制日志文件对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。

 

 

 

mysql> show variables like 'sync_binlog';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sync_binlog   | 0     |

+---------------+-------+

1 row in set (0.00 sec)

 

mysql>