Mysql之sync-binlog参数

Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃是,就可能导致bin-log最后的语句丢失。

可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。

参考Mysql官网:http://dev.mysql.com/doc/refman/5.5/en/replication-options-binary-log.html#sysvar_sync_binlog



参考:http://blog.csdn.net/wulantian/article/details/9965905

sync_binlog=1 or N

This makes MySQL synchronize the binary log’s contents to disk each time it commits a transaction

默认情况下,并不是每次写入时都将binlog与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能binlog中最后的语句丢 失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘 同步。即使sync_binlog设置为1,出现崩溃时,也有可能表内容和binlog内容之间存在不一致性。如果使用InnoDB表,MySQL服务器 处理COMMIT语句,它将整个事务写入binlog并将事务提交到InnoDB中。如果在两次操作之间出现崩溃,重启时,事务被InnoDB回滚,但仍 然存在binlog中。可以用--innodb-safe-binlog选项来增加InnoDB表内容和binlog之间的一致性。(注释:在MySQL 5.1中不需要--innodb-safe-binlog;由于引入了XA事务支持,该选项作废了),该选项可以提供更大程度的安全,使每个事务的 binlog(sync_binlog =1)和(默认情况为真)InnoDB日志与硬盘同步,该选项的效果是崩溃后重启时,在滚回事务后,MySQL服务器从binlog剪切回滚的 InnoDB事务。这样可以确保binlog反馈InnoDB表的确切数据等,并使从服务器保持与主服务器保持同步(不接收 回滚的语句)。

时间: 2024-10-30 19:39:45

Mysql之sync-binlog参数的相关文章

mysql 5.6 binlog组提交1

[MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程 尽管Mariadb以及Facebook在long long time ago就fix掉了这个臭名昭著的问题,但官方直到 MySQL5.6 版本才Fix掉,本文主要关注三点: 1.MySQL 5.6的性能如何 2.在5.6中Group commit的三阶段实现流程 新参数 MySQL 5.6提供了两个参数来控制binlog group commit: binlog_max_flush_queue_time

mysql基于init-connect+binlog完成审计功能

mysql基于init-connect+binlog完成审计功能 目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用它来完成审计功能. init-connect参数说明: http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_init_connect s

MySQL 5.7贴心参数之binlog_row_image

相信大家都了解mysql binlog的格式,那就是有三种,分别是STATEMENT,MiXED,ROW.各有优劣,具体的请大家自行查阅资料.在MySQL 5.7版本以前,虽然ROW格式有各种各样的好处. 1. 比如加快从库重放日志:ROW直接调用mysql的存储引擎接口(handler API) 来执行行的插入.删除和更新,完全跳过了mysql的优化器的处理逻辑. 2. 保证主从数据的一致性.记录的每一行的变更. 3. 可以通过对binlog的逆向解析实现闪回功能. 那么实际上还是有一个缺陷,

数据库相关文章转载(1) MySQL性能优化之参数配置

1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目前安装状况. MySQL目前安装,用的是MySQL默认的最大支持配置.拷贝的是my-huge.cnf.编码已修改为UTF-8.具体修改及安装MySQL,可以参考<<Linux系统上安装MySQL 5.5>>帮助文档. 4.修改MySQL配置 打开MySQL配置文件my.cnf vi  

Mysql数据库之Binlog日志使用总结

binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍1)什么是binlogbinlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句.语句以"事件"的形式保存,它描述数据更改. 2)binlog作用因为有了数据更新的binlog,所以可以用于实时备份,与master/slave主从复制结合. 3)和binl

mysql 5.6 binlog组提交实现原理

mysql 5.6 binlog组提交实现原理 http://blog.itpub.net/15480802/viewspace-1411356 Redo组提交 Redo提交流程大致如下 lock log->mutex write redo log buffer to disk unlock log->mutex fsync Fsync写磁盘耗时较长且不占用log->mutex,也就是其执行期间其他线程可以write log buffer: 假定一次fsync需要10ms,而写buffe

mysql数据的binlog处理方法

最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源.我们采用手动清理,后面设置一下自动清理. 查看指定删除日志 mysql >show binary logs;  查看多少binlog日志,占用多少空间. mysql> PURGE MASTER LOGS TO 'mysql-bin.002467';    删除mysql-bin.002467以前所有binlog,这样删除可以保证*.index信息与binlog文件同步. 手动清理 mysql>PURGE MASTER LOGS

Mysql性能优化之参数配置(转)

Mysql作为数据库中广泛应用的开源产品,需要面对不同的生产压力,而有些问题通过优化就可以解决,优化可以分为几个方向:1.优化参数配置.2.优化数据库索引.3.优化数据库结构,如分区分表等等.本篇着重介绍数据库的参数优化原则与方式方法. 1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目前安装状况. MySQL目前安装,用的是MySQL默认的最大支

查看mysql连接状态各类参数

命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status; 命令:show status like '%下面变量%'; Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量. Aborted

MySQL Row格式Binlog的解析(1)

用MySQL 行格式的复制的Slave经常会遇到复制出错1062和1032 错误,一般是镜像异常宕机导致主从复制数据不一致所致,但是有些库本身很大,重建成本很大,并且这些库的数据一致性用户可能都不是太关心的,所以之前的处理办法一般是遇到主键冲突的就跳过,遇到找不到key的就用mysqlbinlog解析一下 把数据补出来,但是这种方法太人肉话,处理起来很慢,所以之前做过一个自动修数据的工具,也是解析binlog日志,然后生成SQL语句去执行. 做这个工具还有另外一个用途,既然能解析BINLOG日志