【PCTP】学习笔记 - TiDB Server

TiDB Server 是 TiDB 集群的计算层,承担着连接业务应用、处理 SQL 请求的工作

如何兼容mysql

  • Protocol
  • Syntax
  • Dialect
  • DDL / DML
  • System variable
  • 内建函数
  • Sql Mode
  • 类型推导

以上是从兼容的角度触发,讲解相应的实现

监听 Signal

  • sighUP
  • sigint
  • sgterm
  • sgquit (Graceful Shutdown)

监听信号事件,不同的事件触发相应的服务过程

主要描述tidb Server启动时会经过哪些阶段,大概会执行什么过程

  1. 从命令行解析命令参数
  2. 启动普罗米修斯的监控客户端(初始化各项监控指标)
  3. 加载配置信息(配置信息覆盖)
    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