如何在所有具有“正在使用”的数据库中搜索 table
How to search in all databases having `in use` table
我的数据库服务器最近坏了,我服务器里有300多个数据库。
我现在的做法是运行phpmyadmin
,所有的数据库一一检查,看有没有至少一个数据库有in use
在collation
恢复。
如何在所有数据库中搜索 collation
并且 table 在 collation
中至少有一个 in use
?
服务器是CentOS 7,我有root权限。如果需要,我可以 运行 PHP 编写脚本,如果你能帮助我 PHP。
更新 1
直到现在我发现我应该运行这些查询来使用数据库并显示table状态:
Use DatabaseName;
show TABLE STATUS;
它显示所有 table 的状态,包括损坏的状态:
| 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
或将其通过管道传输到另一个文件以检查并列出所有文件。
您可以修改此 shell 脚本以供您使用:
mysql -N 抑制 header
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
我的数据库服务器最近坏了,我服务器里有300多个数据库。
我现在的做法是运行phpmyadmin
,所有的数据库一一检查,看有没有至少一个数据库有in use
在collation
恢复。
如何在所有数据库中搜索 collation
并且 table 在 collation
中至少有一个 in use
?
服务器是CentOS 7,我有root权限。如果需要,我可以 运行 PHP 编写脚本,如果你能帮助我 PHP。
更新 1
直到现在我发现我应该运行这些查询来使用数据库并显示table状态:
Use DatabaseName;
show TABLE STATUS;
它显示所有 table 的状态,包括损坏的状态:
| 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
或将其通过管道传输到另一个文件以检查并列出所有文件。
您可以修改此 shell 脚本以供您使用:
mysql -N 抑制 header 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