近日,腾讯云CDB迎来MySQL 5.7版本的更新。MySQL 5.7GA版本从5.7.9到如今的5.7.18,版本已经越来越稳定。从oracle官方版本发布的Release Notes中,看到最近的两个版本5.7.17和5.7.18主要是以bug修改为主。

众所周知,腾讯云CDB for MySQL5.7版本除了性能的极大提升之外,也增加了很多新功能特性,比如GIS数据类型和空间索引,Json数据类型,Generated colum以及函数索引, 数据加密,还有Group Relication等等重磅功能。

而腾讯云上已经有用户需要用到上述的一些功能,所以也是从今年四月份就开始做TXSQL 5.7(TXSQL是腾讯云数据库团队维护的MySQL内核分支)的版本,并在四月底提交了版本进行测试。本次,腾讯云的TXSQL 5.7是基于MySQL 5.7.18版本。

目前腾讯云TXSQL 5.7的第一版,在复制强制一致、自动转换MyISAM表为InnoDB表、增加不同的工作模式等方面有着非常重大的突破。

1. 复制强制一致

了解的人都知道,在MySQL的semisync设有超时机制,配置参数为rpl_semi_sync_master_timeout。一旦master在设定的时间内没有等到slave的确认(比如网络故障),semisync就会关闭,主动降级为默认的异步复制模式。异步复制模式大的问题就是master不用等待slave的确认。那么当master挂掉的时候,切换到slave,就存在丢数据的可能。

针对数据可能丢失这一点,腾讯云在TXSQL 5.7增加了一个新的选项rpl_semi_sync_wait_forever。在其为ON的时候,master会一直等待slave的确认。如果长时间等不到确认,系统告警,这时候可以设置rpl_semi_sync_wait_forever为OFF,来唤醒master中的等待线程,同时将semisync降级为异步模式。在这种情况下,如果master在最终收到slave确认,而且slave追赶到最新的binglog后会自动开启semisync。

11. 方案设计

(1) 设置rpl_semi_sync_master_timeout到一个无限大的值

这样可以实现master一直等待,但是当想回到正常的timeout模式时,我们需要记住之前的rpl_semi_sync_master_timeout的设置值。这样可能需要加一个系统的状态变量来保存这个值。另外,这样会导致在处理rpl_semi_sync_master_timeout值变化时的逻辑变复杂。

(2) 增加新变量rpl_semi_sync_wait_forever

既然在上一种方案需要一个新的状态变量,腾讯云就直接增加一个变量来作为一直等待的开关。在rpl_semi_sync_wait_forever为ON的时候,master会一直等待slave的确认。如果长时间等不到确认,系统告警,则可以设置rpl_semi_sync_wait_forever为OFF,来唤醒master中的等待线程,同时将semisync降级为异步模式。在这种情况下,如果master在最终收到slave确认,而且slave追赶到最新的binglog后会自动开启semisync。

(3)基于paxos的semisync

MySQL5.7中支持rpl_semi_sync_master_wait_for_slave_count,但在某一个slave没有在rpl_semi_sync_master_timeout时间内返回确认,即便是master等到了rpl_semi_sync_master_wait_for_slave_count个slave的确认,master还是会从semisync降级到异步模式。在semisync中支持paxos协议会从根本上解决这个问题,实现真正意义上的强一致。

目前,腾讯云选择的为(2)方案,这主要是因为,现网实例中基本都是一主一备,(3)的方案比较重,(2)的实现明显优于(1)。方案(3)适合对强一致要求更高的应用场景,目前,腾讯云已经列入开发计划,预计下半年推出。

1.2 实现原理

(1) 设置rpl_semi_sync_wait_forever为ON之后

a. 新进来的事务需要一直等待。

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

b. 之前老的事务如果发生超时,需要继续等待。

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

因为如果用户设置为ON之后,预期是不会发生超时。

(2)设置rpl_semi_sync_wait_forever为OFF

如果此时有一直在等待的事务,要唤醒。最初的方案是

signal_waiting_sessions_all()来唤醒这些事务,然后如果事务等待的时间超过了rpl_semi_sync_master_timeout,降级为异步模式。如果等待的时间wait_time < rpl_semi_sync_master_timeout,那么继续等待rpl_semi_sync_master_timeout - wait_time。但是通过sysbench压测发现这样的方案会导致死锁,。

所以最终的简化方案是:

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

1.3 新增状态

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

2. 自动转换MyISAM表为InnoDB表

MyISAM表因为不支持事务,所以存在故障恢复丢数据的可能。在复制环境下,如果使用MyISAM表,master和slave就可能出现不一致情况。即使腾讯云强烈建议用户只使用InnoDB表,但是还是无法避免用户在某些情况仍然去使用MyISAM表。为了解决这个问题,腾讯云提供了新的选项,在建表的时候默认将MyISAM表转为InnoDB表。

