msh158 2013-10-12 03:24 采纳率: 0%
浏览 864

mysql 表检及自动修复测脚本

我想写一个bat脚本,来检测哪些表损坏了,并能根据检测到的结果对损坏的表进行自动关机修复。用mysqlcheck不行,我的存储引擎是innoDB

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 19:35
    关注

    该回答引用ChatGPT-3.5

    可以使用以下步骤来编写一个检查和修复损坏的InnoDB表的bat脚本:

    • 首先,使用mysqlcheck命令检查所有的InnoDB表,将检查结果输出到一个文本文件中:
      mysqlcheck --defaults-file=/path/to/my.cnf --all-databases --auto-repair --optimize 2> /path/to/check_results.txt
      
      这里使用了--defaults-file选项指定MySQL配置文件的路径,--all-databases选项检查所有的数据库和表,--auto-repair选项自动修复损坏的表,--optimize选项优化表的性能,2> /path/to/check_results.txt将错误信息输出到文本文件中。
    • 然后,使用grep命令从文本文件中筛选出损坏的表的列表:
      grep -iE "error|warning|corrupt" /path/to/check_results.txt > /path/to/corrupted_tables.txt
      
      这里使用了grep命令来查找包含"error"、"warning"或"corrupt"关键字的行,将结果输出到一个文本文件中。
    • 最后,使用MySQL命令行工具来修复损坏的表:
      mysql --defaults-file=/path/to/my.cnf -e "SET GLOBAL innodb_fast_shutdown = 0; shutdown;"
      
      这里使用了mysql命令来连接到MySQL服务器,并使用-e选项执行一条SQL语句。SET GLOBAL innodb_fast_shutdown = 0;将innodb_fast_shutdown参数设置为0,以确保MySQL正常关闭并刷新所有未写入磁盘的事务日志。然后,使用shutdown命令关闭MySQL服务器。

    完整的脚本如下所示:

    @echo off
    set MYSQL_CONFIG_FILE=/path/to/my.cnf
    mysqlcheck --defaults-file=%MYSQL_CONFIG_FILE% --all-databases --auto-repair --optimize 2> /path/to/check_results.txt
    grep -iE "error|warning|corrupt" /path/to/check_results.txt > /path/to/corrupted_tables.txt
    for /f "tokens=1" %%a in (/path/to/corrupted_tables.txt) do (
      mysql --defaults-file=%MYSQL_CONFIG_FILE% -e "SET GLOBAL innodb_fast_shutdown = 0; shutdown;"
      echo Repairing table %%a...
      mysqlcheck --defaults-file=%MYSQL_CONFIG_FILE% --databases %%a --auto-repair --optimize
    )
    echo Done.
    

    注意:在使用脚本之前,请将文件路径和MySQL配置文件的路径替换为您自己的路径。此脚本仅适用于Windows操作系统。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog