check系列命令
2.1.17.0 check @@metadata 命令
用于检查meta信息是否存在以及加载的时间。
命令格式:
- 第一种形式
check @@metadata
,返回结果可能是:- 上一次 reload @@metadata 的datatime;
- 上一次 reload @@config_all的datatime(注意:在配置没有变更的情况下,不会同步元数据,因此datetime是不会变化的);
- 启动时加载meta的datatime
第二种形式
check full @@metadata
,并且支持以下过滤条件:where schema=? and table=?
where schema=?
where reload_time=‘yyyy-MM-dd HH:mm:ss’
,where reload_time>=‘yyyy-MM-dd HH:mm:ss’
,where reload_time<=‘yyyy-MM-dd HH:mm:ss’
where reload_time is null
where consistent_in_sharding_nodes=0
where consistent_in_sharding_nodes = 1
where consistent_in_memory=0
where consistent_in_memory = 1
- If no where, retrun all results.
check full @@metadata
结果集如下:
schema | table | reload_time | table_structure | consistent_in_sharding_nodes | consistent_in_memory |
---|---|---|---|---|---|
schema | table | 2018-09-18 11:01:04 | CREATE TABLE table`(..... | 1 | 1 |
column table_structure 和 show create table
命令结果的形式一样
column consistent_in_sharding_nodes 表示不同分片之间的一致性,0为不一致,1为一致
column consistent_in_memory 表示内存中meta与实际后端结点的一致性,0为不一致,1为一致
当table_structure列为null时,consistent_in_sharding_nodes列和consistent_in_memory列没有意义。
当consistent_in_sharding_nodes为0时,consistent_in_memory没有意义。
2.1.17.1 check @@global schema = '' [and table = '']
用于进行手动全局表检查的命令,当即触发一次特定范围的全局表检查,并且将检查结果作为返回值进行展示。
结果如下所示:
mysql> check @@global schema = 'testdb';
+--------+------------+-----------------------------+-------------------+
| SCHEMA | TABLE | DISTINCT_CONSISTENCY_NUMBER | ERROR_NODE_NUMBER |
+--------+------------+-----------------------------+-------------------+
| testdb | tb_global1 | 0 | 0 |
+--------+------------+-----------------------------+-------------------+
SCHEMA: 所检查的SCHEMA名字
TABLE: 所检查的TABLE名字
DISTINCT_CONSISTENCY_NUMBER: 返回有几个不同的检查结果的版本
ERROR_NODE_NUMBER: 在检查过程中有几个节点执行SQL报错
具体最终结果是否符合用户的预期,还是要根据表格的检查SQL和返回信息来进行判断,但一般情况下认为当DISTINCT_CONSISTENCY_NUMBER的值大于1的情况下,表格中的内容一定不一致