blog » Database » mysql物理备份恢复表丢失

mysql物理备份恢复表丢失

所谓物理备份,即直接拷贝相关的文件而不是通过mysqldump的方法备份数据库。

还原时将相应的文件拷贝回数据库即可。

基本操作:

cp -r /var/db/mysql5/mydb ~/

之后换台机器再拷贝回去

cp -r mydb /var/db/mysql5/

通过如上的操作对于恢复MYISAM表没有问题,但是想恢复INNODB就危险了,我就遇上数据库中部分INNODB的表全不见了。

分析:

INNODB表的数据是根据配置存放在.ibd文件或者ibdata文件中。主要分为独享表空间和共享表空间的存储方式。使用独享表空间时,文件保存为.ibd,文件存放在数据库目录下(和Myisam一样)。当使用共享表空间时,文件保存在ibdata文件。该文件通过innodb_data_home_dir和innodb_data_file_path两个参数共同配置。如果是只拷贝了数据库目录,而同时innodb的相关文件没拷贝自然就会丢失表了。另外要注意的是即使是独享表空间的方式,也需要拷贝共享表空间配置的相关文件。因为.ibd只是存放表数据,索引数据以及UNDO信息,REDO信息和元数据都是在共享表空间的文件中。

解决:

拷贝所有innodb需要的文件,包括.idb和ibdata以及ib_logfile(用于innodb的日志文件)

相关文章:


RSS 2.0 | leave a response | trackback

发表评论