当前位置:网站首页>300M级mysql数据库跨版本迁移流程
300M级mysql数据库跨版本迁移流程
2022-08-02 04:24:00 【洋滔】
还是公司要更换服务器,所以要把数据库迁移到新的服务器上,导出的sql文件大小在300M左右,说大不大说小不小,但是使用常规的迁移操作会出现各式各样的错误,最终经过种种试错,找到了完美的解决方案。
在继续下文前,对服务器进行统一标注,老的服务器为A(mysql版本5.6),本地服务器为B(mysql版本5.7),新的服务器为C(mysql版本8.0)
方案1:
从A导出数据库文件,然后将文件拷贝到本地服务器B,在B上远程连接到C的数据库,然后进行导入操作,在经过漫长的等待后,出现了报错,报错为:1041 Out of memory; check if mysqld or some other process uses all available和mysql报错,根据报错内容大概意思是mysql进程超过了可用内存,还有mysql插入语句的报错,这种方案基本可以pass
方案2:
把数据库文件打开,复制mysql语句,然后连接C的数据库进行新建查询,以手动执行的方式进行导入,发现经过一段时间等待后依然是报错:不过没有了1041报错,而是sql语句报错,为什么会报错呢,因为通过navicat新建查询,有mysql代码行数限制,虽然我们粘贴过去的是全部代码,但会直接被截取到指定行,这样就导致了报错,方案pass
方案3:
既然navivat有代码量限制,那么换个连接工具呢,在C服务器上安装phpmyadmin,重复方案2的内容,发现依然存在同样的问题,无法完全手动执行代码,尝试导入数据库压缩文件,发现最大只能为50M,放弃,方案pass
方案4:
导入文件报错,手动执行不能全部执行,那我们复制粘贴表呢,在B上同时连接到A和C,然后先全部选择A的数据库所有表,然后点击复制,再打开C的数据库,点击粘贴,等过很久很久,发现卡到5%上,直接给卡死,关闭navicat都关闭不掉(这里怀疑是mysql5.7失去链接的原因),当然还是一样走不通
最终方案:
和方案4内容一样,只不过是在A上操作,就是在A上使用navicat连接到C的数据库,然后执行复制粘贴操作,进度条一直在增加,并且最终执行100%,完成了数据库的迁移,但是发现执行完后,对比原来的数据库发现少了70多个表,应该复制的是384个,但是实际只有310多个,难道是复制粘贴也有数量限制吗,不管了,被这个搞得头晕脑大了,直接对比发现差异表,再次复制粘贴,妥妥的从1%到100%,到此把所有的数据表成功从A迁移到C。
总结:
在迁移300M的数据库文件时,我们要使用被迁移的数据库服务器去连接最终服务器,然后使用复制粘贴的方法进行迁移,这样才能达到最好的稳定性,而不至于出现不可思议的错误,这次的三个服务器数据库版本都不一样,如果B的版本和A的版本一致,那么是不是使用方案1就可以成功了呢?
边栏推荐
猜你喜欢
随机推荐
无主复制系统(3)-Quorum一致性的局限性
Minecraft 1.18.1, 1.18.2 module development 23.3D animation armor production
STM32 OLED显示屏--SPI通信知识汇总
洛谷P2670扫雷游戏
ffmpeg基本命令
Unreal回放系统剖析(上)
JDBC再回顾
Scala basics [common method supplement, pattern matching]
力扣练习——45 二叉树的锯齿形层次遍历
C语言可以应用在哪些领域?
8月1日“海豹数藏”将全网首发民族英雄林则徐《四行行书》数字藏品!
多主复制的适用场景(2)-需离线操作的客户端和协作编辑
Camtasia 2022简体中文版屏幕录像和视频编辑软件
数据可视化之百变柱状图
批量--09---批量读文件入表
复制延迟案例(1)-最终一致性
P1012 [NOIP1998 提高组] 拼数
并发性,时间和相对性(1)-确定前后关系
Deep Blue Academy - Fourteen Lectures of Visual SLAM - Chapter 4 Homework
无主复制系统(2)-读写quorum