跳转至

2.10 企业级分布式数据库 TDSQL 及最佳实践

课程简介

本课程将深入讲解腾讯云企业级分布式数据库 TDSQL。TDSQL(Tencent Distributed SQL)是腾讯自研的金融级分布式数据库,分为 TDSQL for MySQLTDSQL for PostgreSQL 两个主要版本。

本课程将涵盖产品定义、核心概念、架构原理(包括 SQL 引擎、数据节点、高可用机制)、HTAP 能力以及选型与性能测试的最佳实践。

学习目标

通过本课程的学习,您将能够:

  • 理解 TDSQL 产品定位:掌握 TDSQL for MySQL 和 PostgreSQL 版的区别与适用场景。
  • 掌握核心架构:深入理解 Compute-Storage 分离、SET 模型、SQL 引擎及 GTM 全局事务管理。
  • 熟悉高可用机制:掌握强同步复制、自动故障切换及主备容灾原理。
  • 应用最佳实践:学会如何进行分片选型、容量规划及使用 Sysbench 进行性能压测。

第一部分:TDSQL for MySQL

本部分导读
TDSQL for MySQL 是基于 MySQL 协议的金融级分布式数据库,广泛应用于银行、支付、电商等核心交易场景。

一、产品概述

1.1 产品定义

TDSQL for MySQL 是一种支持强一致性、高可用性、全球部署架构及分布式水平扩展的关系型数据库。 - 协议兼容:完全兼容 MySQL 协议,业务无缝迁移。 - 核心能力:具备虚拟化多租户、强同步复制、线程池、热点更新、内核优化等能力。 - 验证:经过腾讯内部(微信支付、财付通、微众银行)十余年大规模核心业务验证。

1.2 核心概念 (Key Concepts)

概念 说明
实例 (Instance) 用户实际使用的一个数据库服务单元。
分片 (Sharding) 将数据水平切分(Horizontal Partitioning),存储在不同的节点上,以提升并行处理能力。
集群 (Cluster) 由多个服务器协同工作组成的系统,避免单点故障。
SET (节点组) 也就是数据分片的物理载体。一个 SET 通常包含“一主两备”或“一主一备”的物理节点。
主从复制 Master 处理写操作,Slave 处理读操作并同步数据。
SQL 引擎 (Gateway) TDSQL 的入口组件,负责 SQL 解析、分库分表路由、读写分离等。

1.3 核心优势

  1. 高性能:支持大并发、高吞吐,满足互联网海量业务需求。
  2. 高安全性:提供国密算法支持、数据加密及完善的安全审计。
  3. 强一致性:基于强同步复制机制,确保主备数据零丢失(RPO=0)。
  4. 弹性扩展:支持在线水平扩展(Rebalance),按需增加分片。
  5. 金融级可靠:支持“两地三中心”等容灾架构,自动容灾切换。

二、产品架构原理

2.1 整体架构图解

TDSQL 采用计算与存储分离的架构:

graph TD
    Client[业务应用] --> VIP[VIP (虚拟IP)]
    VIP --> SQLEngine[SQL 引擎 (Gateway/Proxy)]

    subgraph SET_1[SET 1 (分片A)]
        M1[Master] -- 强同步 --> S1[Slave]
        M1 -.-> S1_2[Slave 2]
    end

    subgraph SET_2[SET 2 (分片B)]
        M2[Master] -- 强同步 --> S2[Slave]
        M2 -.-> S2_2[Slave 2]
    end

    subgraph Management[管理调度层]
        ZK[Zookeeper / Etcd]
        Scheduler[调度系统]
        Backup[冷备中心]
    end

    SQLEngine --> SET_1
    SQLEngine --> SET_2
    SET_1 --> Backup
    SET_2 --> Backup
  1. 接入层 (VIP + SQL 引擎)
    • VIP:提供统一访问入口,负载均衡。
    • SQL 引擎 (Gateway):无状态计算节点。负责 SQL 解析、路由计算、读写分离、流量控制。它将逻辑表映射到物理分片。
  2. 存储层 (SET / 数据节点)
    • 每个 SET 是一个高可用的 MySQL 集群(通常为一主多从)。
    • 负责数据的持久化存储和执行物理 SQL。
    • 建议配置 SSD 硬盘以保证 I/O 性能。
  3. 管理调度层 (Manager)
    • 负责集群管理、监控告警、备份恢复、故障切换(HA)。
    • 依靠 ZooKeeper 等组件维护集群元数据。

2.2 实例模式:分布式 vs 关系型

  • 分布式实例:拥有多个 SET,数据通过 HASH 或 RANGE 算法打散到不同 SET 上。适用于海量数据、高并发场景。
  • 关系型实例:只有一个 SET,不进行分片。适用于数据量中等、需要 100% 兼容 MySQL 复杂语法的场景。

2.3 数据同步与高可用

为了保证金融级数据安全,TDSQL 支持多种同步模式:

