引言
TiDB Academy 提供了 TiDB 的视频学习资源,方便了解这个全新的数据库。在学习过程中,做了这个系列的笔记,方便后期回顾。
TiDB 平台
虽说 TiDB 在上层实现了 MySQL 协议,但并不代表它们使用的是相同的源码。之所叫做 TiDB 平台,是因为它是由三个核心部分构成:
TiKV:
- 兼容 ACID 的存储层
- 支持分布式 Key Value 存储
- 支持横向扩展、原生多副本机制保证高可用
- 自动基于范围分区,每个范围都称为一个
Region
。Region
会根据需要自动调整,默认最大为 96MB - 每个
Region
默认有三分拷贝,使用 Raft 保证一致性 - 当然,实际上 TiKV 也可以独立部署,并直接使用它的 KV API 访问数据
TiDB:
- 支持 MySQL 协议,自动转换成分布式请求到 TiKV
- 无状态、不存储数据
- 易于水平扩展,高可用
- 类似一个 Translator,但是这里面的协同处理很有意思
Placement Driver (PD):
- 集群管理器,就是整个平台的大脑
- 管理 TiKV Region 负载均衡(比如热点检查、Region 合并)
- 元数据管理(如 SQL DDL)
- 时间同步(分布式事务中很关键的一点就是准确的时间)
可选组件:TiSpark:
- 越过 SQL 层,让 Apache Spark 直接与 TiKV 连接
- 方便执行复杂的 OLAP 查询、机器学习任务
从 TiDB 平台这种组件化的架构设计可以看到,你可以直接通过不同的方式(Spark、MySQL 协议、Key-Value API 等)访问同样的数据(位于 TiKV 中),而无需走传统的 ETL (Extract-Transform-Load) 那套。
有了 TiDB 平台,就可以同时支持 OLAP 和 OLTP 场景了(传说中的混合模式 HATP)。这样,原先我们用 MySQL 应付 OLTP 场景,用 Hadoop, HBase 或者 Cassandra 等应付 OLAP 场景,都可以在 TiDB 这一个平台完成,从而简化设计和维护工作(真的吗?)。
KOST 技术栈
KOST 是指:Kubernetes, Operator, Spark 和 TiDB。K8S 可以帮助我们一步到位搞定 TiDB 平台部署。
在 GKE 上部署 TiDB
直接看这个部署教程。
一些提示:
1 | 1. Watch tidb-cluster up and running |
使用 MySQL 客户端连接:
1 | kubectl run -n tidb mysql-client --rm \ |
或者建立隧道:
1 | kubectl -n tidb port-forward \ |
貌似现在根本连接不上了,总是提示需要密码,但是默认不是不需要密码的吗?看来需要重建集群,然后首次进入就设置好密码。用户管理参考:TiDB User Account Management