如何清除tidb集群上那些空的数据库

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】V4.0.0
【复现路径】tidb4.0集群上有2万左右的数据库,其中90%是空数据库(即没有任何表),现在已经执行如下sql查询出了包含表的库,想把没有表的所有空库都删除掉,有什么好的方法
SELECT TABLE_SCHEMA, COUNT(*) AS table_count
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA ORDER BY TABLE_SCHEMA;

我想知道这2w个库是咋建的?因为啥?

SELECT CONCAT(‘drop database ‘,TABLE_SCHEMA,’;’)
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA
having COUNT(*)=0
ORDER BY 1;

查询结果是删库脚本,复制出来执行下就行

2 个赞

我也很好奇这些空库怎么创建的

:grinning:

写个shell脚本删除即可

show databases岂不卡死

这。。。敢问这位兄台是啥公司,2W个数据库? :joy:

用TiDB的大佬们都是什么级别的人物啊,前有12T单表君,这又冒出个2W库,太顶了 :+1:

:+1:同道中人~

1 个赞

2w个库,厉害

估计以前测试tidb库容量时创建的

你这sql语句应该不行,information_schema.TABLES中出现的库名称都是包含表的库,information_schema.SCHEMATA表才包含所有集群所有库的元数据信息

以前测试随便创建的空库,没有及时删除,遗留问题

我已经查询出所有空库了,其实直接执行drop database 库名 就可以了,把所有的空库放到同一个sql脚本中分别执行drop database 库名 就可以了

没试过,2万条数据,应该不至于

99%都是空库

其实空库比较多

伤不起 :joy:

遗留问题