Skip to content

Architecture

mermaid
graph TD
    subgraph Client
        A[Application] -->|SQL Query| B[TiDB Server]
    end

    subgraph TiDB Cluster
        B -->|Metadata Management| C[PD Server]
        B -->|Read/Write KV| D[TiKV Cluster]
    end

    subgraph TiKV Cluster
        D1[TiKV Node 1] -->|Raft Replication| D2[TiKV Node 2]
        D2 -->|Raft Replication| D3[TiKV Node 3]
    end

    subgraph Storage Layer
        D1 -->|Persist Data| E1[SSD/HDD]
        D2 -->|Persist Data| E2[SSD/HDD]
        D3 -->|Persist Data| E3[SSD/HDD]
    end

架构解析

  1. Client(应用层)
  • 应用直接与 TiDB Server 交互,发送 SQL 查询
  1. TiDB Server(计算层)
  • TiDB Server 解析 SQL,优化查询,执行 SQL 语句。
    • 通过 PD Server 获取 TiKV 存储信息(Region 位置)。
    • 直接访问 TiKV 进行数据读写。
  1. PD Server(元数据管理)
  • 负责 TiKV Region 调度,管理数据分片位置。
    • TiDB 通过 PD 发现和管理 TiKV 实例。
    • 维护 TiKV 节点的负载均衡,防止某些节点压力过大。
  1. TiKV Cluster(分布式存储)
  • 采用 Raft 协议 进行 多副本同步,保证数据高可用。
    • 每个 TiKV 负责存储部分 Region(数据分片)
  1. Storage Layer(物理存储)
  • TiKV 运行在 SSD/HDD 设备上,底层使用 RocksDB 作为存储引擎。

这样,TiDB 具备:

  • 计算存储分离(TiDB 计算,TiKV 存储)
  • 水平扩展(增加 TiDB/TiKV 服务器即可扩展)
  • 高可用(Raft 保证数据安全)

TIDB Server PD

Check --path param which is pd server endpoint

bash
ps aux | grep tidb-server
bash
tidb     26560 42.8  4.8 10024340 6404508 ?    Ssl  15:18  13:18 bin/tikv-server --addr 0.0.0.0:21163 --advertise-addr 192.168.48.90:21163 --status-addr 0.0.0.0:21183 --advertise-status-addr 192.168.48.90:21183 --pd 192.168.48.90:13379 --data-dir /data/tidb-data/tikv-21163 --config conf/tikv.toml --log-file /data/tidb-deploy/tikv-21163/log/tikv.log

SQL check.

sql
SHOW CONFIG WHERE name LIKE '%pd%';
sql
+------+---------------------+------------------------------------------------+----------------------------+
| Type | Instance            | Name                                           | Value                      |
+------+---------------------+------------------------------------------------+----------------------------+
| pd   | 192.168.48.90:13379 | pd-server.dashboard-address                    | http://192.168.48.90:13379 |
| tikv | 192.168.48.90:21163 | pd.endpoints                                   | ["192.168.48.90:13379"]    |
+------+---------------------+------------------------------------------------+----------------------------+