新增变量

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

可选值

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

由于InnoDB内部的一些限制,会导致有些情况下转换失败。

(1) auto-increment

在InnoDB中只允许定义一个自增列,并且这个列必须被定义为主键。在MyISAM中则无此限制。

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

(2) max key length

在InnoDB中,innodb_large_prefix关闭的情况下,max key length不能大于767,而在MyISAM中,则不能大于1000。

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

(3) row format

在InnoDB中,innodb_strict_mode开启的情况下,row format FIXED是不支持的。

【干货】腾讯云CDB属性升级,TXSQL 5.7实现真正复制强制一致

3. 增加不同的工作模式

除了复制强制一致、自动转换MyISAM表为InnoDB表,这两项功能的实现以外,在TXSQL 5.7中,腾讯云还为其增加了READ_ONLY模式。

众所周知,MySQL 5.7中增加了一个新的参数offline_mode(WL#3836),设置此参数为OFF,server拒绝对外服务,root用户可以对系统进行诊断操作或升级操作等。在TXSQL 5.7中增加了READ_ONLY模式,不同的工作模式,将会实现更多的功能。

目前,这只是腾讯云TXSQL 5.7的第一个版本,从总体功能来看,这些已经实现的功能,都相对来说非常的人性化和实用。这也将进一步促进腾讯云CDB的功能实现全面突破和领先。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2020-07-21 15:37:20
云资讯 首个支持云上超级管理员权限,腾讯云数据库SQL Server基础版发布
7月20日,腾讯云数据库SQL Server基础版(单机)正式上线。云数据库SQL Server 基础版提供了正版授权、高可用、高安全、高性能及轻运维的全套数据库解决方案,且兼具超高性 <详情>
2019-06-18 10:20:24
云资讯 重磅:Azure SQL Database托管实例将落地中国
SQL Database托管实例将为中国市场客户将现有SQL Server迁移到云端,提供一条安全可靠的快捷通道,真正推动企业业务的数字化转型! <详情>
2019-06-13 15:41:32
云资讯 微软智能云Azure SQL Database Managed Instance 开启SQL Server到PaaS服务无缝迁移时代
作为微软智能云助力客户数据库迁移上云的重要举措,Azure SQL Database Managed Instance(SQL Database托管实例)服务正式登陆由世纪互联运营的Microsoft Azure。这项PaaS <详情>
2018-10-12 09:36:50
大数据技术 大数据生态圈到底是一个什么概念?
大数据这个概念本身就太大而且太宽,如果一定要严格定义是非常困难的一件事,不过Hadoop生态圈或者由其延伸的泛生态系统,基本上都是为了处理大量数据诞生的——一般而言, <详情>
2018-07-31 09:19:44
大数据技术 30个MySQL千万级大数据SQL查询优化技巧详解
本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大。 <详情>
57亿算力大单落地(哈密28、德令哈15、百度8.4)、阿里143亿将交付、润泽238亿港元重仓香港、16项目15智算6备案、中移50亿1.5万P中心封顶
2026-03-11 14:25:00
“算力绿洲”——中东地区数据中心及云项目盘点
2026-03-11 11:33:28
数据中心她力量:AIGC 浪潮下,八位领军者原声解构算力新周期
2026-03-11 11:31:08
深度|泰国算力交付全面提速,AWS、Google、微软、阿里云、TikTok五大巨头押注EEC走廊
2026-03-11 11:23:00
总金额超9.6亿元,同一联合体连中宁夏两大算力项目
2026-03-10 11:40:29
1.2亿,廊坊市云风数据中心机电EPC项目公布中标结果
2026-03-10 11:38:22
Oracle与OpenAI放弃星际之门旗舰数据中心扩建计划
2026-03-10 11:36:30
中兴通讯2025年营收1339亿元,算力营收同比增150%,构筑AI端到端全栈竞争力
2026-03-06 21:37:00
定档 6 月 25 日,2026中国智算产业大会火热招商中~
2026-03-06 10:32:00
维谛技术(Vertiv):雅砻江畔,智算新篇|全国首个高海拔岩洞智算中心如何点亮绿色算力新纪元
2026-03-04 16:52:20
“不明物体撞击” AWS阿联酋数据中心受损起火
2026-03-03 09:50:56
算力租赁行业涨价潮持续 或于2027年缓解
2026-03-03 09:48:36
某银行巨资「爆改」老机房;智算大单惨遭「弃标」;某大厂110亿购AI服务器;某公司高价托管「液冷机柜」丨算力情报局Vol.05
2026-03-03 09:46:00
白宫:AI巨头有义务自行解决电力需求
2026-03-02 10:17:52
4.4亿元,兴业银行上海张江机房改造项目公开招标
2026-03-02 10:10:03