mysql之MyISAM和InnoDB的备份及恢复策略

[mysql] 2024-05-01 圈点616

摘要:mysql之MyISAM和InnoDB的备份及恢复策略

mysql之MyISAM和InnoDB的备份及恢复策略


MyISAM/InnoDB 备份策略

因为在一个数据库中有可能要同时使用MyISAM和InnoDB两种引擎,因此统一考虑他们的备份/恢复策略。

1、 完整备份采用mysqldump。

2、 增量备份采用bin-log日志。

先执行FLUSH LOGS刷新日志,同步日志缓存到磁盘,关闭当前的日志并产生新的日志文件。

然后拷贝上一次完整备份到一个安全的地方。

注意:对于 Innodb 类型表来说,还需要备份其日志文件,即 ib_logfile* 文件。因为当 Innodb 表损坏时,就可以依靠这些日志文件来恢复。

3、 单表备份采用select into。



InnoDB 表恢复方法

1、 先尝试使用InnoDB的日志自动恢复功能,方法是重启mysql服务。

2、 在一些情况下,明显地数据库损坏是因为操作系统损坏它自己的文件缓存,磁盘上的数据可能完好,最好是首先重启计算机。它可以消除那些显得是数据库页损坏的错误。

如果不行,则采用下面的方法进行恢复。

3、 如果是mysqldump做的完全备份,先恢复完全备份,然后再恢复完全备份后的增量日志备份。

4、 如果是采用select into备份表的话,则采用load data或mysqlimport恢复。

5、 如果是采用二进制冷备份做的完全备份,则先停止mysql服务,覆盖备份的二进制文件,然后执行上次完全备份后的增量日志备份。

6、 注意:InnoDB二进制文件没有MyISAM那么好,必须在相同的浮点数的cpu机器上移植。



MyISAM 表恢复

1、 如果是通过mysqldump备份的,就执行:mysql –u root < 备份文件名。

2、 如果通过mysqlhotcopy或文件冷/热拷贝来备份的,停止mysql服务,使用备份文件来覆盖现有文件。

3、 如果是采用BACKUP TABLE备份的,使用restore table来恢复。因为backup table不会备份索引文件,恢复表注意重建索引。

4、 如果是采用SELECT INTO ...OUTFILE备份的,使用load data恢复数据,也可以使用mysqlimport命令来代替。



使用日志恢复

可以通过mysqlbinlog工具可以恢复二进制日志,可以一次恢复多个日志文件,命令如下:

shell> mysqlbinlog [options] hostname-bin.[0-9]* | mysql

mysqlbinlog命令使用方法见相关文章。



备份策略注意点:

1、一定用--log-bin或甚至--log-bin=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。

如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。

2、定期进行完全备份,使用mysqldump命令进行在线非块备份。

在负载比较低的时候进行,并且建议采用--single-transaction参数来保证事务数据的一致性,同时不影响其他用户的正常读写。

3、完整备份时采用FLUSH LOGS,便于产生增量备份日志。

4、用FLUSH LOGS或mysqladmin flush-logs 刷新日志进行定期增量备份。

5、定期维护表,这样既可以提高性能,并且可以减少数据丢失和出错的可能性。

6、关键表可以另外再做备份,根据需要。


MyISAM  InnoDB  

感谢反馈,已提交成功,审核后即会显示