
在内核设计上,TiDB分布式数据库将整体架构拆分成了多个模块,各模块之间互相通信,组成完整的TiDB系统。对应的架构图如下:

与传统的单机数据库相比,TiDB具有以下优势:
视频讲解如下:
TiDB最终将数据写入底层的RocksDB中。RocksDB是由Facebook基于LevelDB开发的一款提供键值存储与读写功能的LSM-tree架构引擎。用户写入的键值对会先写入磁盘上的WAL(Write Ahead Log),然后再写入内存中的跳表(Skip List,这部分结构又被称作MemTable)。LSM-tree引擎由于将用户的随机修改(插入)转化为了对WAL文件的顺序写,因此具有比B树类存储引擎更高的写吞吐。内存中的数据达到一定阈值后,会刷到磁盘上生成SST文件(Sorted String Table),SST又分为多层(默认至多6层),每一层的数据达到一定阈值后会挑选一部分SST合并到下一层,每一层的数据是上一层的10倍(因此90%的数据存储在最后一层)。

每个TiKV实例中有两个RocksDB实例,一个用于存储Raft日志(通常被称为raftdb),另一个用于存储用户数据以及MVCC信息(通常被称为kvdb)。kvdb中有四个Column Family:raft、lock、default和write,具体说明如下表所示。

在一些企业的生产环境中无法访问外部的网络,此时如果部署TiDB数据库集群就需要使用二进制包方式进行部署。在TiDB的官方网站上提供不同版本的二进制包,如下图所示。

从这里可以看出,目前TiDB最新的版本是v8.5.1。需要下载以下两个安装包文件:
tidb-community-server-v8.5.1-linux-amd64.tar.gz
tidb-community-toolkit-v8.5.1-linux-amd64.tar.gzTiDB的离线部署与在线部署类型非常类似,唯一的区别就是:离线部署模式下需要将TiDB的镜像源设置为本地目录;而在线部署模式下TiDB的镜像源为官方仓库地址。下面命令的输出信息展示了在线部署模式下TiDB的镜像源地址。
tiup mirror show
# 输出信息如下:
https://tiup-mirrors.pingcap.com下表展示了TiDB全分布式集群中包含的实例信息。

与伪分布集群部署类似,在部署全分布集群时需要配置中控节点与其余各节点的免密码登录。以下步骤均在中控节点上执行。
(1)将离线包发送到目标集群的中控机后,执行以下命令安装TiUP组件。
tar xzvf tidb-community-server-v8.5.1-linux-amd64.tar.gz && \
sh tidb-community-server-v8.5.1-linux-amd64/local_install.sh && \
source /root/.bash_profile
local_install.sh 脚本会自动执行命令:
tiup mirror set tidb-community-server-v8.5.1-linux-amd64
将当前镜像地址设置为 tidb-community-server-v8.5.1-linux-amd64。(2)执行命令确定TiDB镜像地址是否为本地目录。
tiup mirror show
# 输出信息如下:
/root/tools/tidb-community-server-v8.5.1-linux-amd64(3)执行下面的命令将tidb-community-toolkit-v8.5.1-linux-amd64.tar.gz合并到本地镜像地址中。
tar xf tidb-community-toolkit-v8.5.1-linux-amd64.tar.gz
ls -ld tidb-community-server-v8.5.1-linux-amd64 tidb-community-toolkit-v8.5.1-linux-amd64
cd tidb-community-server-v8.5.1-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-v8.5.1-linux-amd64(4)部署TiDB集群的yaml文件如下:
# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
# # Monitored variables are applied to all the machines.
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
server_configs:
tidb:
instance.tidb_slow_log_threshold: 300
tikv:
readpool.storage.use-unified-pool: false
readpool.coprocessor.use-unified-pool: true
pd:
replication.enable-placement-rules: true
replication.location-labels: ["host"]
tiflash:
logger.level: "info"
pd_servers:
- host: 192.168.79.11
- host: 192.168.79.12
- host: 192.168.79.13
tidb_servers:
- host: 192.168.79.11
port: 4000
status_port: 10080
- host: 192.168.79.12
port: 4001
status_port: 10081
tikv_servers:
- host: 192.168.79.11
config:
server.labels: { host: "Beijing" }
- host: 192.168.79.12
config:
server.labels: { host: "Shanghai" }
- host: 192.168.79.13
config:
server.labels: { host: "Chongqing" }
tiflash_servers:
- host: 192.168.79.14
monitoring_servers:
- host: 192.168.79.14
port: 7788
grafana_servers:
- host: 192.168.79.14(5)当准备好了topo.yaml文件后,执行下面的命令部署TiDB数据库集群。
tiup cluster deploy mytidb-cluster v8.5.1 ./topo.yaml --user root原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。