【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)
新功能
主要为了解决一个比较“古老”的MySQL在NUMA架构下的“swap insanity”问题,其表现为尽管为InnoDB buffer pool分配了足够多的内存,但依然会产生swap。而swap对数据库系统性能而言是比较致命的。
当我们配置的buffer pool超过单个node的内存时,例如总共64GB内存,每个节点32GB,分配buffer pool为40GB,默认情况下,会先用满node 0,再在node1上分配8GB内存。如果绑定到node 0上的线程需要申请新的内存时,不是从node1上申请(还有24GB空余),而是swap node0的内存,再做申请。
这个问题在社区讨论了很久,大神Jeremy Cole 对该问题有写博客做过详细的介绍(http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/)
解决:
增加了一个只读的新参数innodb_numa_interleave选项,当开启该选项,可以允许在NUMA架构下采取交叉分配内存的方式。
在启动MySQL时,采用MPOL_INTERLEAVE方式分配内存,如上例,在启动时每个node上分配20GB内存,保证每个node依然有空闲内存可用;在完成InnoDB buffer pool内存分配后,再将内存分配策略设置为MPOL_DEFAULT,之后的线程申请内存,都在各自的节点完成。
补丁:
https://github.com/mysql/mysql-server/commit/242fa2c92de304637e794e531df1f1b86b8d1dee
https://github.com/mysql/mysql-server/commit/d2578b57ba7d90a00281ae124a1cd6c83193f62a
InnoDB bugfix
问题描述:
这是因为每次打开表时,总是通过计算表上记录最大自增列值的方式来重新设置,当表被打开时,如果没有数据,AUTO_INCREMENT就会被重置成最小值。
解决:
在驱逐表时,将这个表的AUTO_INCREMENT值存储在内存中(dict_sys->autoinc_map),当表重新读入时,再恢复其AUTO_INCREMENT值。
这个Fix并不算一个完整的修复,当实例重启时,AUTO_INCREMENT依然会被重置(参阅bug#199), RDS MYSQ已经Fix了这个bug,能够持久化自增列到物理文件中,在重启后不会丢失。
补丁:
https://github.com/mysql/mysql-server/commit/d404923aad4693dc152d02461f858d7ef218c336
问题描述:
Memcached的一段开启事务的代码在assert中调用,而根据assert的文档定义(
http://man7.org/linux/man-pages/man3/assert.3.html
),他的行为是未知的,受NDEBUG控制,可能assert会被定义成空函数,导致assert中的函数调用被忽略掉。这个bug在某些平台下可能极易触发。使用memcached的同学需要注意下。 (Bug #21239299, Bug #75199)
解决:
将函数调用从assert中移出来,只assert函数返回值。
补丁:
https://github.com/mysql/mysql-server/commit/db5dc6fd3abe855685a554bc3c555b1b63914b60
问题描述:
在ARM64平台上, GCC的内建的TAS操作函数__sync_lock_test_and_set
该bug最初从MariaDB爆出,参考MDEV-6615 https://mariadb.atlassian.net/browse/MDEV-6615
解决:
如果定义了__atomic_test_and_set(ptr, __ATOMIC_ACQUIRE)/ __atomic_clear(ptr, __ATOMIC_RELEASE)操作,则优先使用该函数进行变量设置,否则如果是X86平台,使用__sync_lock_test_and_set ,其他情况,在编译阶段报错。
补丁:
https://github.com/mysql/mysql-server/commit/f59d68eeae37338d7b25f2571407e763fa897e15
问题描述:
InnoDB shutdown时需要调用三次trx_purge操作,每次处理300个undo log page,最终处理900个undo log page,但是shutdown需要等待purge线程退出,,这可能需要耗费比较长的时间,shutdown会更耗时。(Bug #21040050)
补丁:
https://github.com/mysql/mysql-server/commit/3e8202ff443909e93231d453a3f1560b5a5ce3cb
问题描述:
在READ COMMITED隔离级别下,并发replace into操作可能导致唯一二级索引损坏,唯一键约束失效。这主要是锁继承逻辑错误导致,具体的见之前的一篇月报分析http://mysql.taobao.org/monthly/2015/06/02/
解决:
调整锁继承逻辑,如果是类似REPLACE INTO这样的操作,需要进行锁继承。之前月报有详细分析。
补丁:
https://github.com/mysql/mysql-server/commit/608efca4c4e4afa1ffea251abda675fcc06efc69
补丁:
https://github.com/mysql/mysql-server/commit/641ab6f36813516255738ba25d3c6b721189832e
复制
CREATE TABLE t1(c1 int) ENGINE=InnoDB;
CREATE TABLE t2(c1 int) ENGINE=InnoDB;set session binlog_format=’STATEMENT';START TRANSACTION;
UPDATE t1,t2 SET t1.c1 = 0;
SAVEPOINT sp1;UPDATE t1,t2 SET t1.c1 = 0;
SAVEPOINT sp2;COMMIT;
| master-bin.000001 | 229 | Query | 1 | 340 | use `test`; CREATE TABLE t1(c1 int) ENGINE=InnoDB |
| master-bin.000001 | 340 | Query | 1 | 451 | use `test`; CREATE TABLE t2(c1 int) ENGINE=InnoDB |
| master-bin.000001 | 451 | Query | 1 | 539 | BEGIN |
| master-bin.000001 | 539 | Query | 1 | 648 | use `test`; UPDATE t1,t2 SET t1.c1 = 0 |
| master-bin.000001 | 648 | Query | 1 | 737 | COMMIT |
| master-bin.000001 | 737 | Query | 1 | 825 | BEGIN |
| master-bin.000001 | 825 | Query | 1 | 934 | use `test`; UPDATE t1,t2 SET t1.c1 = 0 |
| master-bin.000001 | 934 | Query | 1 | 1023 | COMMIT |
| master-bin.000001 | 1023 | Query | 1 | 1095 | BEGIN |
| master-bin.000001 | 1095 | Query | 1 | 1177 | SAVEPOINT `sp1` |
| master-bin.000001 | 1177 | Query | 1 | 1259 | SAVEPOINT `sp2` |
| master-bin.000001 | 1259 | Query | 1 | 1332 | COMMIT |
+——————-+——+————-+———–+————-+—————————————————+
[ERROR] Slave SQL for channel ”: Could not execute Write_rows event on table test.t3; Unknown error, Error_code: 1105; handler error HA_ERR_GENERIC; the event’s master log master-bin.000001, end_log_pos 1553, Error_code: 1105
BEGINTable_mapWrite_rowsXidBEGINTable_mapTable_mapTable_mapWrite_rowsSAVEPOINT `event_logging`Write_rowsXid
Format_desc (of slave)Previous-GTIDs (of slave)Rotate (of master)Format_desc (of master)
Format_desc (of slave)Rotate (of master)Format_desc (of master)
转载于:https://www.cnblogs.com/conanwang/p/5848064.html
【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)相关推荐
- MySQL 5.6.26 Release Note解读
最近上游发布了MySQL 5.6.26版本,从release note来看,MySQL5.6版本已经相当成熟,fix的bug数越来越少了.本文主要分析releae note上fix的相关bug,去除p ...
- K8s 1.14 发布了,Release Note 该怎么读?
本文由张磊.心贵.临石.徙远.衷源.浔鸣等同学联合撰写. Kubernetes 1.14.0 Release 已经于 3 月 25 日正式发布.相信你也已经注意到,相比于1.13 和 1.12 版本, ...
- Mysql下载安装(附mysql5.5.27免费下载安装)
Mysql下载安装 (记录mysql下载安装,以便日后使用) 关于maven中加载mysql问题直接点这里(正在更新) 安装版安装请看这里 mysql5.5.27下载地址64位 mysql5.5.27 ...
- Paddle Release Note
Paddle Release Note 重要更新 飞桨paddle框架2.0.0版本有如下重要更新: • 编程范式:默认开启动态图模式进行模型开发和训练,通过动转静的方式进行模型部署和训练加速.如果需 ...
- mysql5.6.27_Centos上安装Mysql5.6.27多实例
CentOs 6.4 Mysql5.6.27 CentOs6.4 Mysql5.6.27 卸载系统mysql: rpm -qa|grep -i mysql rpm -e --nodeps xxx # ...
- linux mysql5.6.27源码安装和错误解决
centos mysql5.6.27 1编译安装 先进入到文件放置的路径下 创建一个个文件 #mkdir–p /data/mysql/mysql #mkdir–p /data/mysql/mysqld ...
- mysql2.1.4安装_安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明
安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明 安装系统: 红帽子企业服务器Redhat Linux5(不安装任何服务) 也可以安装完整版,然后将Apache,mys ...
- MySQL5.5.27使用Restore From SQL Dump功能导入数据库表中出现Row size too large
问题描述:MySQL数据库版本为MySQL5.5.27,在使用其Restore From SQL Dump功能导入数据库表时出现以下错误提示 Row size too large. The maxim ...
- mysql5.6.27安装_mysql-5.6.27源码安装及错误解决办法
环境:centos6.5.x86_64yum install -y cmake 当然也可以自己下载源码包安装,为方便就Yum安装了 useradd -s /sbin/nologin mysql ta ...
- mysql myisam 主从_MySQL的主从复制Replication之MyIsam和InnoDB数据复制发布
MyIsam发布相对简单,把库下面所有文件拷过去就好了.复制Innodb的做法和MyIsam类似,只不过Innodb引擎下的表的数据内容不再是存在同一的数据库目录下(MyIsam就是这么做的),Inn ...
最新文章
- Sqlite3支持的数据类型 日期函数以及相关 函数
- 科学家发现鱼会数学,5以内的加减法难不倒它,网友:要多吃鱼了
- 【风控场景】互利网上数字金融典型场景: 网络支付
- ensp小实验走起来(路由下发、MSTP、VRRP、DHCP、DHCP中继、NAT、链路聚合)之配置
- python解释器下安装z3_再次:在Windows上安装Z3 Python
- linux时间跳变影响,MONGO 集群 修改linux主机时间后的影响
- eclipse中启动tomcat的项目路径
- 基于JAVA+SpringMVC+Mybatis+MYSQL的学校教务查询系统
- 第二百零一天 how can I坚持
- 生产者-消费者习题的运用
- 多图片文件上传实现并通过 PostMan 测试
- nginx php访问阻塞,php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
- linux类似everything的软件,安装linux下强大的文件工具fsearch,与windows下Everything类似...
- 米思齐Mixly图形化编程---呼吸灯与可调档位灯
- 一. Scala安装与环境配置
- 计算机电脑使用基础知识!
- “此工作站和主域间的信任关系失败”之解决
- 不可不知,专业名词解释
- 网站吊唁效果(黑白)
- c语言中用age表示年龄的词语,age和aged表示年龄的区别