Bootstrap
TiDB的Bootstrap是启动的时候的初始化过程, 由session.go: BootstrapSession
完成.
在 tidb-server/main.go 的 createStoreAndDomain
被调用
bootstrap 分为两种, 它首先会去查看 tikv 中的 BootstrapKey
, 取得当前的bootstapVersion, 如果为0, 那么就是新集群, 作 bootstrap, 如果低于 currentBootstrapVersion
, 那么就做 upgrade
:
|
|
bootstap:
|
|
upgrade:
|
|
sysvar
所有系统的变量, 都定义在在 sysvar.go 中的 defaultSysVars
, 在 init 里面设置到了 SysVars
map中
在 doDMLWorks 时, 会逐一插入到 mysql.GLOBAL_VARIABLES
表中
LoadPrivilegeLoop
因为 TiDB 是分布式的, 所以在 TiDB 中的 privilege 可能被其他的 TiDB 修改了, 所以 TiDB 使用了 etcd, 在 更改了 privilege 的时候通知所有的tidb 去 load 新的 priilege.
|
|
UpdateTableStatsLoop
用来做 Analyze 的
|
|
GCWorker
GCWorker 也是在 BootstrapSession 被启动:
|
|
GCWorker 主要做以下3件事情:
- DDL的DropTable, DropIndex等的Delete range操作
- tikv GC, 基于lifetime来清理保存的历史数据TiDB 读取历史版本数据
- 扫描全库, 查找过期的Locks.