欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

5月23-24日,以“焕启”为主题的腾讯“云+未来”峰会在广州召开,广东省各级政府机构领导、海内外业内学术专家、行业大咖及技术大牛等在现场共议云计算与数字化产业创新发展。

腾讯MySQL内核研发专家张青林在腾讯“云+未来”峰会的「开发者专场」做了主题为“TXSQL:云计算时代数据库核弹头”的技术内容分享,本次分享从五个方面介绍TXSQL:

腾讯云和TXSQL的概念

腾讯云作为国内云计算领先公司,在全球建立了500多个数据中心,供数于万计的开发者使用。

CDB产品是腾讯云提供的TXSQL产品,CDB产品提供了一整套的解决方案,包括用户上云,数据迁移、备份、恢复、升级等操作,相比于传统用户来构建MySQL服务,减少了投入的同时也方便使用。

腾讯云的CDB服务渗透到了各行各业,包括银行、证券、物流,还有传统企业等都有腾讯云的客户,用户购买 CDB 后,会分配相应的主机、端口、用户名、密码等信息,用户通过这些信息可以直接联接到后台的数据库。

CDB服务目前分为本地盘和网盘,TXSQL是基础架构部数据库内核团队独立维护的MySQL 分支,对外通过CDB服务提供给客户。可以看到TXSQL是内核,也是底层提供数据服务的位置。

我们为何会创造 TXSQL

我们来详细看看构建TXSQL的必要性:

从2016到2017年,存储规模达到了4倍以上,并且随着云计算市场的不断成熟,行业覆盖率也得到了前所未有的发展,整个实例级别已经达到了10万+。

当用户自己构建数据库服务的时候,跑在自己的服务器上,一年可能只会遇到一两个问题,但是如果有数十万个服务器在同时运行,那么每天遇到问题的概率是很大的,所以我们遇到了三个挑战:

第一,客户使用了CDB产品,他会把数据库的请求返回交给上层应用,如果数据库出现问题,可用性基本上得不到保障,所以随着规模的不断增长,我们必须能够快速定位和解决客户遇到的问题。

第二,来自业务的需求,随着行业覆盖率的不断扩展,比如金融或者对数据要求比较高的行业,他们就会对数据安全等功能有多元化的需求,所以需要具备满足客户需求的开发能力。

第三,关于性能,我们知道电商在大促或者游戏有活动的时候,数据库所受到的压力很大,这时候为了提升单机的性能,让用户花最少的钱买最好的服务。

综上所述,面临着三大挑战,一个是稳定性,一个是新的业务需求,还有一个是性能的提升。

基于此,腾讯云需要有一个自己的内核团队来快速定位客户问题,来帮助客户解决问题,并且最大速度的提升单机性能。

我们如何设计 TXSQL

B3M是我们的代码设计模型,可以让客户操作的时候更方便,更好的解决问题,也可以帮助客户实现一些新的需求。

用户可能会问, MySQL作为一个基础软件,有几百万代码,门槛比较高,怎么保持修改后的MySQL版本的稳定性呢?


我们不是随意改MySQL,我们改的每一处地方都要经过严格的测试。

首先,我们会进行需求分析,需求分析主要来源于几个方面,一个是数据库在运行过程中出现的问题,比如官方的BUG,另外是用户需求相关的东西,帮助他们更好的使用数据库,再就是做性能调优,用户在使用MySQL过程中,我们也逐渐提升性能和竞争力。

经过需求分析之后会做设计,然后再进行代码编写的工作,编写之后我们会严格把控代码质量,每一个步骤都会经过严格测试,比如代码覆盖率测试和单元测试,我们基本每两到三个月会发布一个数据库内核版本,每一个版本都要跑稳定测试和性能测试,以及崩溃恢复测试,从而保证我们的代码不会引入新的BUG。

在版本发布的时候,首先进行个别实例的发布,然后对新的TXSQL版本的实例进行进行秒级监控,没有问题再进行小集群的发布,最后再进行全网发布,通过这种方式我们保证了MySQL版本的稳定性以及可靠性。

用户在使用 TXSQL 内核版本的时候需要注意哪些问题

