暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

腾讯云数据库TDSQL MySQL 版操作指南(InnoDB)-上

原创 腾讯云数据库 2024-03-29
1378

版本日期:2024.03(最新版本以腾讯云官网产品文档为准,本链接为2024年3月版)

版权声明

本文档著作权归腾讯云计算(北京)有限责任公司(以下简称“腾讯云”)单独所有,未经腾讯云事先书面许可,任何主体不得以任何方式或理由使用本文档,包括但不限于复制、修改、传播、公开、剽窃全部或部分本文档内容。

本文档及其所含内容均属腾讯云内部资料,并且仅供腾讯云指定的主体查看。如果您非经腾讯云授权而获得本文档的全部或部分内容,敬请予以删除,切勿以复制、披露、传播等任何方式使用本文档或其任何内容,亦请切勿依本文档或其任何内容而采取任何行动。

免责声明

本文档旨在向客户介绍本文档撰写时,腾讯云相关产品、服务的当时的整体概况,部分产品或服务在后续可能因技术调整或项目设计等任何原因,导致其服务内容、标准等有所调整。因此,本文档仅供参考,腾讯云不对其准确性、适用性或完整性等做任何保证。您所购买、使用的腾讯云产品、服务的种类、内容、服务标准等,应以您和腾讯云之间签署的合同约定为准,除非双方另有约定,否则,腾讯云对本文档内容不做任何明示或默示的承诺或保证。

产品概述

简介

TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分、Shared Nothing 架构的分布式数据库。TDSQL MySQL版 即业务获取的是完整的逻辑库表,而后端会将库表均匀的拆分到多个物理分片节点。 TDSQL MySQL版 默认部署主备架构,提供容灾、备份、恢复、监控、迁移等全套解决方案,适用于 TB 或 PB 级的海量数据库场景。

TDSQL MySQL版 提供不同的引擎供用户选择,两者均兼容 MySQL 标准协议:

  • InnoDB 版采用 InnoDB 作为数据存储引擎,是 MySQL 的默认存储引擎。
  • TDStore 版采用腾讯云自研的新敏态引擎 TDstore 作为数据存储引擎,该引擎可以有效解决客户业务发展过程中业务形态、业务量的不可预知性,适配金融敏态业务。

数据库内核及 SQL 引擎的新特性可参考 私有云说明,私有云版本后两位与公有云版本后两位相一致表示相同内核版本。

解决问题

单机数据库瓶颈

面对互联网类业务百万级以上的用户量,单机数据库由于硬件和软件的限制,数据库在数据存储容量、访问容量、容灾等方面都会随着业务的增长而到达瓶颈。

TDSQL MySQL版 目前单分片最大可支持6TB存储,如果性能或容量不足以支撑业务发展时,在控制台自动升级扩容。升级过程中,您无需关心分布式系统内的数据迁移,均衡和路由切换。升级完成后访问 IP 不变,仅在自动切换时存在秒级闪断,您仅需确保有重连机制即可。

应用层分片开发工作量大

应用层分片将业务逻辑和数据库逻辑高度耦合,给当前业务快速迭代带来极大的开发工作量。

基于 TDSQL MySQL版 透明自动拆分的方案,开发者只需要在第一次接入时修改代码,后续迭代无需过多关注数据库逻辑,可以极大减少开发工作量。

开源方案或 NoSQL 难题

选择开源或 NoSQL 产品也能够解决数据库瓶颈,这些产品免费或者费用相对较低,但可能有如下问题:

  • 产品 bug 修复取决于社区进度。
  • 您的团队是否有能持续维护该产品的人,且不会因为人事变动而影响项目。
  • 关联系统是否做好准备。
  • 您的业务重心是什么,投入资源来保障开源产品的资源管控和生命周期管理、分布式逻辑、高可用部署和切换、容灾备份、自助运维、疑难排查等是否是您的业务指标。

TDSQL MySQL版 支持 Web 控制台,提供完善的数据备份、容灾、一键升级等功能,完善的监控和报警体系,大部分故障都通过自动化程序处理恢复。

产品优势

超高性能

  • 单分片最大性能可达超24万 QPS,整个实例性能随着分片数量增加线性扩展。
  • 计算/存储资源均可独立对业务全透明地弹性扩缩容,单实例支持 EB 级海量存储。
  • 计算层每个节点均可读写,单实例轻松支撑千万级 QPS 流量。
  • 支持超高压缩比存储,最高可达20倍压缩率,尤其适合大批量写入、写多读少的业务场景。

专业可靠

  • 经过腾讯各类核心业务10余年大规模产品的验证,包括社交、电商、支付、音视频等。
  • 提供完善的数据备份、容灾、一键升级等功能。
  • 完善的监控和报警体系,大部分故障都通过自动化程序处理恢复。
  • 提供数据加密能力,支持 AES 算法和国密 SM4 算法,可满足静态数据加密的合规性要求。
  • 支持分布式数据库领域领先功能,如分布式多表 JOIN、小表广播、分布式事务、SQL 透传等。
  • 数据库实例可用性可达到99.95%;数据的可靠性可达到99.99999%。

简单易用

  • 除少量语法与原生 MySQL、MariaDB 不同外,使用起来如使用单机数据库,分片过程对业务透明且无需干预。
  • 兼容 MySQL 协议(支持 MySQL、MariaDB 等内核)。
  • 支持 Web 控制台,读写分离能力、专有运维管理指令等。

应用场景

