简短的问题:
在使用InnoDB引擎创建MySQL安装的定制备份时,是否安全跳过ib_logfile*文件?
定制备份只是将/ var/lib/mysql + /etc/my.cnf的所有(或子集)复制到安全的地方.
据我所知,ib_logfile*文件是由MySQL在启动时重新创建的+文件非常庞大,因此将它们存储在备份中可能并不明智.是的,假设MySQL在备份之前(正确)停止了.
以您描述的方式备份数据库是不安全的.
原因是您无法知道某些数据页是否仍在MySQL服务器的内存中,等待I/O刷新到磁盘.因此,无论是否包含ib_log
文件,复制文件都很有可能复制垃圾.
不要做你正在做的事情.使用mysqlbackup
或InnoDB的热备份产品.
编辑:
阅读Farhan Mashraqi关于InnoDB性能优化的博客文章,他说如果你关闭了MySQL服务器,你可以删除这些ib_log
文件.
InnoDB日志调整大小:不像更改选项和重新启动那么简单.您需要关闭MySQL服务器并确保它正常关闭(检查错误日志以确认错误).然后移开InnoDB日志文件ib_log*.然后启动MySQL服务器并检查错误日志文件以查看它是否成功创建了新的日志文件.
所以,是的,您应该只能对文件进行文件系统复制ibdata
.您不需要包含这些ib_log
文件,因为它们应该在MySQL Server启动时重新创建.但是,我重申,我不建议使用文件系统副本备份数据库.
假设您使用MySQL 5.0以这种方式备份数据库.有一天你需要恢复备份,但到那时你将使用像MySQL 6.5这样的未来版本.这些ib_data
文件在将来的版本中是否仍然使用相同的内部格式?MySQL 6.5会读取你今天备份的那些文件吗?你不能确定.备份格式旨在更加便携.