对于用户来说,所使用CBD内核提供了哪些服务?

因为我们对MySQL的改动,是在MySQL的基础上进行二次开发的,一种是性能调优,一种是线上问题的解决,还有功能开发,针对于新的业务需求来实现。

我们会通过在压测过程中比较他们资源竞争的情况,比如说内存资源或锁资源,下图中的前三个是我们对redo log所做的性能调优,第一个是redo log,通过减少sync 盘的次数来提升性能,第二部分是通过多缓冲buffer,即Redo Log 在Sync的同时不影响其它事务日志的写入,第三个则可以保证事务在向系统缓冲区写Redo 日志时互不影响,提升并发性。Select offset limit 操作则是将计算下推到引擎层,降低 CPU资源消耗的同时,提升性能。

而在功能方面,我们实现了官方版本所没有的功能,比如加密、审计、线程池,并行复制。首先是审计功能,官方的版本是没有审计这个功能的,只有企业版才有,我们结合自己的实际情况,为了保证用户的性能,我们做了一个audit的插件,从而保证性能的同时实现了用户所需要的功能。

第三个是thread handling,我们在测试压力测试的时候,随着并发的加大,性能会首先提升,然后下降,原因则是系统内部各种资源的竟争比较严重,TXSQL 通过把 Thread Pool 引入来解决这个问题,并且解决了以下几个问题:

解决了Threadpool 情况下全局读锁所造成的死锁问题

解决了 Dump 线程对于Thread Pool 的影响

添加新的 Information Schema 表来观察ThreadPool内部的运行情况

当主库压力不断变大的时候,我们备库的消耗数赶不上主库生产的时候,从5.1,5.5, 5.6,5.7,这个问题始终没有得到很好的解决,5.6的时候虽然有一个并行算法,但是并不能完全解决延迟问题,我们引入了自己的并行,从而很好解决了这个问题。当你主库延迟的时候,主库挂了,备库没有消费完累积的 RelayLog之前,服务器是不能够提供服务的,如果接受服务的话会有双写的问题。

无论是我们在上云过程中还是服务用户过程中,都遇到了各种各样的困难。

比如我们在帮一个游戏公司上云过程中发现了他们的性能问题,我们对系统进行分析的时候对它进行了优化,调优了各种参数并升级内核,最终使用户的性能从7万上升到17万。

第二案例比较突出的是游戏客户,他们的实例遇到了内存泄露的问题,占用内存不断上升,造成了机器的 OOM,这个问题我们花了将近一周的时间找到问题RootCause,然后用一周的时间进行灰度发布和测试,我们Fix Bug的速度一般是两周,而官方受限于版本发布,一般都需要两到三个月才能解决。

TXSQL只是作为内核版本来帮助用户进行计算。我们的稳定性有几个来保证,一个是全链路监控,一个是机器层面操作系统方面的监控,还有MySQL的秒级监控,以及人工的在线帮助。

TXSQL未来的发展方向

在保持稳定性,性能调优和功能实现的基础上,未来我们会以这几个方向。

批量计算:对于可以让 Engine做的事情,我们可以将计算下推到Engine层来做,减少消耗。

执行计划缓存也是我们在不久将来要做的事情,之前做过一个测试,最简单的基于主键的查询就会有10%的性能提升。

为了解决存储的问题,我们将RocksDB 引入到了TXSQL中,即 TXRocks,也会在近期推出这个产品,在支持事务操作的同时,可以极大的降低用户成本。

更多相关资料,请点击下方链接获取。

TXSQL云计算时代数据库核弹头.pdf

问答
云数据库MySQL连接方式
相关阅读
深度揭秘腾讯云新一代企业级HTAP数据库TBase核心概念
10款常见MySQL高可用方案选型解读
利用Zipkin追踪Mysql数据库调用链

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1136278?fromSource=waitui

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