TDSQL MySQL版 目前仅适用于 OLTP 场景的业务,例如,交易系统、前台系统;不适用于 ERP、BI 等存在大量 OLAP 业务的系统。

大型应用(超高并发实时交易场景)

电商、金融、O2O、社交应用、零售、SaaS 服务提供商,普遍存在用户基数大(百万级或以上)、营销活动频繁、核心交易系统数据库响应日益变慢的问题,制约业务发展。

TDSQL MySQL版 提供线性水平扩展能力,能够实时提升数据库处理能力,提高访问效率,峰值 QPS 达1500万+,轻松应对高并发的实时交易场景。微信支付、财付通、腾讯充值等都是使用的 TDSQL MySQL版 架构的数据库。

物联网数据(PB 级数据存储访问场景)

在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多、采样率高、数据规模大。通常存储一年的数据就可以达到 PB 级甚至 EB,而传统基于 x86 服务器架构和开源数据库的方案根本无法存储和使用如此大的数据量。

TDSQL MySQL版 提供的容量水平扩展能力,可以有效的帮助用户以低成本(相对于共享存储方案)存储海量数据。

文件索引(万亿行数据毫秒级存取)

一般来说,作为云服务平台,存在大量的图片、文档、视频数据,数据量都在亿级 - 万亿级,服务平台通常需要将这些文件的索引存入数据库,并在索引层面提供实时的新增、修改、读取、删除操作。

由于服务平台承载着其他客户的访问,服务质量和性能要求极高。传统数据库无法支撑如此规模的访问和使用,TDSQL MySQL版 超高性能和扩展能力并配合强同步能力,有效的保证平台服务质量和数据一致性。

高性价比商业数据库解决方案

大型企业、银行等行业为了支持大规模数据存储和高并发数据库访问,对小型机和高端存储依赖极强。而互联网企业通过低成本 x86 服务器和开源软件即可达到与商业数据库相同甚至更高的能力。

TDSQL MySQL版 适用于诸如国家级或省级业务系统汇聚、大型企业电商和渠道平台、银行的互联网业务和交易系统等场景。

基本原理

水平分表

概述

水平拆分方案是 TDSQL MySQL版 的基础原理,它的每个节点都参与计算和数据存储,且每个节点都仅计算和存储一部分数据。因此,无论业务的规模如何增长,我们仅需要在分布式集群中不断的添加设备,用新设备去应对增长的计算和存储需要即可。

通过如下视频,您可以了解水平拆分的过程与原理:

在线视频:https://cloud.tencent.com/edu/learning/quick-play/2570-44437?notip=1&source=gw.doc.media&withPoster=1

水平切分

水平切分(分表):是按照某种规则,将一个表的数据分散到多个物理独立的数据库服务器中,形成“独立”的数据库“分片”。多个分片共同组成一个逻辑完整的数据库实例。

  • 常规的单机数据库中,一张完整的表仅在一个物理存储设备上读写。
  • 分布式数据库中,根据在建表时设定的分表键,系统将根据不同分表键自动分布数据到不同的物理分片中,但逻辑上仍然是一张完整的表。
  • 在 TDSQL MySQL版 中,数据的切分通常就需要找到一个分表键(shardkey)以确定拆分维度,再采用某个字段求模(HASH)的方案进行分表,而计算 HASH 的某个字段就是 shardkey。 HASH 算法能够基本保证数据相对均匀地分散在不同的物理设备中。

写入数据( SQL 语句含有 shardkey )

  1. 业务写入一行数据。
  2. 网关对 shardkey 进行 hash,得出 shardkey 的 hash 值。
  3. 不同的 hash 值范围对应不同的分片(调度系统预先分片的算法决定)。
  4. 数据根据分片算法,将数据存入实际对应的分片中。

数据聚合

数据聚合:如果一个查询 SQL 语句的数据涉及到多个分表,此时 SQL 会被路由到多个分表执行,TDSQL MySQL版 会将各个分表返回的数据按照原始 SQL 语义进行合并,并将最终结果返回给用户。

执行 SELECT 语句时,建议您在 where 条件带上 shardKey 字段,否则会导致数据需要全表扫描然后网关才对执行结果进行聚合。全表扫描响应较慢,对性能影响很大。

读取数据(有明确 shardkey 值)

  1. 业务发送 select 请求中含有 shardkey 时,网关通过对 shardkey 进行 hash。
  2. 不同的 hash 值范围对应不同的分片。
  3. 数据根据分片算法,将数据从对应的分片中取出。

读取数据(无明确 shardkey 值)

  1. 业务发送 select 请求没有 shardkey 时,将请求发往所有分片。
  2. 各个分片查询自身内容,发回 Proxy 。
  3. Proxy 根据 SQL 规则,对数据进行聚合,再答复给网关。

读写分离

功能简介

当处理大数据量读请求的压力大、要求高时,可以通过读写分离功能将读的压力分布到各个从节点上。 TDSQL MySQL版 默认支持读写分离功能,架构中的每个从机都能支持只读能力,如果配置有多个从机,将由网关集群(TProxy)自动分配到低负载从机上,以支撑大型应用程序的读取流量。

基本原理

读写分离基本的原理是让主节点(Master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),让从节点(Slave)处理查询操作(SELECT)。

只读账号

若您的实例架构为一主一从,只读分离功能仅可用作低负载只读任务,请避免大事务等较高负载任务,影响从机备份任务及可用性。

只读账号是一类仅有读权限的账号,默认从数据库集群中的从机(或只读实例)中读取数据。 通过只读账号,对读请求自动发送到备机,并返回结果。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论