前提
测试环境:
- 服务器版本有5.7和8.0.15两个,端口分别为3307和3306,服务名分别为 MySQL57 和 MySQL80 ,同时开启服务;
- 数据库有4个:
5.7版本旧数据,目录为: D:\MySQL Data\MySQL Server 5.7\Data
原8.0.12服务器旧数据,目录为: D:\MySQL Data\MySQL Server 8.0\Data
新安装8.0.15服务器数据,目录为: D:\MySQL Data\8.0.15\Data
新安装5.7服务器数据,目录为: D:\MySQL Data\5.7\Data - 服务器配置文件默认和Data为同一级目录,如,8.0.15的配置文件目录为:D:\MySQL Data\8.0.15\,有三个子项:Data目录、my.ini 和 installer_config.xml
- 使用Navicat 12.1作为客户端
测试内容:
- 使用8.0.15服务器操作8.0.12版本数据库
- 将8.0.12版本数据库移动到8.0.15版本的数据目录下
- 使用8.0.15服务器操作5.7版本数据库
- 将5.7版本数据库移动到8.0.15版本的数据目录下
补充说明:
- 每个测试都是相同条件下完成的,如果修改了配置文件内容,测试完毕后要恢复。
- 修改配置文件后只需重启服务,然后在Navicat中刷新连接即可;若移动数据文件等则需要先关闭服务;最好是一切操作都先关闭服务,操作完成再开启服务。
- Navicat测试不同的服务器要新建不同的连接,而不是使用同一个连接:
测试
测试1:
1.找到8.0.15的配置文件:D:\MySQL Data\8.0.15\my.ini,打开
2.搜索datadir,将其值修改为8.0.12数据库目录:D:\MySQL Data\MySQL Server 8.0\Data,重启服务,使用Navicat新建连接:
端口号:3306,用户名和密码为8.0.15配置的,然后连接
3.连接正常,sql语句测试正常
4.说明版本8是可以通过配置文件指定小版本不同的数据库的;版本5同样适用,不再测试
测试2:
1.关闭MySQL80服务,直接删除8.0.15服务器下的数据目录:D:\MySQL Data\8.0.15\Data,如果想保留新的默认数据库,可以先作备份。这个测试只将完整的data目录移动,并没有使用追加数据的方式。这就要求如果使用新的数据库服务器且需要移动数据目录,必须在安装好之后、修改数据库内容之前将原有数据移动到新的目录。
2.将8.0.12数据目录复制到8.0.15目录下作为数据目录
3.开启服务
4.测试连接,连接正常,sql语句测试正常
5.说明版本8直接移动data目录也是可以实现数据迁移的。版本5不再测试。
测试3:
修改8.0.15服务器的配置文件,将datadir指向原5.7版本的数据目录,结果根本不能启动MySQL80服务,所以,该测试到此完毕。
说明版本8和版本5是不能通过修改配置文件指定数据库的,更不用说移动data目录。实际上两个版本的数据库目录文件有很大区别
测试4:
由测试3知道,不能直接移动目录。这里使用转储SQL文件的方式。对于超大数据文件可能不适用,关于超大文件日后遇到再查找解决方法。
1.MySQL5.7 data目录下有一个my数据库,双击激活其状态,看到有一个users表:
2.在数据库名my上右键,选择转储SQL文件,继续选择结构和数据,如果只选择结构是没有数据的:
3.点击,将会生成一个sql文件,保存到一个位置。
4.在目标服务器8.0.15中新建数据库my,激活状态,右键选择运行sql文件:
5.找到刚刚保存的sql文件,开始:
6.成功后刷新连接,即可看到8.0.15连接的服务器已经存在了5.7的数据:
7.补充说明:转储SQL文件的操作对象只能是数据库不能是连接,因此需要对每个数据库都进行如上的操作;必须要先新建好数据库才能运行SQL文件,否则会报错。