**TiDB**是一个开源的NewSQL数据库，支持混合事务和分析处理（HTAP）工作负载。它与MySQL兼容，并且可以提供水平可扩展性、强一致性和高可用性。它主要由PingCAP公司开发和支持，并在Apache 2.0下授权。TiDB从Google的Spanner和F1论文中汲取了最初的设计灵感。

TiDB被InfoWorld 2018 Bossie Award评选为最佳数据存储和分析开源软件之一。

历史
--

PingCAP Inc.是一家软件公司，成立于2015年4月，成立后便开始开发TiDB。该公司是TiDB及其关联的开源社区的主要开发人员，维护人员和驱动者。

主要特性
----

### 水平可扩展性

TiDB可以通过添加新节点来扩展SQL处理和存储容量。这使得基础设施容量的扩展更加容易和灵活，而传统的关系数据库只能垂直扩展。

### MySQL兼容性

对于应用程序来说，TiDB的行为就如同一个MySQL 5.7服务器。用户可以继续使用所有现有的MySQL客户端库。因为TiDB的SQL处理层是从头开始构建的，而不是一个MySQL分支，所以它的兼容性不是100%，而且MySQL和TiDB之间存在已知的行为差异。

### 具有强一致性的分布式事务

TiDB在内部基于范围将表分片为的小块，这些块称为"区域"。每个区域的默认大小约为100 MB，TiDB在内部使用二阶段提交来确保区域以事务上一致的方式进行维护。

### 云原生

为了使部署、配置、操作和维护更加灵活，TiDB被设计成可在云中工作。TiDB的存储层称为TiKV，于2018年8月成为云原生计算基金会的沙盒级别项目。TiDB平台的体系结构还允许分别独立扩展SQL处理和存储。

### 更精简的ETL流程

TiDB可以支持联机事务处理（OLTP）和联机分析处理（OLAP）工作负载。这意味着，虽然用户可能传统上在MySQL上进行交易，然后将数据抽取、转换和加载（ETL）到一个列存储中进行分析处理，但这一步骤不再需要。

### 高可用性

TiDB使用Raft一致性算法确保数据在整个Raft组的存储过程中高度可用和安全复制。在发生故障时，Raft组将自动为失败的成员选择一个新的领导者，并自我修复TiDB集群，而不需要任何必要的人工干预。失败和自愈操作对应用程序是透明的。

部署方法
----

### Kubernetes Operator

可以使用TiDB Operator将TiDB部署到支持Kubernetes的云环境中。Operator是打包、部署和管理Kubernetes应用程序的方法。它是为运行有状态工作负载而设计的，最早由CoreOS在2016年引入。TiDB Operator最初由PingCAP开发，并于2018年8月开源。TiDB Operator可以用于在笔记本电脑、Google Cloud Platform的Google Kubernetes引擎和Amazon Web Services的Kubernetes弹性容器服务上部署TiDB。

### Ansible

通过使用TiDB-Ansible playbook，可以使用Ansible (軟體)部署TiDB。

### Docker

可以使用Docker在多个节点和多台机器上的容器化环境中部署TiDB，而Docker Compose可以使用单个命令部署TiDB以进行测试。

工具
--

TiDB提供了一系列开源工具来帮助现有MySQL和MariaDB用户进行数据复制和迁移。

### Syncer与Data Migration

Syncer是一个工具，它支持从MySQL或MariaDB实例到TiDB集群的完整数据迁移或增量数据复制。Data Migration（DM）是 Syncer的第二代迭代，它适合将已分片的MySQL或MariaDB表中的数据复制到TiDB。Syncer/DM的一个常见用例是将MySQL或MariaDB表连接到TiDB，几乎将TiDB视为从属，然后在该TiDB集群上直接实时运行分析工作负载。

### Lightning

Lightning是一个可将大型MySQL转储高速完全导入到新的TiDB群集中的工具，它提供了比执行每个SQL语句更快的导入体验。该工具用于把大量数据快速填充到一个最初为空的TiDB集群，以便加快测试或生产迁移。之所以能提升导入速度，是因为TiDB通过将SQL语句解析为键值对，然后直接生成**有序字符串表**（SSTable）文件到RocksDB。

### TiDB-Binlog

TiDB-Binlog是一个用于收集对TiDB集群所做逻辑更改的工具。它用于在两个TiDB集群之间或从一个TiDB集群到另一个下游平台之间提供增量备份和复制。

它的功能类似于MySQL主从复制。主要的区别在于，由于TiDB是一个分布式数据库文件管理器，因此每个TiDB实例生成的binlog需要在被下游使用之前，根据事务提交的时间进行合并和排序。

用户案例
----

目前，已有近3000家公司在使用 TiDB，其中包括Mastercard、AirBNB、Square、Paypay、中国银行、建设银行、美团、Bilibili、Shopee、BookMyShow、小米、知乎、美团点评、爱奇艺, 转转、摩拜、易果，以及猿辅导。

参考文献
----

1. ↑  .
2. ↑ . 2023年12月1日  [2023年12月19日].
3. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
4. ↑ .  [2019-12-07]. （原始内容存档于2018-12-30）.
5. ↑ .  [2019-12-07]. （原始内容存档于2019-12-02）.
6. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
7. ↑ .  [2019-12-07]. （原始内容存档于2019-09-02）.
8. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
9. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
10. ↑ .  [2019-12-07]. （原始内容存档于2019-07-31）.
11. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
12. ↑ .  [2019-12-07]. （原始内容存档于2019-09-03）.
13. ↑ .  [2019-12-07]. （原始内容存档于2018-01-20）.
14. ↑ .  [2019-12-07]. （原始内容存档于2019-12-29）.
15. ↑ .  [2019-12-07]. （原始内容存档于2019-11-25）.
16. ↑ .  [2019-12-07]. （原始内容存档于2019-07-16）.
17. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
18. ↑ .  [2019-12-07]. （原始内容存档于2018-08-17）.
19. ↑  .
20. ↑  .
21. ↑ .  [2019-12-07]. （原始内容存档于2020-08-25）.
22. ↑ .  [2019-12-07]. （原始内容存档于2019-05-02）.
23. ↑ .  [2019-12-07]. （原始内容存档于2019-11-21）.
24. ↑ .  [2019-12-07]. （原始内容存档于2020-08-25）.
25. ↑ .  [2019-12-07]. （原始内容存档于2019-05-08）.
26. ↑ .  [2019-12-07]. （原始内容存档于2019-06-16）.
27. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
28. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
29. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
30. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
31. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-21）.
32. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
33. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.
34. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-05-02）.
35. ↑  States, Austin TX United.. Datanami. 2018-02-22  [2019-12-07]. （原始内容存档于2019-11-06）.
36. ↑ . pingcap.com.  [2019-12-07]. （原始内容存档于2019-11-06）.