TDSQL学习(TDSQL MySQL版)

TDSQLMySQL版是腾讯云上的分布式数据库,支持自动水平拆分,采用SharedNothing架构,提供主备架构的容灾解决方案。它支持InnoDB和TDStore引擎,后者适合敏态业务。数据库通过水平分表和切分实现数据分布,确保读写分离和弹性扩展。MAR强同步复制保证数据强一致性。系统支持在线扩容,对业务透明。同时,其读写分离功能缓解读压力,提高性能。
摘要由CSDN通过智能技术生成

一、概述

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

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

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

二、基本原理

水平分表:该方案是 TDSQL MySQL版 的基础原理,它的每个节点都参与计算和数据存储,且每个节点都仅计算和存储一部分数据。

  •  在单实例模式下,一张库表分布在一个mysql实例上;
  •  在分布模式下,一张表根据分片的数量分布在不同的mysql节点上;
  •  不同的分片负责不同范围的号段,网关根据sql的shardkey值发往对应的分片;
  •  最初只有一个分片,通过不断拆分成为多个分片。

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

  •  常规的单机数据库中,一张完整的表仅在一个物理存储设备上读写;
  •  分布式数据库中,根据在建表时设定的分表键,系统将根据不同分表键自动分布数据到不同   的物理分片中,但逻辑上仍然是一张完整的表;
  •  在 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)。

 弹性扩展

        TDSQL MySQL版 支持在线实时扩容,扩容方式分为新增分片和现有分片扩容两种方式,整个扩容过程对业务完全透明,无需业务停机。扩容时仅部分分片存在秒级的只读或中断,整个集群不会受影响。

新增分片扩容:

  1. 在 TDSQL MySQL版控制台 对需要扩容的 A 节点进行扩容操作。
  2. 根据新加 G 节点配置,将 A 节点部分数据搬迁(从备机)到 G 节点。
  3. 数据完全同步后,A、G 节点校验数据库,存在一至几十秒的只读,但整个服务不会停止。
  4. 调度通知 proxy 切换路由。

 

 现有分片扩容:

  1. 按需要升级的配置分配一个新的物理分片(以下简称新分片)。
  2. 将需要升级的物理分片(以下简称老分片)的数据、配置等同步数据到新分片中。
  3. 同步数据完成后,在腾讯云网关做路由切换,切换到新分片继续使用。

 

 强同步

        MAR 强同步复制方案是腾讯自主研发的基于 MySQL 协议的并行多线程强同步复制方案,只有当备机数据完全同步(日志)后,才由主机给予应用事务应答,保障数据正确安全。 

在应用层发起请求时,只有当从节点(Slave)返回信息成功后,主节点(Master)才向应用层应答请求成功,以确保主从节点数据完全一致。
MAR 强同步方案在性能上优于其他主流同步方案,具体数据详情可参见 强同步性能对比数据。主要特点如下:

  • 一致性的同步复制,保证节点间数据强一致性。
  • 对业务层面完全透明,业务层面无需做读写分离或同步强化工作。
  • 将串行同步线程异步化,引入线程池能力,大幅度提高性能。
  • 支持集群架构。
  • 支持自动成员控制,故障节点自动从集群中移除。
  • 支持自动节点加入,无需人工干预。
  • 每个节点都包含完整的数据副本,可以随时切换。
  • 无需共享存储设备。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值