停止mysql服务
删除ibdata1, ib_logfile0, ib_logfile1
删除所有有关的数据库目录,比如我以前有个test_abc的库,就把mysql下的test_abc删除掉
重启数据库,貌似一切正常,也能新建数据库,新建表,也能进mysql,和information_schema库
然后全都可以读取,user表和那些help表那些数据也都正常唯一不正常的,就是:mysql的proc表和information_schema库中的ROUTINES表还都保留着删除掉的库的存储过程和函数(以后要重建所有数据库,这些会被新建的同名的存储程序覆盖掉)这样重建我总觉得太暴力了点,也怕有隐患,mysql自己有没有什么机制,可以reset到刚安装状态的?
删除ibdata1, ib_logfile0, ib_logfile1
删除所有有关的数据库目录,比如我以前有个test_abc的库,就把mysql下的test_abc删除掉
重启数据库,貌似一切正常,也能新建数据库,新建表,也能进mysql,和information_schema库
然后全都可以读取,user表和那些help表那些数据也都正常唯一不正常的,就是:mysql的proc表和information_schema库中的ROUTINES表还都保留着删除掉的库的存储过程和函数(以后要重建所有数据库,这些会被新建的同名的存储程序覆盖掉)这样重建我总觉得太暴力了点,也怕有隐患,mysql自己有没有什么机制,可以reset到刚安装状态的?
要么就一个个drop 好了;
我这么做,主要是因为,常常数据库损坏了以后,我即使innodb_force_recovery=6了,一"drop database xxx"也会出错,无奈之下才会想到这个办法
1 drop所有库,mysql库除外
2 删除所有innodb表空间文件
innodb_force_recovery=6 很多没法写了,出错正常。1 mysql服务器运行时,drop所有myisam库或表,mysql库除外
2 服务器停止时,删除所有innodb表空间文件
即可。
之后,出了问题,如你暴力方式所说,全删,把mysql目录复原即可。
很简单,把 datadir 下的这三个文件ibdata1, ib_logfile0, ib_logfile1全部删除
然后再把除mysql文件夹外的所有其它文件夹删除。