模式 描述 特点 适用场景
异步复制 主库写完即返回。 性能最高,但主库宕机可能丢数据。 非核心业务。
强同步复制 主库写入后,必须等待至少一个备库写入 Relay Log 并返回 ACK,主库才返回成功。 数据零丢失,性能稍有损耗。 金融核心、支付交易
强同步可退化 正常时强同步,备库故障或超时后自动降级为异步。 平衡了可用性与一致性。 通用互联网业务。

故障自动转移流程: 1. 主节点故障,调度系统检测到失联。 2. 从备节点中选出 Binlog 偏移量最大(数据最新)的节点作为新主。 3. 重建主备关系,修改路由表。 4. 整个过程对业务透明(VIP 不变),通常在秒级完成。

2.4 水平分表原理 (Sharding)

  • 逻辑表:业务看到的表(如 t_order)。
  • 物理表:实际存储在各个分片上的表(如 t_order_001, t_order_002)。
  • 拆分键 (ShardKey):用于计算数据分布的字段(如 User_ID)。SQL 引擎根据 ShardKey 将请求路由到特定分片,避免跨分片查询以提升性能。

第二部分:TDSQL for PostgreSQL

本部分导读
原名为 TBase,是腾讯基于 PostgreSQL 开发的分布式 HTAP 数据库,适用于数据仓库及混合负载场景。

一、产品概述

TDSQL for PostgreSQL 是一款具备 HTAP (Hybrid Transactional/Analytical Processing) 能力的分布式数据库。 - 双引擎:同时具备高效的 OLTP(事务处理)和海量的 OLAP(分析处理)能力。 - 架构:Shared-Nothing(无共享)集群架构。 - 适用场景:PB 级海量存储、物联网 GIS 数据、实时数仓、Oracle 迁移。

二、架构原理

2.1 核心组件

组件 名称 职责
CN Coordinator Node (协调节点) 业务入口。负责 SQL 解析、查询规划、分发请求到 DN,并汇总结果。CN 节点是对等的,只存储元数据。
DN Data Node (数据节点) 存储实际业务数据,执行计算。DN 之间数据通过流复制同步。
GTM Global Transaction Manager 全局事务管理器。负责管理全局事务 ID (XID) 和全局快照,确保分布式事务的强一致性 (ACID)。

2.2 HTAP 能力

  • 行存与列存:支持行存储(适合 OLTP)和列存储(适合 OLAP)混用。
  • 智能优化器:CN 节点根据查询类型,自动选择 OLTP 或 OLAP 优化路径。

第三部分:TDSQL 最佳实践 (以 MySQL 版为例)

一、选型与容量规划

TDSQL 的性能与 分片数量分片规格 直接相关。

理论性能公式: - 读写并发 (QPS) = 单分片 QPS × 分片数量 - 事务性能 (TPS) ≈ 单分片 TPS × 70% × 分片数量 (会有分布式事务损耗)

分片规格选择策略

业务阶段 推荐配置 说明
功能测试/POC 2 分片,每分片 2GB 内存/25GB 磁盘 最低配置,用于验证功能。
业务初期 (增长快) 2 分片,每分片 16GB 内存/200GB 磁盘 预留一定的性能空间。
业务稳定期 4 分片起,根据峰值推算 建议单分片存储 5000万行数据,预留未来 1 年的增长量。

注意: - 一个分片建议数据量不超过 500GB - 1TB,过大影响备份恢复效率。 - 分片数量一旦确定,后期扩容(Rebalance)涉及数据搬迁,虽支持在线扩容,但仍建议前期做好规划。

二、性能压测实践

推荐使用 Sysbench 工具进行基准测试。

测试要点: 1. 工具版本:Sysbench 0.5 或更高版本。 2. 配置调整: - 修改 OLTP 脚本,调整读写比例。例如设置为 4:1 (4个 Select, 1个 Update)。 - 使用 oltp_point_selectsoltp_index_updates 参数控制。 3. 监控观察: - 在压测期间,观察 TDSQL 控制台的 CPU 利用率。 - 由于 TDSQL 采用了超用技术 (Over-commitment),某些监控指标(如逻辑 CPU)可能会显示超过 100%,属于正常现象。


课程总结

关键知识点

  1. TDSQL 双引擎:MySQL 版主打金融级核心交易(OLTP),PostgreSQL 版主打海量存储与分析(HTAP)。
  2. 强同步:通过 Raft 或优化的半同步协议实现 RPO=0,是金融业务的基石。
  3. 架构组件
    • MySQL 版:SQL 引擎 (Proxy) + SET (数据分片) + ZK (调度)。
    • PG 版:CN (协调) + DN (数据) + GTM (全局事务)。
  4. 分片键:分布式数据库的核心设计,决定了数据分布均匀度和查询效率。

随堂小测

问题:在 TDSQL for MySQL 架构中,负责处理 SQL 解析、分库分表路由的组件是? - A. Zookeeper - B. SQL 引擎 (Gateway) - C. SET - D. 调度系统

答案B

解析:SQL 引擎(也称网关 Gateway 或 Proxy)是流量入口,负责解析 SQL 并根据分片规则路由到正确的 SET。

本章课程到此结束。下一章,我们将讲解 2.11 云原生 TDSQL-C + 云数据库 Redis