问题背景:一个项目系统环境是PHP+MySQL,服务器位于工业区里,不定时停电。系统使用中断电,经常导致MySQL数据表出错,需要批量检查并修复数据表。
MySQL自带数据表修复程序 mysqlcheck.exe,可以在cmd下使用以下命令批量修复指定数据库的所有表:
(MySQL目录):\bin\mysqlcheck.exe --auto-repair (数据库名) -u(账户) -p(密码)
或使用 --all-databases 命令修复所有数据库
(MySQL目录):\bin\mysqlcheck.exe --auto-repair --all-databases -u(账户) -p(密码)
若要将运行结果输出到日志文件,可使用在末尾添加 >> (输出文件路径)
(MySQL目录):\bin\mysqlcheck.exe (数据库名) -u(账户) -p(密码) >> log.txt
那回到该项目的问题,解决方案是写一个批处理文件(bat),设置开机启动时执行,那就能每次断电重启后自动修复MySQL的数据表。
@echo off
:: 检查并自动修复mysql数据库
:: 记录结果文件文件路径
set log_path=D:\MySQL\logs\mysqlcheck\%date:~0,4%\%date:~0,10%\
:: 执行检查并自动修复所有数据库
D:\MySQL\bin\mysqlcheck.exe --auto-repair --all-databases -uroot -p123456 >> %log_path%