如何用Mysqlcheck检查和修复 MySQL 数据库

如何检查和修复 MySQL 数据库

您需要知道如何检查和修复 MySQL 数据库或表时,您的网站排除故障,因为他们可能已经变得腐败。Mysqlcheck 命令是一个维护工具,可用于从命令行检查、修复、分析和优化多个表。使用 mysqlcheck 的最佳特性之一是,您不需要停止 MySQL 服务来执行数据库维护。

在本教程中,我们将向您展示如何检查/修复 MySQL 数据库和表。

注意: 建议在执行数据库修复操作之前对数据库进行备份。

Mysqlcheck 的基本语法

Mysqlcheck 的基本语法如下所示:

mysqlcheck [OPTION] DATABASENAME TABLENAME -u root -p

option中有以下常用选项:

-c, --check (检查表);

-r, --repair(修复表);

-a, --analyze (分析表);

-o, --optimize(优化表); //其中,默认选项是-c(检查表)

检查 MySQL 数据库中的特定表

在某些情况下,您需要检查特定数据库中的特定表。在这种情况下,你可以使用以下语法:

mysqlcheck -c databasename tablename -u root -p

例如,通过运行以下命令来检查 books 数据库中的 authors 表:

mysqlcheck -c books authors -u root -p

你应该得到以下输出:

 books.authors                                      OK


检查 MySQL 数据库中的所有表

如果要检查特定数据库中的所有表,请使用以下语法:

mysqlcheck -c databasename -u root -p

例如,通过运行以下命令检查图书数据库中的所有表:

mysqlcheck -c books -u root -p

你应该得到以下输出:

 Enter password:  
 books.accountant                                   OK
 books.authors                                      OK
 books.writer                                       OK


检查和优化所有表和所有 MySQL 数据库

您可以使用以下命令检查所有表和所有数据库:

mysqlcheck -c -u root -p --all-databases

输出:

 Enter password:  
 books.accountant                                   OK
 books.authors                                      OK
 books.writer                                       OK
 guest.MyGuests                                     OK
 movies.netflix                                     OK
 mysql.columns_priv                                 OK
 mysql.component                                    OK
 mysql.db                                           OK
 mysql.default_roles                                OK
 mysql.engine_cost                                  OK
 mysql.func                                         OK
 mysql.general_log                                  OK
 mysql.global_grants                                OK
 mysql.gtid_executed                                OK
 mysql.help_category                                OK
 mysql.help_keyword                                 OK
 mysql.help_relation                                OK
 mysql.help_topic                                   OK
 mysql.innodb_index_stats                           OK
 mysql.innodb_table_stats                           OK
 mysql.password_history                             OK
 mysql.plugin                                       OK
 mysql.procs_priv                                   OK
 mysql.proxies_priv                                 OK
 mysql.role_edges                                   OK
 mysql.server_cost                                  OK
 mysql.servers                                      OK
 mysql.slave_master_info                            OK
 mysql.slave_relay_log_info                         OK
 mysql.slave_worker_info                            OK


您可以使用以下命令优化所有表和所有数据库:

mysqlcheck -o root -p --all-databases

输出:

 Enter password:  
 books.accountant
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 books.authors
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 books.writer
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 guest.MyGuests
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 movies.netflix
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 mysql.columns_priv
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 mysql.component
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 mysql.db
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 mysql.default_roles
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK
 mysql.engine_cost
 note     : Table does not support optimize, doing recreate + analyze instead
 status   : OK


在上面的输出中,您应该看到“ Table does not support optimize”,这意味着 InnoDB 表不支持这个选项。

修复 MySQL 数据库

要修复会计表中的图书数据库,请运行以下命令:

mysqlcheck -r books accountant -u root -p

输出:

 mysqlcheck -r books accountant -u root -p
 Enter password:  
 books.accountant                                   OK


要修复图书和电影数据库中的所有表,请运行以下命令:

mysqlcheck -r --databases books movies -u root -p

输出:

 Enter password:  
 books.accountant                                   OK
 books.authors                                      OK
 books.writer                                       OK
 movies.netflix                                     OK


要检查和修复所有数据库中的所有表,请运行以下命令:

mysqlcheck --auto-repair --all-databases -u root -p

输出:

 Enter password:  
 books.accountant                                   OK
 books.authors                                      OK
 books.writer                                       OK
 guest.MyGuests                                     OK
 movies.netflix                                     OK
 mysql.columns_priv                                 OK
 mysql.component                                    OK
 mysql.db                                           OK
 mysql.default_roles                                OK
 mysql.engine_cost                                  OK
 mysql.func                                         OK
 mysql.general_log                                  OK
 mysql.global_grants                                OK
 mysql.gtid_executed                                OK
 mysql.help_category                                OK
 mysql.help_keyword                                 OK
 mysql.help_relation                                OK
 mysql.help_topic                                   OK
 mysql.innodb_index_stats                           OK
 mysql.innodb_table_stats                           OK
 mysql.password_history                             OK
 mysql.plugin                                       OK
 mysql.procs_priv                                   OK
 mysql.proxies_priv                                 OK
 mysql.role_edges                                   OK
 mysql.server_cost                                  OK
 mysql.servers                                      OK
 mysql.slave_master_info                            OK
 mysql.slave_relay_log_info                         OK
 mysql.slave_worker_info                            OK
 mysql.slow_log                                     OK
 mysql.tables_priv                                  OK
 mysql.time_zone                                    OK
 mysql.time_zone_leap_second                        OK
 mysql.time_zone_name                               OK
 mysql.time_zone_transition                         OK
 mysql.time_zone_transition_type                    OK


检查,优化,修复表组合命令,请运行以下命令:

mysqlcheck -uroot -p --auto-repair -o databasesname

输出:

重要提示: InnoDB 存储引擎不支持修复。所以你需要将 MySQL 存储引擎从 InnoDB 改为 MyISAM。

用 PHPMyAdmin 检查、修复和优化 MySQL 数据库

您还可以使用 PHPMyAdmin web 界面检查、修复和优化表和数据库。

你可以按照下面的步骤来检查、修复和优化表格和数据库:

1-通过网页浏览器打开 phpMyAdmin 工具,如下所示:

2-在左窗格中选择受影响的数据库。你应该可以在下面的屏幕中看到右边窗格中的所有表:

单击“全部检查”选择所有表。在窗口底部,从菜单中选择“检查表”。你应该在下面的屏幕上看到这些表的摘要:

4-要修复表格,选中所有表格并从菜单中选择修复表格。你应该看到以下页面:

然后你应该得到一个命令被成功执行的确认:

5-要优化表格,选中所有表格,并从菜单中选择优化表格。你应该看到以下页面:

然后你应该得到一个命令被成功执行的确认:

总结

在上面的教程中,我们学习了如何使用 mysqlcheck 命令行工具检查和修复 MySQL 表。我们还学习了如何使用 PHPMyAdmin web 界面检查、修复和优化数据库表。我希望你现在可以很容易地修复您损坏的表使用这个工具。