TiDB Server 是 TiDB 集群的计算层,承担着连接业务应用、处理 SQL 请求的工作
如何兼容mysql
- Protocol
- Syntax
- Dialect
- DDL / DML
- System variable
- 内建函数
- Sql Mode
- 类型推导
以上是从兼容的角度触发,讲解相应的实现
监听 Signal
- sighUP
- sigint
- sgterm
- sgquit (Graceful Shutdown)
监听信号事件,不同的事件触发相应的服务过程
主要描述tidb Server启动时会经过哪些阶段,大概会执行什么过程
- 从命令行解析命令参数
- 启动普罗米修斯的监控客户端(初始化各项监控指标)
- 加载配置信息(配置信息覆盖)
4.设置参数(各种协议 【gRPC】及其他配置)
5.初始化logger
6.开始心跳 keepAlivetotal
7.初始化实例(服务实例)
8.设置 stop方法(注册停掉Sever需要的服务过程和工作)
9.启动 Loop 监听端口
Shutdown 流程
- 断开连接
- Shutdown 直接断开所有的连接
- Graceful Shutdown 等待当前 Query 运行完毕在断开连接
- 关闭Domain
- 关闭 DDL 线程,清理 Etcd 上面的信息
常用端口
Mysql Procotol Port 默认 4000
Http 控制端口,默认 10080
- tidb 特有的接口
- 查询状态
- 动态修改配置
- Golang Pprof 端口
- Goroutines
- Cpu / Memory
- Blocks
以上记录信息只描述了关键字,帮助理解几个方向的来源
具体的请参考:
https://book.tidb.io/session1/chapter1/tidb-architecture.html
https://github.com/pingcap/tidb/tree/master/docs/design
https://docs.pingcap.com/zh/tidb/v3.0/mysql-compatibility