mysql本身的校验机制很强,所以他的ibdata,iblog之间如果匹配不上,会出大问题:
比如强制断电会引起;
比如数据库在更新时,你拷了整个数据库,准备另作他用,结果发现,数据会起不来。
(1)
在强制断电引起的启动不来的问题,我们通常会修改数据库的innodb_force_recovery 方式,先导出数据,然后重建数据库,再导入数据 ,在数据量不大的情况 下,这种都没有问题;而遇到海量的数据时,你的导出导入,理论上是可行的,但实际上会要命。
(2)
所以我们升级了Mysql,让数据库更加强健;
增加了主备,不可能同时坏掉吧?
在A ,B主备情况下,通常,如果坏了一个,只需要拷贝一个数据文件到另一个,修改下uuid,再建立主备就没有问题了。切记在dB关掉的情况下,不然又会出现 ibdata log不一致而无法起来的情况 。
这种一锅端的修复方式 最为省心,只是数据量比较大的情况,比如5000万数据,50G左右的话,拷贝时间就够呛!
当然也要注意 chown -R mysql:mysql data3307 这样的更改组的概念,不然你用root账号去操作,后面mysql权限不够也启动不来。
(3)当然,你还可以新建立数据库后,
通过drop tablesspace ;import table的方式导入原来的海量数据,这样仿佛还比较快呢,。并且这个对于个别表坏掉的情况处理是极为适宜的。
这种方式对于拷贝全量的线上数据也是极合适的,因为线上的数据,在变化,不好全量拷贝,只能一个个表。
来源:oschina
链接:https://my.oschina.net/u/4419131/blog/4295180