MySQL之父好评,开源社区点赞的背后,这帮人做了哪些事?
Posted 腾讯云数据库
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL之父好评,开源社区点赞的背后,这帮人做了哪些事?相关的知识,希望对你有一定的参考价值。
在云计算越来越火的今天,我们不难预测,云上的mysql在未来的数据库市场也将是主流。
而实际上,在这个海量数据大爆发的时代,开源版本的MySQL很难满足很多企业的业务需求,在某些场景下,无论是性能、安全还是稳定性,都面临着各种各样的问题,产品能力不足的云数据库MySQL也很难在竞争激烈的市场找到属于自己的舞台。
上周的一篇文章数据君分享了近期的故事,这一期想和大家谈谈,在应用场景下,这帮人又做了哪些事?
回顾腾讯云数据库MySQL的2020,我们服务了包括
拼多多、B站、蘑菇街、小红书、微盟、富途、云集、畅游的
众多外部大客户
,以及腾讯内部大多数的业务,
保障了不同业务在购物狂欢节、节假日、意外事件等不同场景下流量高峰期的稳定运行,
有时候业务会厂商改革,但自愿走出舒适圈的,腾讯云数据库算一个,很显然,目前来看腾讯云数据库MySQL有着不错的成绩,但为了打造一个产品力全方位更强的产品,腾讯云数据库不断投入研发,于是,
一个更加出色的企业级关系型数据库MySQL,出现了。
今天,我们将围绕着腾讯云数据库MySQL的几个企业级特性核心能力进行解读。
传统的 Oracle MySQL 社区版内核以及企业版内核已不能满足 腾讯云数据库MySQL 的快速发展,有很多的业务或运维问题在官方都得不到有效解决,如电商秒杀场景的性能问题,删除大表所导致的性能抖动问题、游戏业务加减字段所导致的业务停服问题等。为了解决云上业务所面临的问题,降低用户操作复杂性,提升运维效率,我们定义并实现了云数据库内核——TXSQL。TXSQL有以下的优势:
TXSQL 对 SQL 语句的执行流程进行了全链路的优化,在查询优化器、算子下推、主备一致性、存储引擎(并发访问控制、日志系统、锁系统、回滚段、crash recovery)等进行了一系列的优化。测试表明,在高并发场景下,腾讯云数据库MYSQL 的读写性能是官方性能的 150% 以上,大内存实例的启动时间是官方版本的 1/5 ;
在服务业务的过程中,解决了很多业务的性能问题,如电商秒杀场景的性能问题、游戏对表变更时的停服问题、高并发压力下 crash recovery 速度慢的问题、主备延迟问题等,同时,我们将20+的Patch优化也贡献给了官方 & MariaDB,并得到了官方的认可。
完善的企业级特数据库能力。如金融行业要求的数据审计、加密、数据强一致,台富云所要求的自定义密钥以及密钥管理服务、游戏行业所要求的高并发、电商行业所要求的极限性能等
多样化的存储引擎。TXSQL 为了满足业务的多样化需求,不仅满足于传统的事物处理能力,还做了以下两个存储引擎:
•TxRocks是TXSQL团队基于RocksDB的事务型存储引擎,得益于RocksDB LSM Tree存储结构,既减少了InnoDB页面半满和碎片浪费,又可以使用紧凑格式存储,因此TxRocks在保持与InnoDB接近的性能的前提下,存储空间相比InnoDB可以节省一半甚至更多,非常适合对事务读写性能有要求,且数据存储量大的业务。。此功能已经微信红包上使用两年有余,相较InnoDB引擎,只使用了之前 1/5 的机器,极大的节约了成本
•CSTORE是TXSQL内核团队面向OLAP场景研发的列存引擎,通过CSTORE,用户可以完成大型数据的查询与分析,可以适用于历史存档数据、日志数据、大数据、更新不频繁的OLTP数据和数据仓库和分析处理,数据处理量达到PB级别。在性能方面,通过高压缩比、快速加载、针对性的查询优化这些技术实现,向用户提供高效的服务,从而达到单节点可支持百亿行记录的秒级查询。TXSQL的列存储可以达到 10:1 的压缩比,通过减少磁盘空间的使用,实现大批量数据的秒级写入和读取。在已有MySQL查询优化的基础上,利用多种形式的稀疏索引过滤数据实现高速的数据过滤于选择。并利用多列并行处理的方式,高速完成数据的加载与处理。
可用性腾讯云数据库MYSQL的生命线,当前可用性达到了99.99%以上。故障切换每月达1300+,平均切换时间33秒,50%以上的切换在20秒内完成。但随着规模的快速增长,我们发现原来单一的读写探测机制已经无法满足用户对可用性更高的要求。实例不可用不仅表现为探测不通,也可能是请求缓慢的积压、整机硬件的异常、实例快速的反复重启……这些异常,原有的探测机制并不能很好的发现。为此在故障发现方面,我们做了大量的优化。核心目标是尽可能快的发现确定性的、具备共性的故障:
•实时监听TXSQL错误日志。TXSQL内部新增了多个监控指标,例如监听IO和锁等待延迟,在实例出现请求堆积但还未崩溃前实现切换
•实时监听系统日志,例如端口频繁up/down、softlookup
•检测整机磁盘异常,例如坏块、hang盘、慢盘、只读
•实例快速反复Crash。探测无法覆盖,但实际业务影响很大
•高负载场景。高负载场景下,复制线程可能分配不到CPU,导致主备无法同步,可能造成数据丢失
通过上述措施,我们已经覆盖了已知的97.71%极端故障场景,为此我们还在进一步优化。但故障切换毕竟是已经影响了使用,为此我们结合了公司网管的相关告警策略,当机器有故障或预警时,我们提前将隐患机器隔离并触发切换。
同时在部署模式上支持实例内节点跨机架跨交换机部署;跨可用区多节点部署;跨城灾备实例;置放群组功能,不同的业务可以指定不同群组,群组之间做跨机器和交换机的部署。
在腾讯云数据库MYSQL完成了对等节点的架构升级后,单实例内的节点可以任意扩展、独立指定可用区部署。经典的部署方式是,1主1备同可用区,另1备跨可用区。当主机故障时,可以实现快速切换,当主可用区故障时,可以实现分钟级自动切换至跨可用区节点。因为公有云VPC网络控制面使用的数据库是腾讯云数据库MYSQL,极端情况下腾讯云数据库MYSQL跨可用区切换会出现相互依赖的场景。为了解决网络侧的跨可用区自动切换,腾讯云数据库MYSQL也配合业务一起做全链路的跨可用区容灾方案。
跨可用区实例间如何避免双写,是保证数据一致性的关键问题。为此,TXSQL内核全版本实现了work mode工作模式和租约机制。当可用区隔离时,单可用区内的机器可能是连通的,可用区间网络不通。通过同机部署的ha agent保持跟TXSQL有T1的租约,ha agent跟ZK有T2的租约,保证2T1 < T2。当到达T1未续租时,TXSQL处于offline mode,不接受用户请求,当到达T2时刻,可以确认此时原master一定不可写,安全进行故障切换。
高性能备份恢复能力。备份速度700MB/s,回档速度(克隆实例,包含了增量数据同步)540MB/s。以1TB的数据为例,备份约25分钟,回档约33分钟。
同时,腾讯云数据库MySQL具备了多种企业级备份恢复能力,包括:
•在线热备,支持Backup Lock和Binlog Lock,仅在备份完成瞬间阻塞写入,备份期间对用户几乎无影响。
•无锁备份,采用Binlog幂等回放的机制,在InnoDB表有唯一键场景下,备份不加锁。
•流式备份,“zero storage”。备份数据流式上传,无需本地中转。
•压缩备份,采用quicklz压缩,压缩比3:1。
•排除部分库表备份。排除指定库表备份,例如mysql库等。
•多级资源控制,备份带宽跨AZ负载均衡,单机流控和资源强隔离。
数据安全重于泰山,围绕数据安全,腾讯云数据库MySQL联合数据库智能管家DBbrain孵化出了一系列数据库安全功能,例如:数据库审计、透明数据加密、敏感数据发现以及数据脱敏等,逐步形成了一套数据库安全整体解决方案。
数据库审计是腾讯云自主研发的一款专业、高效、全面、实时监控数据库安全的审计产品,能够实时记录腾讯云数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,针对数据库 SQL 注入、异常操作等数据库风险行为进行记录,为用户是云数据库提供完善的安全诊断和管理功能,提高数据资产安全。并且在极限压测场景下,性能损失仅在 3% 以内。
腾讯云数据库 MySQL 提供透明数据加密(Transparent Data Encryption,TDE)功能,透明加密指数据的加解密操作对用户透明,支持对数据文件进行实时 I/O 加密和解密,在数据写入磁盘前进行加密,从磁盘读入内存时进行解密。即使备份数据被泄露,在没有密钥的情况下,依然保证数据不被泄露。可满足静态数据加密的合规性要求。
DBbrain为腾讯云数据库MySQL专属打造的敏感数据发现功能,通过识别规则自动发现实例敏感数据,并对所发现的敏感数据实现自动化分类分级保护。
•敏感数据发现支持多达20种内置的敏感数据识别规则和自定义规则,在满足合规性的基础上,能够对数据集的所有字段进行敏感属性识别,确保隐藏在大段文本中的敏感信息能够得到妥善处理。
•敏感数据发现依托内置规则或用户自定义规则,对发现的敏感数据进行分类分级,并通过图形报表与文本列表将全局各类别、各级别的敏感信息进行可视化展示。
DBbrain为腾讯云数据库MySQL专属打造的数据脱敏功能,其内置多种高级脱敏算法,可智能化执行与管理脱敏任务,针对不同业务场景实现数据脱敏,进而达到企业核心数据保密的效果。数据脱敏在确保安全性的同时,处理过的数据依然保持原始数据的分布特征、数据格式,使统计分析、测试、研发、培训等用途不受影响。
•在合规性方面,数据脱敏能够通过匿名化技术,确保脱敏后数据无法被还原。保障企业个人信息使用时严格遵守相关法律法规,满足企业客户合规性需求。
•在系统性能方面,数据脱敏在任务开始时拉取的是用户最新的实时备份数据,不需要源数据库停服,更不会给数据库性能带来额外的影响和开销,在用户无感知的情况下即可动态在线实时完成脱敏任务。
扩展性包括了两部分,单节点读写能力扩展和多节点读扩展。TXSQL内核提供了thread-pool功能。支持10万连接,以及在减少线程运行时切换消耗和创建销毁的消耗的同时,避免高并发场景下,多线程争抢系统资源造成的性能急剧下降,从而显著提升高并发下的系统性能。
多节点读扩展,节点间根据wrr算法做负载均衡和容灾。当只读节点不可用,或者到达设置的主从延迟阈值,将在 30秒 内完成容灾剔除。为了避免全部节点被剔除,可以设置只读最少保留数,防止实例高负载引起的雪崩。当只读节点恢复可用,并且延迟低于阈值,会自动触发加回策略,重新负载均衡。
添加只读节点后,会出现两个地址,需要业务层进行读写分离。为此,腾讯云数据库MYSQL即将上线数据库代理服务,业务只需要一个读写地址,自动做读写分离和读负载均衡。
数据库智能管家DBbrain是腾讯云推出的一款为用户提供数据库性能优化、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
•7 * 24小时智能运维守护数据库,无需人力值守。
•一键式运维管理操作和性能优化,大幅减少了运维的成本。
•故障主动定位和智能优化,大幅降低了数据库运维管理的门槛。
- End -
更多精彩
以上是关于MySQL之父好评,开源社区点赞的背后,这帮人做了哪些事?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL之父造访腾讯云 为腾讯云数据库开源点赞
JQuery实现点击关注和取消功能
不得不点赞的3款国内React Native应用
6k+点赞的SpringBoot+Netty分布式即时通讯系统!爱了爱了!
6k+点赞的SpringBoot+Netty分布式即时通讯系统!爱了爱了!
Redis之父退出开源项目维护:人生苦短不想上班