

名词解释
TiDB Server SQL层,对外暴露MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL解析和优化 ,最终生成分布式执行计划。 TiDB层本身是无状态的,实践中可以启动多个TiDB实例,通过负载均衡组件 (如 LVS、HAProxy或F5) 对外提供统⼀的接入地址,客户端的连接可以均匀地分摊在多个TiDB实例上以达到负载均衡的效果。 TiDB Server本身并不存储数据 ,只是解析SQL ,将实际的数据读取请求转发给底层的存储节点TiKV (或 TiFlash) 。
PD Server 整个TiDB集群的元信息管理模块,负责存储每个TiKV节点实时的数据分布情况和集 群的整体拓扑结构 ,提供TiDB Dashboard管控界面,并为分布式事务分配事务 ID。PD不仅存储元信息 ,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的TiKV节点 ,可以说是整个集群的“大脑”。 此外,PD 本身也是由至少3个节点构成,拥有高可用的能⼒。建议部署奇数个 PD 节点。
TiKV 负责存储数据,从外部看TiKV是⼀个分布式的提供事务的Key-Value存储引擎。存储数据的基本单位是Region ,每个Region负责存储⼀个Key Range (从 StartKey 到 EndKey的左闭右开区间)的数据 ,每个TiKV节点会负责多个Region。 TiKV的API在KV键值对层面提供对分布式事务的原生支持 ,默认提供了 SI (Snapshot Isolation) 的隔离级别 ,这也是 TiDB 在SQL层面支持分布式事务的核心。TiDB 的SQL层做完SQL解析后 ,会将SQL的执行计划转换为对TiKV API的实际调用。所以 ,数据都存储在TiKV中。另外,TiKV 中的数据都会自动维护多副本 (默认为三副本) ,天然支持高可用和自动故障转移。
TiFlash TiFlash是⼀类特殊的存储节点。和普通 TiKV 节点不⼀样的是 ,在 TiFlash 内部 ,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。
命令执行
系统命令 通过ssh登陆到中控机(已经安装TiUP的机器) ,使用TiUP client连接 TiDB。
SQL语句 通过MySQL Client命令行登陆到TiDB Server。在MySQL client中执行的命令 ,登陆方式如下:
mysql --host 127.0.0.1 --port 4000 -u root
常见错误码
1. Error Number: 8003 ADMIN CHECK TABLE命令在遇到行数据跟索引不⼀致的时候返回该错误 ,在检查表中数据是否有损坏时常出现。 出现该错误时 ,请向PingCAP工程师或通过官方论坛寻求帮助。
2. Error Number: 8223 检测出数据与索引不⼀致的错误 ,如果遇到该报错请向PingCAP工程师或通过官方论坛寻求帮助。
3. Error Number: 8027 表结构版本过期。TiDB 采用在线变更表结构的方法。 当TiDB server表结构版本落后于整个系统的时,执行SQL将遇到该错误。遇到该错误,请检查该 TiDB server 与PD leader之间的网络。
4. Error Number: 8120 获取不到事务的start tso,请检查 PD Server 状态/监控/日志以及TiDB Server与PD Server 之间的网络。
5. Error Number: 9001 请求PD超时,请检查PD Server 状态/监控/日志以及TiDB Server与PD Server之间的网络。
6. Error Number: 9002 请求TiKV超时,请检查TiKV Server状态/监控/日志以及TiDB Server与TiKV Server之间的网络。
7. Error Number: 9005
某个Raft Group不可用,如副本数目不足,出现在 TiKV 比较繁忙或者是TiKV节点停机的时候,请检查TiKV Server状态/监控/日志。
8. Error Number: 9003 TiKV操作繁忙,⼀般出现在数据库负载比较高时,请检查 TiKV Server 状态/监控/日志。
9. Error Number: 9012 请求TiFlash 超时。请检查TiFlash Server状态/监控/日志以及TiDB Server与TiFlash Server 之间的网络。
10. Error Number: 9013 TiFlash操作繁忙。该错误⼀般出现在数据库负载比较高时。请检查TiFlash Server的状态/监控/日志。
TiDB服务器宕机
场景描述:TiDB服务器宕机 | ||
序号 | ||
| T1 | 场景 识别 | ping <ipadress> |
检查当前集群状态,TiDB状态显示down tiup cluster dipslay <cluster_name> tiup cluster start <cluster_name> -N <ipadress>:<port> | ||
| T4 |
PD服务器宕机
ping <ipadress> tiup cluster dipslay <cluster_name> | ||
tiup cluster dipslay <cluster_name> tiup cluster start <cluster_name> -N <ipadress>:<port> |
TiKV服务器宕机
ping <ipadress> | ||
tiup cluster dipslay <cluster_name> | ||

本文作者:白炀斌(上海新炬王翦团队)
本文来源:“IT那活儿”公众号





