MySQL 特性

MySQL5.6 RC innodb_log_compressed_pages 测试 及实现简述

MySQL5.6 RC增加了一个参数innodb_log_compressed_pages,以判定在压缩page时,是否在redo中存储压缩页数据。 最近把该特性在5.5.18上做了实现,从测试的效果来看,大大减少了redo log的写入量(降低到1/3~1/5),这会降低checkpoint的概率,并稍微增加了tps 以下数据,包括tps及每秒的log平均写入量(采集自status值Innodb_os_log_written) innodb_log_compressed_pages =0 innodb_log_compressed_pages =1 Prepare data  8333 rows/s     2.37MB/s 8130 rows/s 6.79MB/s update_non_index.lua 1880.32 per sec  3.26MB/s 1780.51 per sec 16.56MB/s update_index.lua 1896.34 per sec 3.19MB/s 1824.21 per sec 16.93MB/s oltp.lua 576.85 per sec 1.62MB/s 559.52 per sec 14.27MB/s 后续还需要做一些相关的crash恢复测试 //////////////////////////////////////////////////////////////// 其他:innodb_log_compressed_pages主要修改细节 原本innodb记录每个压缩Page到redo中,目的是为了防止在崩溃恢复时,压缩的算法发生改变,尤其在引入了可调整的压缩级别(innodb_compression_level)后,如果重启后,使用不同的level,就可能无法恢复出一致的压缩页 mlog的背景知识可以参考这个: http://www.mysqlops.com/2012/04/06/innodb-log2.html 目前对mini-transaction、redo以及崩溃恢复机制还不是特别了解,以下只是简述,并未深入。 1.btr_page_reorganize_low @增加参数 compression_level @在做page reorgnize之前,需要先写入一条mlog […]


[MySQL Patch]自动处理备库错误

转载请署名:印风 ————————————————– 备库因为某些错误停止时有发生,最常见的错误就是”HA_ERR_KEY_NOT_FOUND”和 “HA_ERR_FOUND_DUPP_KEY”.这既有可能是主备切换导致的,也可能是MySQL Bug导致的 通常有两种办法来处理备库错误: 1). 设置 “sql_slave_skip_counter”来忽略错误. 2).set slave_exec_mode = “idempotent”来处理 “HA_ERR_FOUND_DUPP_KEY” (overwritten the record) 和”HA_ERR_KEY_NOT_FOUND”(简单的忽略掉错误). 这两种方法都可能导致主备不一致 如果你使用的是innodb存储引擎,并且使用的是ROW模式复制,那我们就可以fix这个Bug。 很久之前我写了一个工具(http://code.google.com/p/relay-fetch/,下面的slave_error_handler文件夹)可以用来处理这个问题。 以下的patch则通过修改代码,为slave_exec_mode增加新的选项SMART,来自动处理。 思想很简单 1) HA_ERR_KEY_NOT_FOUND UPDATE_ROWS_EVENT: 先写记录的’Before Image’ ,然后再update DELETE_ROWS_EVENT: 先写后删 , 或者直接忽略错误 2)HA_ERR_FOUND_DUPP_KEY WRITE_ROWS_EVENT: overwrite the record 对UPDATE_ROWS_EVENT导致的重复键错误暂不做处理。 以下patch基于Percona Server 5.5.18:   Index: /PS5518/branches/PS-r1086-slave-auto-fix/sql/log_event.cc =================================================================== — /PS5518/branches/PS-r1086-slave-auto-fix/sql/log_event.cc (revision 1136) +++ /PS5518/branches/PS-r1086-slave-auto-fix/sql/log_event.cc (revision 1180) @@ […]