简介
- TIDB文档
- TiDB 是一个的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合传统的RDBMS和NoSQL的特性。TiDB兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为OLTP和OLAP 提供一站式的解决方案。
- 特性
- 高度兼容 MySQL
- 水平弹性扩展
- 分布式事务
- 真正金融级高可用
- 一站式 HTAP 解决方案
- 云原生 SQL 数据库
整体架构
- TiDB 集群主要包括三个核心组件:
- TiDB Server
- 接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需数据的 TiKV地址,与TiKV交互获取数据,返回最终结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址
- PD Server(Placement Driver,简称 PD)
- 集群的管理模块,主要工作:
- 存储集群的元信息(某个Key存储在哪个TiKV节点)
- 对TiKV集群进行调度和负载均衡(如数据迁移、Raft group leader迁移等)
- 分配全局唯一且递增的事务ID
- 通过Raft协议保证数据的安全性
- Raft的leader server负责处理所有操作,其余的PD server用于保证高可用
- 建议部署奇数个PD节点
- TiKV Server
- 存储数据,一个分布式的提供事务的 Key-Value 存储引擎
- 存储数据的基本单位是Region,每个Region负责存储一个Key Range(从 StartKey到EndKey的左闭右开区间)的数据,每个TiKV节点会负责多个Region
- TiKV使用Raft协议做复制,保持数据的一致性和容灾
- 副本以Region为单位进行管理,不同节点上的多个Region构成一个Raft Group,互为副本
- 数据在多个TiKV之间的负载均衡由PD以Region为单位进行调度
- TiSpark:解决用户复杂OLAP需求的组件
- 解决用户复杂OLAP需求的主要组件,将Spark SQL直接运行在TiDB存储层,同时融合TiKV分布式集群的优势,并融入大数据社区生态
使用Docker Compose快速构建TiDB集群
# **安装docker
sudo apt-get install docker
# **安装docker Compose
sudo apt-get install docker-compose
# **安装git
sudo apt-get install git
# **下载tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git
# **创建并启动集群
cd tidb-docker-compose
sudo docker-compose pull
sudo docker-compose up -d
# **访问集群
mysql -h 127.0.0.1 -P 4000 -u root
# **使用navicat客户端连接
IP: 127.0.0.1
port:4000
用户名:root
密码: 空
# **修改密码
SET PASSWORD FOR 'root'@'%' = '123456';
历史数据
- 说明
- TiDB数据被更新、删除后,依然可以读取更新/删除前的数据
- 在更新数据之后,表结构发生了变化,TiDB依旧能用旧的表结构读取数据
- 使用
- system variable: tidb_snapshot,Session范围有效,可以通过Set 语句修改。值为文本,能够存储TSO和日期时间
- tidb_snapshot被设置时,会用这个时间戳建立Snapshot,随后所有的Select 操作都会在这个Snapshot上读取数据
- 通过结束Session或者设置tidb_snapshot="",读取最新版本的数据
- 历史数据保留策略
- TiDB使用MVCC管理版本,当更新/删除数据时,不会真正的删除数据,而是添加一个新版本数据,所以可以保留历史数据
- 历史数据不会全部保留,超过一定时间的历史数据会被彻底删除,以减小空间占用以及避免历史版本过多引入的性能开销
- 使用周期性运行的GC来进行清理
- tikv_gc_life_time:配置历史版本保留时间
- tikv_gc_safe_point:记录当前的safePoint