将MySQL迁移到另一台新服务器时是否需要ibdata1,ib_logfile0,ib_logfile1文件?

时间:2016-10-23 23:29:07

标签: mysql database migration

我正在将MySQL从运行MySQL 5.0的现有服务器迁移到运行5.6的新服务器。源数据库使用MyISAM和INNODB引擎。它启用了innodb_file_per_table参数。

我已将所有用户数据库数据文件从源服务器复制到目标服务器。不复制MySQL和性能模式数据库。

我不确定是否应该复制ibdata1,ib_logile0,ib_logfile1,或者我应该在我第一次安装MySQL 5.6时使用目标服务器中已经创建的默认值?

我必须使用mysqldump复制而不是二进制转储,并且恢复数据库在4TB时是巨大的。我没有很长的源数据库停机时间,mysqldump将锁定表的时间比复制更长。

2 个答案:

答案 0 :(得分:0)

您可以清除ib_logile0,ib_logfile1但不清除ibdata1。 ibdata1文件包含innodb数据,其中ib_logile *包含日志。

同时检查MySql文档是否建议在主要版本之间复制数据文件?我认为如果你可以获得转储和恢复更好,因为存在一些结构差异。通过这种方式,您可能会遇到一些数据问题。

答案 1 :(得分:0)

您正在考虑进行高级操作,这需要相当多的专业知识,因为它实际上是直接从5.0升级到5.6,可能工作,但不支持

建议的路径是通过每个主要版本升级到5.0到5.1到5.5到5.6。

https://dev.mysql.com/doc/refman/5.6/en/upgrading.html

是的,您需要系统表空间(ibdata1)并且为了避免服务器进入不一致状态,您还应该保留ib_log *文件以及 my.cnf,并且设置兼容那些日志文件。

转储和重新加载是比二进制(文件复制)迁移更好(更安全)的方法,但即使这样,您也可能需要处理" mysql"由于版本之间的结构更改,手动架构。如果您在加载转储文件后立即运行mysql_upgrade,则将5.0转储直接加载到5.6服务器可能工作,以使系统表更新,因为将5.0转储加载到新服务器会破坏它们。

谨慎行事。