如何用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 界面检查、修复和优化数据库表。我希望你现在可以很容易地修复您损坏的表使用这个工具。
暂无评论
发表评论