mysql数据迁移有多种方式,最常见的就是先把数据库导出,然后导入新的数据库。拷贝数据目录data是另外一种方式。

尤其是当数据库启动不了,或者大型数据库迁移的时候,可以考虑这个方式。

场景:从老的mysql(mysqlA)迁移到新的mysql(mysqlB)。mysqlA对应的数据路径为:/var/lib/mysql-old,mysqlB对应的数据路径为:/var/lib/mysql

1、停止mysqlB

2、移除 /var/lib/mysql 路径下除 performance_schema文件夹的其余文件。

3、拷贝 /var/lib/mysql-old 路径下所有文件到 /var/lib/mysql,除了 performace_schemaiblogfile_0,iblogfile_1

4、现在/var/lib/mysql下面的文件来源和作用是:

  • performace_schema: ,性能监控,它在5.6及其之前的版本中,默认没有启用,从5.7及其之后的版本才修改为默认启用。
  • 数据库目录,具体存储数据的目录,每个数据库对应一个文件夹,文件夹的名字和数据库的名称一致。
  • ibdata1: ,用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffer和双写buffer。
  • iblogfile_0,iblogfile_1: ,日志文件,被删除了,重启后会重新生成。

5、重启mysqlB