TDSQL(MySQL)产品及架构介绍

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


TDSQL(MySQL)产品及架构介绍

一、产品介绍和使用场景

 1、核心特性

 2、兼容性

二、架构分析及模块介绍

 1、TDSQL功能模块概述

 2、TDSQL产品架构

 3、TDSQL系统架构

 4、TDSQL组件介绍

 5、核心模块

三、主要功能与特性

 1、TDSQL主备数据复制方式

 2、TDSQL强同步复制技术

 3、TDSQL数据强一致性

 4、TDSQL容灾切换

    1> 切换过程

四、分布式特性

 1、TDSQL数据库实例类型

 2、TDSQL数据库实例类型

 3、TDSQL数据库实例类型

 4、TDSQL集中式实例

 5、TDSQL分布式实例

 5、TDSQL表分类

 6、TDSQL水平扩容

 7、TDSQL分布式事物

一、产品介绍和使用场景

  • 腾讯分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯研发的一款兼容MySQL协议的国产分布式数据库
  • 它适用于超大并发、超高性能、超大容量的OLTP类场景
  • 采用主从高可用架构,提供弹性扩展,备份,恢复,监控等全套解决方案,有效解决业务快速发展时数据库面临的各种挑战

1、核心特性

TDSQL(MySQL)产品及架构介绍_SQL

2、兼容性

TDSQL(MySQL)产品及架构介绍_SQL_02

二、架构分析及模块介绍

1、TDSQL功能模块概述

TDSQL(MySQL)产品及架构介绍_数据库_03

2、TDSQL产品架构

TDSQL(MySQL)产品及架构介绍_数据库_04

3、TDSQL系统架构

TDSQL(MySQL)产品及架构介绍_SQL_05

4、TDSQL组件介绍

TDSQL(MySQL)产品及架构介绍_SQL_06

5、核心模块

  • 计算节点(SQL引擎)
  • SQL引擎也会被叫做Proxy或网关,在TDSQL中位于接入层的位置,属于cpu密集型服务
  • SQL引擎承接应用数据库请求,负责路由转发,SQL分析,读写分离等
  • SQL引擎没有主备之分,本身无状态,一般采用多节点部署分担请求压力

TDSQL(MySQL)产品及架构介绍_数据库_07

  • 数据节点(Set)
  • 数据节点上部署MySQL数据库服务
  • Agent属于旁路模块,主要承担MySQL实例的状态监控
  • MySQL实例通过Agent和TDSQL集群建立联系
  • SET包含一主N备N+1个书库节点,SET内节点可以提供读写,备节点只读

TDSQL(MySQL)产品及架构介绍_数据库_08

三、主要功能与特性

1、TDSQL主备数据复制方式

  • 强同步机制:主机等待至少一台备机应答成功后才返回客户端成功
  • TDSQL采用强同步机制来保证数据一致性
  • 任何一笔应答前端成功的请求除了在主DB落盘成功外还会在至少一台DB落盘成功

TDSQL(MySQL)产品及架构介绍_SQL_09

2、TDSQL强同步复制技术

  • 基于主从架构的“并行多线程强同步复制方案“
  • 将串行的同步线程并行化,利用线程池&GroupCommit等技术大幅提高性能
  • 工作线程记录完binlog之后就可以处理其他链接,不用无谓等待,充分利用资源

TDSQL(MySQL)产品及架构介绍_数据库_10

3、TDSQL数据强一致性

  • 特殊场景
  • 极端场景下数据一致性的保障
  • 快速重建节点,即新加备节点快速恢复数据

TDSQL(MySQL)产品及架构介绍_数据库_11

4、TDSQL容灾切换

  • 容灾切换:主DB不可用时,系统自动选举出新的节点提供服务
  • 整个切换过程完全自动化,无须人为干预

1> 切换过程

TDSQL(MySQL)产品及架构介绍_SQL_12

TDSQL(MySQL)产品及架构介绍_数据库_13

  1. schedule把主db降级为从机
  2. 参与选举的从机上报最新的binlog文件偏移
  3. schedule根据收到的binlog点选择新的主db
  4. schedule重建主备关系
  5. schedule跟新zk中的路由表
  6. proxy将请求转发给新的主db

四、分布式特性

1、TDSQL数据库实例类型

  • 集中式实例 vs 分布式实例
  • 在集中式(NoShard)模式下,一张库表分布在一个MySQL实例上
  • 在分布式(Shard)模式下,一张表根据分片的数量分布在不同的MySQL节点上

