大数据迁移——Python+MySQL

  • 引言
    • 方法一:数据库复制 ——最糟糕
    • 方法二:数据库转存——最蜗牛
    • 方法三:数据库备份——最尬速
    • 方法四:内存操作Python+MySQL——最火箭

引言

最近,因为课题组更换服务器,有一批数据需要做数据迁移,数据量大约150G-200G,一部分数据存储在原来服务器的MySQL上,另外一部分数据以txt文件存储在硬盘上。现在,我需要将这些数据全部迁移存储在新服务器的MySQL上,方便后期课题的分析处理以及大量的查询需求。

这个看似简单的任务,却给我带来了很多困扰,转存效率极其低下。我查阅资料发现网络上关于这方面的资料很少,因此记录下这次经历,与大家分享。

方法一:数据库复制 ——最糟糕

我们在MySQL数据库中,遇到数据迁移需求时,最简单直接的想法就是直接复制,当表的数据量较小时,这个操作很方便,但是当数据量很大时,这是一个极其错误的操作,原因如下:
1)一旦复制开始,就只能等待,无法知道执行进度;
2)由于表中数据量很大时,整个过程会很耗时,几十分钟到几小时不等;
3)整个过程不可控,遇到网络故障连接丢失,简直就是灾难。

方法二:数据库转存——最蜗牛

另外,我想到通过MySQL数据库中转存的方式迁移数据。想法就是,先将数据库中的数据转存为中间形式,再在写入到新的数据库中,主要有两种方式:
1)转入转出,先将数据转出为txt文件,再通过load data命令导入到新数据库中。我发现,数据导入很快,8000W条数据导出到txt文件大概20min,但是导入速度非常非常慢,堪比蜗牛速度,我用的Navicat客户端,1s操作几百条条数据。另外,我还有约120G的txt文件数据需要写入数据库!!!
2) SQL文件转存,先将数据转存为SQL文件,再在新数据库中直接运行SQL文件。这个操作也是蜗牛速度,放张图大家感受下绝望。

方法三:数据库备份——最尬速

然后,我查了资料想到了数据库备份再恢复的方法,通过将MySQL数据库中选定的数据库或表备份再恢复进行数据迁移。8000W记录的数据表(8G)备份耗时约30-50min,备份恢复耗时7-8hour,这个速度比之前快了很多,但是一想这才完成了1%,这个速度让人非常尴尬,心态炸裂

方法四:内存操作Python+MySQL——最火箭

尝试过前3种方法后,我一直在思考,是什么限制了MySQL的写入速度,它的导出速度还是很快的。数据转存时,服务器的CPU,内存和硬盘IO占用都不高,那么多闲置的资源,简直浪费。然后,我就想到内存操作,MySQL的内存操作还是很快的,只是写回硬盘耗时。方案如下:通过python的pandas将文件数据分块读入内存,再通过批量写入操作写入数据库。经过测试,发现效率非常可以,可以达到1s十几万条的写入速度,速度堪比火箭速度。而且,可以根据个人电脑或服务器配置,设定一次性读入内存的数据量大小,并且可以通过代码优化进一步提高速度。

参考博客:
Working efficiently with Large Data in pandas and MySQL (or any other RDBMS)

大数据迁移——Python+MySQL相关推荐

  1. python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...

    本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...

  2. 大数据之数据库mysql优化实战(一)

    2019独角兽企业重金招聘Python工程师标准>>> :facepunch: 大数据之数据库mysql优化实战(一) 首先你要有数据,不然怎么测试,几百条就算了,还没跑就完了. 本 ...

  3. ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...

    如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...

  4. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

  5. Mysql ---Sqlserver数据迁移到Mysql(Mysql建表迁移数据)

    1 试用了MysqlWorkBench的数据迁移功能 以为能实现:建立跟Sqlserver一样的表结构和视图的功能,sqlserver的数据迁移到mysql 实际上发现:即使勾选了表和视图,实际上却只 ...

  6. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  7. python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...

    原标题:2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万! 看了Boss直聘发布的<2017互联网人才趋势白皮书>,奇小酷只有一句话要说,新的一年,希望大家火的像Py ...

  8. oracle数据迁移到mysql

    Kettle7.0实现oracle到mysql数据库迁移(批量全量导入) https://blog.csdn.net/j1231230/article/details/80525922 Kettle ...

  9. python是一种面向对象的高级语言_为什么入门大数据选择Python而不是Java?

    马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我 ...

最新文章

  1. 数据挖掘的一些经典算法
  2. 百度腾讯齐刷刷强调“产业+AI”,李彦宏看深,马化腾见远
  3. 题目1181:遍历链表
  4. Understanding your audience
  5. NYOJ--927--dfs--The partial sum problem
  6. Tomcat8 连接池
  7. go编译so win10_windows搭建Go语言交叉编译环境
  8. cgi web 调用多次启动_全面了解CGI、FastCGI、PHPFPM
  9. ubuntu的MySQL远程数据库连接问题查找
  10. PyTorch 搭建神经网络 (MNIST)[含注释]
  11. 利用Office加载项进行持久化控制的6种姿势
  12. ai的预览模式切换_ai预览快捷键是什么,Adobe Illustrator预览快捷键是什么?
  13. 在主动要求涨工资这事上,不要学我!从第一份工资800开始说起
  14. 无线网络有信号显示未连接网络连接服务器,路由器无线网络受限制或无连接怎么办...
  15. 团队领导力(一)规划+落实
  16. oracle中vim设置行号,vim的常用操作
  17. 京东工业冲刺港交所:年营收141亿 GGV与红杉中国是股东
  18. 终于知道google为什么有时不能用了
  19. 影评:雨天的水彩画 《爱有天意》观感(转)
  20. html5查看swf视频格式,如何使用Videojs播放.swf格式文件?

热门文章

  1. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)...
  2. 在matlab中real函数,matlab2c使用c++实现matlab函数系列教程-real函数
  3. 【第二篇:测试(开发)工程师的日常】
  4. 宝能造车 捏软柿子的野蛮人
  5. 人脸识别门禁的智能化演进之路
  6. java抽象类列子_Java 抽象类,求个范例
  7. 4、easy_rsa(2)rsa.py
  8. 香港出入境政策(更新2023.2.3港府发布会)
  9. 上海市电子警察分布表
  10. 基于jsp的零食商城