centos 如何在所有具有'使用中'表的数据库中搜索

dbf7pr2w  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(134)

我的数据库服务器最近损坏了,我在服务器上有300多个数据库。
我目前正在做的是运行phpmyadmin,并逐个检查所有数据库,以查看是否有任何数据库至少有一个collation中包含in use的数据库要恢复。
如何在collation中至少有一个in use的所有数据库和表中搜索collation
服务器是CentOS 7,我有根访问权限。如果需要,我可以运行PHP脚本,如果你能帮助我与PHP。

更新1

直到现在我才发现我应该运行这些查询来使用数据库并显示表状态:

Use DatabaseName;
show TABLE STATUS;

它显示所有表的状态,包括损坏的表:

| 2022-04-05 20:31:19 | utf8_persian_ci   |     NULL |                |                                                                  | 288230376151710720 | N         |
| users            | NULL   |    NULL | NULL       | NULL |           NULL |        NULL |              NULL |         NULL |      NULL |           NULL | NULL                | NULL| NULL                | NULL              |     NULL | NULL           | Table 'db_name.users' doesn't exist in engine            |               NULL | NULL      |

我需要grep或将其通过管道传输到另一个文件,以检查并列出所有文件。

cwdobuhd

cwdobuhd1#

您 可以 修改 此 shell 脚本 以 供 使用 :
mysql - N 取消 标 头 grep - v E " . .| .. " 排除 系统 数据 库

root@localhost:~# mysql -N -e "SHOW DATABASES" | grep -v -E "mysql|information_schema|performance_schema" |
> while read dbs
> do
>   echo "CHECK DATABASE " $dbs
>. # your command
> done

中 的 每 一 个
输出 :

CHECK DATABASE  bernd
CHECK DATABASE  sys

格式
使用 2 个 命令 :

mysql -N -e "SHOW DATABASES" | grep -v -E "mysql|information_schema|performance_schema" |
while read dbs
do
  echo "CHECK DATABASE " $dbs;
  mysql -N -e "USE $dbs; SHOW TABLE STATUS;"
done

格式

相关问题