Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2764399
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Mysql/postgreSQL

2014-09-04 20:24:17

                                  MySQL Binlog文件损坏处理一则

   Mysql binlog用来记录在服务器端上执行的SQL语句(假设binlog_format=statement).
根据sync_binlog的设置(默认为0,可以设置为1),当设置为0时,每次线程在生成binlog时
不调用操作系统同步文件的函数,这样binlog可能存在于文件系统缓存中.设置为1时,每次
在写binlog时,同时设用操作系统同步文件系统的函数,保证binlog会写到文件系统中.

   设置为1时,每次都需要同步文件系统,再加上使用innodb存储引擎,本身又有自己的事务
日志,从而给IO带来很大的压力.当设置为0时,带来的好处是事务处理性能基本上不受到binlog的影响,
但是安全性受到影响,比如在掉电时,binlog没有及时写回,导致了binlog损坏,从而使mysql无法正常
启动.

..........................
 2014-08-26 09:37:08 12507 [Note] InnoDB: 128 rollback segment(s) are active.
2014-08-26 09:37:08 12507 [Note] InnoDB: Waiting for purge to start
2014-08-26 09:37:08 12507 [Note] InnoDB:  Percona XtraDB () 5.6.14-rel62.0 started; log sequence number 1759775
/usr/local/Percona-Server-5.6.14-rel62.0-483.Linux.x86_64/bin/mysqld: The binary log file './1.000005' is logically corrupted: The first global transaction identifier was read, but no other information regarding identifiers existing on the previous log files was found.
2014-08-26 09:37:08 12507 [ERROR] Aborting

2014-08-26 09:37:08 12507 [Note] Binlog end
2014-08-26 09:37:08 12507 [Note] Shutting down plugin 'partition

..........................

可以看到binlog已经逻辑上损坏了

如果这时候有从库的话,可能会存在问题,比如从库还没有来得及把主库的binlog挖过去.

临时的解决办法就是修改log_bin设置,从新指定一个名字,启动mysql服务器.原来的从库可能需要重初始化.

有时候sync_binlog带来的io压力又很大,设置为0或是1确实是一个问题.在mysql 5.6以后引入了rpl-semisync后
,设置sync_binlog.使用这种方式带来可选的方案。前提是要到从库的网络,性能要够快,而不致于对主库的事务响应
时间带来延迟.

mysql还有几个文件都有这种和文件缓存的问题,在5.6以后版本中,引入了设置同步的参数,可以从一定程序上避免这种
问题的发生,但是有性能影响,由用户自行选择.

mysql> show global variables like 'sync_%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| sync_binlog         | 0     |
| sync_frm            | ON    |
| sync_master_info    | 10000 |
| sync_relay_log      | 10000 |
| sync_relay_log_info | 10000 |
+---------------------+-------+
5 rows in set (0.00 sec)

阅读(4587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~