首先说明, 这个题目有点大,题目与实际内容不符。
最近几天,在进行数据融合处理时,需要对innodb表(数据以多表形式进行存储,由共享表转为多表,网上资料比较多,不再赘述)的数据进行频繁备份和替换,涉及到innodb数据库表的备份处理。
通过查阅mysql的官方文档,给出两种备份方式:单表备份和使用商业软件进行备份。付费的就不扯了,这里说一下单表备份和恢复的流程:
备份操作:
1。 copy文件*.ibd 和*.frm ,放置到安全环境中进行备份。
恢复时进行如下操作:
2。 执行操作: ALTER TABLE tbl_name DISCARD TABLESPACE;
3。 把之前安全备份的文件*.ibd, *.frm,copy到数据库的相应目录,然后执行:
4。 执行操作: ALTER TABLE tbl_name IMPORT TABLESPACE;
这种处理方式,有个局限就是,只能在相同的DB上进行操作,原来的数据库一旦删除,备份的文件便不能再以如上流程恢复。
如果要对innodb数据库进行备份,流程如下:
1. 关停mysql service; service mysqld stop;
2. copy 所有的*.ibd, *.frm,以及共享表和log文件ibdata*, iblog*,进行安全备份;
3. 进行恢复时, 关停service,并用备份文件将当前数据库文件进行替换,然后重启service即可。
在网上还有一种人工干预方式,恢复单表数据的方式,详细内容见链接:http://www.chriscalender.com/?tag=got-error-1-from-storage-engine
如果您有好的方式,欢迎交流,f1_star@163.com;