MySQL 物理备份恢复到非空数据目录后的多个InnoDB损坏或崩溃

适用于:

MySQL企业版备份版本3.5及以上

MySQL服务器版本4.0及以上

本文信息适用于所有平台。

 

症状

InnoDB引擎依赖于数据和日志文件的逻辑一致性。

 

InnoDB可能会遇到不可预知的行为,包括与来自不同环境的混合的文件损坏有关的崩溃和错误。

 

一个错误的例子:

2015‐03‐18 11:24:44 11904 [Note] InnoDB: Database was not shutdown normally!
2015‐03‐18 11:24:44 11904 [Note] InnoDB: Starting crash recovery.
2015‐03‐18 11:24:44 11904 [Note] InnoDB: Reading tablespace infor mation from the .ibd files...
2015‐03‐18 11:24:44 11904 [ERROR] InnoDB: Attempted to open a previously opened tablespace. 
Previous tablespace test/t uses space ID: 3695 at filepath: ./test/t.ibd.
Cannot open tablespace test/#sql2‐1ab0‐5 which uses space ID: 3695 at filepath: ./test/#sql2‐1ab0‐5.ibd
2015‐03‐18 11:24:44 7fe 914a04720 InnoDB: Operating system error number 2 in a file operation.
InnoDB: Th e error means the system cannot find the path specified.
InnoDB: If you are installing InnoDB, remember that you must creat e
InnoDB: directories yourself, InnoDB does not create them.
InnoDB: Error: could not open single‐table tablespace file ./test/#sql2‐1ab0‐5.ibd

 

原因

备份被还原到有有旧的InnoDB数据或日志文件的目录中。

 

解决方案

保证InnoDB文件之间的一致性最简单的方法就是将备份恢复到空目录中。

 

MySQL Enterprise Backup (MEB) – 执行恢复操作:

Important

  • 当执行一个完整的恢复(例如,当备份数据被用来建立一个新的MySQL服务器或用于替换现有MySQL服务器的所有数据),确保目标数据目录都是干净的,不含旧的或不需要的数据文件(这可能需要手动删除文件位置,通过– datadir 和 –innodb_data_file_path两个选项);否则,将–force选项添加到restore命令来覆盖旧数据。使用–use-tts选项创建的备份恢复不需要同样的清理(在这种情况下,其他要求在第1.4节,“恢复备份创建与–use-TTS选项”应用),通常对恢复部分备份没有必要。

 

参考

http://dev.mysql.com/doc/mysqlenterprisebackup/en/restore.restore.html

Keywords

CRASH; DATABASE; ERROR; MYSQL; RESTORE

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号