TXSQL:云计算时代数据库核弹头——云+未来峰会开发者专场回顾的更多相关文章

  1. 新时代运维重器 Tencent Hub 最佳实践——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:邹辉 腾讯云 PaaS 产品总监 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来" ...

  2. 一站式机器学习平台TI-ONE是什么?——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以“焕启”为主题的腾讯“云+未来”峰会在广州召开,广东省各级政府机构领导.海内外业内学术专家.行业大咖及技术大牛等在 ...

  3. 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...

  4. 万物智联,腾讯云 IoT 边缘计算揭秘——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:现在是万物互联的时代,智能穿戴设备,智能家居,无人商业,改变了我们的生活方式.预计到2021年,全球物联网设数将达到150亿,超过手机 ...

  5. 跨时代的分布式数据库 – 阿里云DRDS详解(转)

    原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...

  6. 云计算时代,传统企业 IT 从业者如何做好转型?

    本文来源于国外社区 DZone,作者 Dennis O'Reilly 撰写过多篇关于云计算.混合云等内容的文章,本文内容围绕云计算时代,企业纷纷上云,传统 IT 从业者如何做好转型. 本文由“数梦工场 ...

  7. 高手问答精选:Go 语言 —— 云计算时代的 C 语言(类似于一个FAQ)

    Go 语言被称为云计算时代的 C 语言,它在软件开发效率和运行效率之间做出了绝佳的权衡.这使得它既适应于互联网应用的极速开发,又能在高并发.高性能的开发场景中如鱼得水.正因如此,许多互联网公司,尤其是 ...

  8. 边缘计算 VS 云计算,谁才是未来?

    计算是互联网中一个永恒的话题,设备的所有运行都可以看成是 0 和 1 的运算.在计算中近些年有两个越来越响亮的技术:云计算和边缘计算.现如今是云计算方兴未艾,边缘计算已经有了燎原之势,本文将对这两种技 ...

  9. 限时免费 | 12月6日,广州保利洲际酒店,ABC Summit 2018云智峰会来了!

    随着科技的迅猛发展,人工智能技术也逐渐取得了各个突破.自20世纪70年代以来,作为计算机学科的一个分支,人工智能就被列为世界三大尖端技术之一.近年来,阿尔法狗战胜世界第一柯洁,使人工智能再度迎来新的热 ...

随机推荐

  1. 数据库架构设计的三种模式:share nothing , share everythong , share disk

    数据库构架设计中主要有Shared Everthting.Shared Nothing.和Shared Disk: Shared Everthting:一般是针对单个主机,完全透明共享CPU/MEMO ...

  2. 原创:各种normalize函数实现的性能和精度大比拼

    ///////////////////////////////////////////////////////////////////////// // // Performance benchmar ...

  3. poj 3468 A Simple Problem with Integers 线段树区间加,区间查询和(模板)

    A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://poj.org/problem?i ...

  4. RabbitMq初探——Hello World

    HelloWorld 前言 这里我们弱化broker内部构造.将整体分为三部分. P:producer.生产者. C:Consumer.消费者. queue:队列. 后面的代码都依赖于 the php ...

  5. Python扫描邮件主题,并打印

    import imaplib import email from email.header import decode_header import datetime if __name__ == '_ ...

  6. LAYABOX 开发遇到的问题记录

    1.  如若在MAC下用LAYA开发H5游戏, 调试的时候会发现像素点过小(mac 5k屏),直接用下面按比例填充就好了 //保持原始高宽比的情况下,将舞台铺满屏幕,超出比例的部分会有黑边       ...

  7. 该用li还是得用

    如:这样子少一层是很好,但为了美观,后面都补上a,但鼠标经过也会有背景色,所以还是得多一层li 解决后:

  8. winform datagridview记录的颜色设定

    DataGridViewCellStyle属性进行如下图的设置,预览可直接看到效果

  9. ubuntu14.04搭建ftp服务器

    一,搭建匿名FTP服务器 实现ftp匿名登录,上传,下载,重命名文件. 1. 首先安装vsftpd:sudo apt-get install vsftpd,装好之后,默认的ftp根目录是在 /srv/ ...

  10. loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移

    $ \color{#0066ff}{ 题目描述 }$ 给出一个长度为 \(n\) 宽度为 \(1\) ,高度无限的水箱,有 \(n-1\) 个挡板将其分为 \(n\) 个 \(1 - 1\) 的小格, ...