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_schema、iblogfile_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。