3

简短的问题:
在使用 InnoDB 引擎创建 MySQL 安装的定制备份时跳过 ib_logfile* 文件是否安全?

定制备份只是将所有(或部分)/var/lib/mysql + /etc/my.cnf 复制到安全的地方。

据我所知,ib_logfile* 文件是由 MySQL 在启动时重新创建的 + 这些文件非常大,因此将它们存储在备份中可能不明智。是的,假设 MySQL 在备份之前(正确地)停止了。

4

1 回答 1

7

以您描述的方式备份数据库是不安全的。

原因是您无法知道某些数据页是否仍在 MySQL 服务器的内存中,等待 I/O 刷新到磁盘。因此,无论您是否包含ib_log文件,复制文件都有很大的机会复制垃圾。

不要做你正在做的事情。使用mysqlbackup或 InnoDB 的Hot Backup产品。

编辑:

阅读 Farhan Mashraqi 的关于InnoDB 性能优化的博客文章,他说如果你关闭了 MySQL 服务器ib_log,你可以删除这些文件。

InnoDB 日志调整大小:并不像更改选项和重新启动那么简单。您需要关闭 MySQL 服务器并确保它正常关闭(检查错误日志以确认错误)。然后移走 InnoDB 日志文件 ib_log*。然后启动 MySQL 服务器并检查错误日志文件,看看它是否成功创建了新的日志文件。

所以是的,您应该只能对文件进行文件系统副本ibdata。您不需要包含这些ib_log文件,因为它们应该在 MySQL 服务器启动时重新创建。但是,我重申,我不建议使用文件系统副本备份数据库。

假设您今天使用 MySQL 5.0 以这种方式备份数据库。有一天,您需要恢复备份,但到那时您将使用一些未来版本,例如 MySQL 6.5。这些ib_data文件在将来的版本中是否仍使用相同的内部格式?MySQL 6.5 会读取您今天备份的那些文件吗?你不能确定。备份格式旨在更便携。

于 2008-11-19T02:23:05.820 回答