SOP 系列 03】在线表结构变更(Online DDL)
三、查询 DDL 相关状态、进度的命令介绍
3.1 ADMIN SHOW DDL
用于查看 TiDB 自身的状态,并对 TiDB 中的表数据进行校验。
3.2 ADMIN SHOW DDL JOBS
查看集群环境中的 DDL 任务运行中详细的状态。
- JOB_ID:每个 DDL 操作对应一个 DDL 作业,JOB_ID 全局唯一。
- DB_NAME:执行 DDL 操作的数据库的名称。
- TABLE_NAME:执行 DDL 操作的表的名称。
- JOB_TYPE:DDL 操作的类型。
- SCHEMA_STATE:schema 的当前状态。如果 JOB_TYPE 是 add index,则为 index 的状态;如果是 add column,则为 column 的状态,如果是 create table,则为 table 的状态。常见的状态有以下几种:
- none:表示不存在。一般 drop 操作或者 create 操作失败回滚后,会变为 none 状态。
- delete only、write only、delete reorganization、write reorganization:这四种状态是中间状态,在 Online, Asynchronous Schema Change in F1 论文中有详细说明,在此不再赘述。由于中间状态转换很快,一般操作中看不到这几种状态,只有执行 add index 操作时能看到处于 write reorganization 状态,表示正在添加索引数据。
- public:表示存在且可用。一般 create table 和 add index/column 等操作完成后,会变为 public 状态,表示新建的 table/column/index 可以正常读写了。
- SCHEMA_ID:执行 DDL 操作的数据库的 ID。
- TABLE_ID:执行 DDL 操作的表的 ID。
- ROW_COUNT:执行 add index 操作时,当前已经添加完成的数据行数。
- START_TIME:DDL 操作的开始时间。
- STATE:DDL 操作的状态。常见的状态有以下几种:
- none:表示该操作任务已经进入 DDL 作业队列中,但尚未执行,因为还在排队等待前面的 DDL 作业完成。另一种原因可能是执行 drop 操作后,会变为 none 状态,但是很快会更新为 synced 状态,表示所有 TiDB 实例都已经同步到该状态。
- running:表示该操作正在执行。
- synced:表示该操作已经执行成功,且所有 TiDB 实例都已经同步该状态。
- rollback done:表示该操作执行失败,回滚完成。
- rollingback:表示该操作执行失败,正在回滚。
- cancelling:表示正在取消该操作。这个状态只有在用 ADMIN CANCEL DDL JOBS 命令取消 DDL 作业时才会出现。
3.3 ADMIN SHOW DDL JOB QUERIES job_id [, job_id]
用于查看 job_id 对应的 DDL 任务的原始 SQL 语句。