2019年公司搭建微服务平台,实现分布式部署,各服务性能及效率得到稳步提升,并已经趋于稳定。为了进一步提升服务性能,经过服务调研需要对Mysql数据服务进行高可用及高性能的升级。之前服务器部署采用服务器单独安装Mysql已经无法承担现有服务的突发事件,经过2周的调研,对阿里云、腾讯云、亚马逊的Mysql服务进行调研比对,最终选定腾讯云的TDSQL。
一、腾讯云TDSQL简介
腾讯云数据库(TDSQL-Tencent Distributed MySQL)是随着腾讯业务规模不断扩大而 发展起来的,其定位是基于互联网分布式架构的金融级数据库。从 2004 年开始,腾讯充值 等计费类业务快速发展,传统方案已经无法支撑日益增长的需求,通过多年摸索,最终选择 兼容 MySQL 协议的分布式架构。并根据业务需求推动数据库架构不断革新。截止到 2019 年,腾讯云数据库 TDSQL 经过 15 年的发展,已经覆盖公有云、专有云部署模式,为银行、 保险、证券,财付通、腾讯充值,阅文集团,区块链等 5000 多个金融类业务提供底层支撑。
优势:
1、数据安全:
TDSQL定位是基于互联网分布式架构的金融级数据库。在这个大数据时代,数据和数据库安全比以往任何时候都更加珍贵。公司产品也有很高的安全性要求。
2、数据一致性:
分布式架构中,数据的强一致尤为重要。如果出现数据丢失,就意味会给组织或用户带来直接的金钱方面的损失,甚至影响企业的商誉和信誉。多数开源不适用于共享存储架构,基于主从高可用架构难以做到既满足性能又保 障主库出问题时数据不丢失,无法满足业务高并发需求。
3、服务可用性:
高可用性和减少停机时间是数据库系统的目标,公司业务需要 24*7 无障碍 运行。 所以搭建一个数据库高可用环境已经成为很多企业迫切的需求。 确保企业中计算资源的持续可用是各个数据库管理员(DBA)的主要目标。
4、服务扩展性:
业务在采购之初很难准确预测未来业务增长的速度和总量,这就导致业务不得不采购比 自己实际需求更多的资源。
应用场景:
大型应用(超高并发实时交易场景)
电商、金融、O2O、社交应用、零售、SaaS 服务提供商,普遍存在用户基数大(百万级或以上)、营销活动频繁、核心交易系统数据库响应日益变慢的问题,制约业务发展。
物联网数据(PB 级数据存储访问场景)
在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多、采样率高、数据规模大。通常存储一年的数据就可以达到 PB 级甚至 EB,而传统基于 x86 服务器架构和开源数据库的方案根本无法存储和使用如此大的数据量。
文件索引(万亿行数据毫秒级存取)
作为云服务平台,存在大量的图片、文档、视频数据,数据量都在亿级 - 万亿级,服务平台通常需要将这些文件的索引存入数据库,并在索引层面提供实时的新增、修改、读取、删除操作。
二、TDSQL 解决方案服务架构
TDSQL 可以提供公有云、专有云两种部署方案,可以提供关系型数据库实例、分布式数据库实例、分析性数据库实例
同时 TDSQL 具备虚拟化多租户、强同步复制、线程池、热点更新、内核优化等能 力,能够为用户提供事前、事中、事后的全维度安全方案,获得了多项国际和国家认证。
TDSQL集群架构具有较高的灵活性,简化了各个 节点之间的通信机制,也简化了对于硬件的需求。这不仅意味着 TDSQL 的关系型实例、分布式实例、分析性实例可以混合部署在同一集群中,也意味着即使是简单的 x86 服务器,也可以搭建出类似于小型机、共享存储等一样稳定可靠的数据库。
分片(Sharding):
是由数据库节点组(SET)和 SQL Engine(SQL Engine)和支撑系 统组成一主多从数据库,也是水平拆分后承载数据的基本单元;
节点组(SET):
由数据库节点(DataNode)组成的,通常包括一个主、从节点的集合。
SQL 引擎层(SQL Engine):
账号鉴权、管理连接、SQL 解析、分配路由的 SQL Engine 模块;SQL Engine 可以混合部署在数据库节点(DataNode)之上,也可以独立部署在一 台物理机中。SQL Engine 也是采用分布式架构设计,提供并行负载和高可用容灾能力;
InnoDB引擎
产品功能
高度兼容 MySQL 关系型实例:
即可以理解为 MySQL/MariaDB 主从高可用架构的数据库,因此其完全兼 容 MySQL/MariaDB。 分布式实例:我们的设计理念是让用户像使用普通 MySQL 一样使用分布式数据库。因 此 TDSQL 设计淡化水平拆分的概念,无需用户手动去配置分表逻辑,无需用户额外去部署 管理中间件,只需要在建表是指定分表关键字即可。分布式实例也高端兼容 MySQL,您可 以用连接 MySQL 的方式去连接 TDSQL 的分布式实例,可以使用熟悉的对象映射框架使用 TDSQL 的分布式实例。
强同步复制(MAR)
由于数据库中记录了数据,想要通过高可用架构实现切换,数据必须是完全一致且同步 的,所以数据同步技术是数据库高可用方案的基础,通常数据同步的流程如下图 腾讯云分布式数据库解决方案 版权所有:腾讯云计算(北京)有限责任公司 第14页 共64页 当前,开源 MySQL 数据库数据复制包括异步复制、半同步复制两种。这两种复制技术 的主要问题是,节点故障时,有可能导致数据丢失或错乱。而且,这类复制技术以串行复制 为主,性能相对比较低。而腾讯自主研发了的基于 MySQL 协议的并行多线程强同步复制方 案(Multi-thread Asynchronous Replication,MAR),在应用发起请求时,只有当从 节点(Slave)节点返回成功信息后,主节点(Master)节点才向应用应答请求成功(如下流程 图);这样就可以确保主从节点数据完全一致。
三、TDSQL平台系统应用
赤兔运营平台(chitu)& 云数据库管理系统:
赤兔运营平台基于 TDSQL 定制开发的一套综合的业务运营和管理平台,将 数据库的管理特点,将网络管理、系统管理、监控服务有机整合在一起。
云的运维的呈现两极化趋势,一方面是高星级业务的精细化运维,一方面是大量 的普通数据库运维需求。基于云数据库运维层面差异化、数量多、变化快等特点,
TDSQL 提供了两套平台:赤兔运营平台&云数据库管理系统;以应对不同场景不同客户的需求。
赤兔运营平台:
从管理员视角,提供 TDSQL 的全部运维功能,可管理 TDSQL 集群的物 理资源、调度决策系统、备份与恢复系统、可用区管理、实例管理、智能性能分析与监控告 警、主要工具等,主要用于腾讯内部或企业 IT 运维团队使用。
云数据库管理系统:
从租户视角,提供 TDSQL 实例的运维功能,可管理 TDSQL 数据库 实例,包括实例申请与退还、系统监控与告警、备份与恢复、性能优化等,主要用于云的客 户或业务团队使用。 赤兔运营平台&云数据库管理系统 两个运维平台配合使用,可有效覆盖绝大部分运维需 求,极大的释放 DBA 的常规工作,让 DBA 有精力投入到优化业务等工作中。由于使用对象 腾讯云分布式数据库解决方案 版权所有:腾讯云计算(北京)有限责任公司 第27页 共64页 和设计差异的差异,在不同场景下,管理平台选件会有所不同,如下表格:
智能性能分析(扁鹊系统):
是 TDSQL 提供包括数据采集,自动处理,性能检测、SQL 性能检测、业务诊断等多种智能工具的集合,并根据分析结果提供智能优化建议。
例如:
1、性能检测与健康评估:数据库定期采集关键的性能指标并上报,当数据库出现波动时往往伴随着 一些监控指标的变动,虽然可以通过监控曲线得出这一结论,但这种排查比较“机械”,当 DBA 管理数据库实例较多时,很难全部照顾到。扁鹊系统将腾讯多年的运营经验,诊断过程通过规则 配置的方式沉淀在系统中,并利用深度学习组件不断强化对规则修订。扁鹊系统应用这些规则, 结合监控数据,将数据库一段时间内的状态信息进行分析,形成检测报告告知用户。并对其中问 题可能的原因和解决方案反馈出来。通过检测报告中的问题,根据业内通用的打分方式对数据库 进行打分,方便您快速的解一段时间内 DB 的健康情况。
2、实时检测:业务常常会遇到 SQL 执行被卡住导致业务频繁超时的问题,通常的原因是慢查询较 多,或长时间有锁等。扁鹊系统提供了实时检测工具,帮助用户快速定位当前的数据库性能问题。 3、慢查询分析:慢查询常常会引起 DB 响应慢,CPU 消耗过高等多种问题,而引起慢查询的原因常 常是因为索引缺失或索引设计不合理导致的,这也常常需要 DBA 手动分析 SQL,结合 SQL 涉及 的表结构找出缺失的索引反馈给用户。扁鹊系统可自动分析并合并同类慢查询,并通过可视化方 腾讯云分布式数据库解决方案 版权所有:腾讯云计算(北京)有限责任公司 第29页 共64页 式展示出来,配合 SQL 优化功能,可有效协助 DBA 优化业务。
4、 SQL 优化:同一条 SQL 语句,不同的写法,是否有索引等,性能可能不一样;扁鹊系统中提供 的智能 SQL 优化工具,可以帮助您写出更好的 SQL 或针对性地优化。 说明: 因篇幅限制,本文不在一一列举。我们将扁鹊系统与赤兔运营平台进行深度集 成,因此您在使用赤兔的过程中,可以无缝使用扁鹊系统。公有云云数据库管理系统正在逐步集成中。