大数据迁移——Python+MySQL
大数据迁移——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相关推荐
- python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...
本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...
- 大数据之数据库mysql优化实战(一)
2019独角兽企业重金招聘Python工程师标准>>> :facepunch: 大数据之数据库mysql优化实战(一) 首先你要有数据,不然怎么测试,几百条就算了,还没跑就完了. 本 ...
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...
- mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
- Mysql ---Sqlserver数据迁移到Mysql(Mysql建表迁移数据)
1 试用了MysqlWorkBench的数据迁移功能 以为能实现:建立跟Sqlserver一样的表结构和视图的功能,sqlserver的数据迁移到mysql 实际上发现:即使勾选了表和视图,实际上却只 ...
- python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...
原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...
- python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...
原标题:2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万! 看了Boss直聘发布的<2017互联网人才趋势白皮书>,奇小酷只有一句话要说,新的一年,希望大家火的像Py ...
- oracle数据迁移到mysql
Kettle7.0实现oracle到mysql数据库迁移(批量全量导入) https://blog.csdn.net/j1231230/article/details/80525922 Kettle ...
- python是一种面向对象的高级语言_为什么入门大数据选择Python而不是Java?
马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我 ...
最新文章
- 数据挖掘的一些经典算法
- 百度腾讯齐刷刷强调“产业+AI”,李彦宏看深,马化腾见远
- 题目1181:遍历链表
- Understanding your audience
- NYOJ--927--dfs--The partial sum problem
- Tomcat8 连接池
- go编译so win10_windows搭建Go语言交叉编译环境
- cgi web 调用多次启动_全面了解CGI、FastCGI、PHPFPM
- ubuntu的MySQL远程数据库连接问题查找
- PyTorch 搭建神经网络 (MNIST)[含注释]
- 利用Office加载项进行持久化控制的6种姿势
- ai的预览模式切换_ai预览快捷键是什么,Adobe Illustrator预览快捷键是什么?
- 在主动要求涨工资这事上,不要学我!从第一份工资800开始说起
- 无线网络有信号显示未连接网络连接服务器,路由器无线网络受限制或无连接怎么办...
- 团队领导力(一)规划+落实
- oracle中vim设置行号,vim的常用操作
- 京东工业冲刺港交所:年营收141亿 GGV与红杉中国是股东
- 终于知道google为什么有时不能用了
- 影评:雨天的水彩画 《爱有天意》观感(转)
- html5查看swf视频格式,如何使用Videojs播放.swf格式文件?
热门文章
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)...
- 在matlab中real函数,matlab2c使用c++实现matlab函数系列教程-real函数
- 【第二篇:测试(开发)工程师的日常】
- 宝能造车 捏软柿子的野蛮人
- 人脸识别门禁的智能化演进之路
- java抽象类列子_Java 抽象类,求个范例
- 4、easy_rsa(2)rsa.py
- 香港出入境政策(更新2023.2.3港府发布会)
- 上海市电子警察分布表
- 基于jsp的零食商城