TDSQL(MySQL)产品及架构介绍_数据库_14


  • 两种模式
  • 架构上都支持金融级别的容灾和数据一致性保障等要求
  • 功能上NoShard完全兼容MySQL,Shard模式下对SQL能力有一些约束

TDSQL(MySQL)产品及架构介绍_MySQL_15


  • 选型推荐
  • 选择:中小闺蜜适用于NOShard,大规模适用于Shard

TDSQL(MySQL)产品及架构介绍_MySQL_16

2、TDSQL集中式实例

  • 兼容MySQL8.0.18
  • 使用上的限制
  • 不能更改系统库表的任何数据
  • 不只是通过SQL语句管理数据库账号权限,需要通过管理控制台进行
  • 不提供ROOT账号
  • 不支持MyIsam存储引擎,支持InnoDb存储引擎
  • 逻辑备份与恢复可以由通过命令行/GUI根据来进行;单物理备份与恢复必须通过管控平台进行
  • 重启实例:必须通过管控平台进行
  • 不支持直接对服务存储空间操作的命令

3、TDSQL分布式实例

  • 兼容MySQL 8.0.18
  • 由于和单机数据库存在较大的架构差异,对部分功能和语法有使用限制
  • 不支持自定义函数,事件,表空间
  • 不支持视图,存储过程,触发器,游标
  • 不支持外键,自建分区,临时表
  • 不支持符合语句,如BEGIN END,LOOP,IF,WHILE等
  • 不支持CREATE TABLE SELECT、CREATE TEMPORARY TABLE
  • 不支持ALTER TABLE对分表键(shardkey)进行改名,但可以修改类型
  • 不支持RENAME TABLE语句
  • 不支持ALTER TABLE对分表键(shardkey)进行改名,但可以修改类型
  • 不支持在SQL中引用和操作变量,比如SET @c=1,@d=@c+1;SELECT @c,@d

4、TDSQL表分类

  • 建表有三种模式,分别单表,广播表和分表
  • 单表
  • 语法和MySQL完全一致
  • 所有单表都存放在第一个分片(set)
  • 如果单表数据量/访问量过大,第一个分片(set)负载较高
  • 和分表进行联表查询时,通常需要进行跨分片(set)链表查询,执行效率较低
  • 常用语存储相对独立,访问量小的业务数据
  • 不支持水平扩容
  • 广播表
  • 常用于存储需联合查询、变更量小的业务数据
  • 语法和MySQL完全一致
  • 该表的所有操作都将广播表到所有物理分片(set)中,每个set都有该表的全量数据
  • 如果广播表数据量/变更量大,所有物理分片(set)负载较大
  • 方便和分表进行联表查询,与任意表做联表查询都无需物理分片(set)联表查询
  • 使用分布式事物维护多个物理分片(set)间的数据一致性
  • 不支持水平扩容
  • 广播表
  • 常用于存储数据量大,访问量打的业务数据
  • 根据shardkey将数据分不到不同的分片(set)
  • 支持Hash,Range,List三种分片算法
  • 需指定字段作为shardkey
  • 主键和所有唯一索引必须包含shardkey
  • INSERT/REPLACE语句中字段必须包含shardkey,否则会报错拒绝
  • 多个分表联合查询(join)
  • 根据shardkey进行联合,无需跨物理分片(set)联表查询,执行效率高
  • 根据shardkey进行联合,无需跨物理分片(set)联表查询,执行效率低
  • 支持水平扩容
  • 使用shardkey
  • 创建表时需要指定路由字段shardkey
  • SQL语句包含shardkey是,proxy根据分片算法hash/range/list对shardkey进行计算,将SQL发往对应的分片

TDSQL(MySQL)产品及架构介绍_MySQL_17

5、TDSQL水平扩容

  • 水平扩容
  • 最起初一张表在一个set上,随着节点容量的瓶逐步拆分到其他set

TDSQL(MySQL)产品及架构介绍_MySQL_18

6、TDSQL分布式事物

  • 分布式事物
  • 单节点的事物由InnoDB引擎保障
  • 多节点分布式采用标准的两阶段提交协议实现
  • 完全去中心化,健壮的异常处理,全局死锁检测机制

TDSQL(MySQL)产品及架构介绍_MySQL_19


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql