1、公司mysql数据库 2个,合计50G+
2、准备将其中一个移到新增数据盘中,做ln -s软链接。
3、apache的服务器,已经停了。准备操作。没曾想apache自己启来了。大量外部数据进来,造成innodb错误。损坏了ibdata1文件。
数据库无法启动了
1-----(SRVFORCEIGNORECORRUPT):忽略检查到的corrupt页。
2-----(SRVFORCENOBACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。
3-----(SRVFORCENOTRXUNDO):不执行事务回滚操作。
4-----(SRVFORCENOIBUFMERGE):不执行插入缓冲的合并操作。
5-----(SRVFORCENOUNDOLOGSCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。
6-----(SRVFORCENOLOG_REDO):不执行前滚的操作。
参考上面,用6启动了。但是无法还原回去了。正常依旧无法启动。
4、研究了三个小时后,发现,可以更名/www/server/data下的 ibdata1 、ib_logfile0、ib_logfile1。(改名,保险。你不改出问题,别说我没提醒),ibdata1 后面还有用呢。
5、重启mysql,起来了 _ 经历辛酸,才明白_的难得。
6、保留,改名:新的 ibdata1_x
7、用老的ibdata1 和 innodb_force_recovery = 6 启动mysql 这时库是只读的。 做备份就好了。备出来的.sql
8、回到新的ibdata1 起来,导入.sql
一切OK . 办法可能是笨了,但是我们完成了。
另外,ln -s 软链接也一并做了。
建库 ——做 ln -s ——导库。 ln -s 也支持导入的。 哈哈。省事了。