朋友的mysql数据库无法启动了,让我ssh连接上去修复。看了一下错误信息,有一些mysql内置的系统数据表不见了,可能是被误删了
然后我想办法找回mysql这个数据库啊,我记得mysql编译安装时后可以指定数据目录并执行数据初始化,于是我先备份原来的data目录,再重新做一个data目录,生成mysql系统数据库
mv /usr/local/mysql/data /usr/local/mysql/data_bak
mkdir /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db –user=mysql
chown –R mysql:mysql /usr/local/mysql/data
完成操作之后,
cd /usr/local/mysql/data_bak
mv mysql mysql_bak
cp ../data/mysql .
cd ..
mv data data_init
mv data_bak data
重新启动mysql
mysqld start
启动错误,查看日志:
Failed to open table mysql.event
应该是恢复event里出错误了,于是找到my.cnf,
向[mysqld] 下增加一行,或者修改event_scheduler的值为disabled
event_scheduler=disabled,重新启动,成功。
PS:其实这里涉及到很多东西,比如innode db引擎的数据表恢复跟MyISAM的恢复不一样,还好这次是幸运吧,不用恢复innode的数据表。