Mysql配置参数sync_binlog说明

摘要:
MySQL配置参数sync_Binlog描述MySQL˃selectversion()+----------+|version()|+----------+| 5.7.23 |+----------+1rowinsetmysql˃showvariables like'sync_Binlog';+--------+--------+|Variable_ name | Value |+---------------+---------------+| sync_ Binlog | 1 |+---------------+--------------+rowinsetMySQL提供sync_ Binlog参数控制将数据库的Binlog刷新到磁盘。默认情况下,sync_Binlog=0,这意味着MySQL不控制Binlog的刷新,但文件系统本身控制其缓存的刷新。因为一旦系统崩溃,缓存中的所有binlog信息都将丢失。尽管binlog是顺序IO,sync是set_binlog=1,但同时提交多个事务,这也极大地影响了MySQL和IO性能。对于具有高并发事务的系统,“sync_binlog”设置为0的系统与“sync_binlog”设置为1的系统之间的写入性能差距可能高达5倍或更多。MySQL DBA_Binlog设置的许多同步不是最安全的1,而是100或0。

Mysql配置参数sync_binlog说明

mysql> select version(); 
+-----------+
| version() |
+-----------+
| 5.7.23 |
+-----------+
1 row in set (0.00 sec)


mysql> show variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 1     |
+---------------+-------+
1 row in set (0.00 sec)

MySQL提供一个sync_binlog参数来控制数据库的binlog刷到磁盘上去。

默认,sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。

如果sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。最安全的就是sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据。但是binlog虽然是顺序IO,但是设置sync_binlog=1,多个事务同时提交,同样很大的影响MySQL和IO性能。虽然可以通过group commit的补丁缓解,但是刷新的频率过高对IO的影响也非常大。对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

所以很多MySQL DBA设置的sync_binlog并不是最安全的1,而是100或者是0。这样牺牲一定的一致性,可以获得更高的并发和性能。

免责声明:文章转载自《Mysql配置参数sync_binlog说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Eclipse中使用WindowBuilder设计Swing程序Debian 环境安装新版 nginx下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP基础封装简单的MysqliHelper类

MysqliHelper.class.php 1: <?php 2: 3: /** 4: * MysqliHelper 5: * [面向对象的MysqliHelper的简单封装] 6: */ 7: class MysqliHelper 8: { 9: private static $mysqli; 10: private stat...

mysql修改definer方法

-- 函数、存储过程 select definer from mysql.proc; update mysql.proc set definer='billing@%'; -- 定时事件 select DEFINER from mysql.EVENTS; update mysql.EVENTS set definer='billing@%'; --视图 s...

MySQL同步故障:" Slave_SQL_Running:No" 两种解决办法

进入slave服务器,运行: mysql> show slave statusG Relay_Log_File: localhost-relay-bin.000535 Relay_Log_Pos: 21795072 Relay_Master_Log_File: localhost-bin.000094 Slave_IO_Running:...

优化mysql的内存

Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引;2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain...

mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)错误解决办法

我的电脑是win10,所用的是mysql5.7.14 近期在学习mysql数据库的时候,遇到了这个错误,我的密码错误了。突如其来的问题,很是蒙蔽,因为我没对数据库设置过密码。通过网上查询,可以通过进入mysql命令行的方式,来直接修改数据库的密码。具体步骤如下: 在mysql数据库的my.ini文件中找到mysqld这一项: 用记事本打开,找到mysql...

数据库中事务

一、概念        数据库事务(DatabaseTransaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(...