iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql百万级数据迁移的示例分析
  • 249
分享到

Mysql百万级数据迁移的示例分析

2024-04-02 19:04:59 249人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关Mysql百万级数据迁移的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。    

这篇文章将为大家详细讲解有关Mysql百万级数据迁移的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

                           

假如有这么一个场景,开发了一个小程序,趁着双十一活动的热度,一个月后迅速积累了一百多万用户,我们在小程序页面增加了收集fORMid的埋点,用于给微信用户发送模板消息通知。

随着数据量的增大,之前使用的服务器空间开始有点不够用,最近新写了一个专门用于做小程序后台开发的框架,于是想把原来的数据迁移到新系统的数据库。买了一台4核8G的机器,开始做数据迁移。下面对迁移过程做一个简单的记录。

Mysql百万级数据迁移的示例分析

方案选择

mysqldump迁移

平常开发中,我们比较经常使用的数据备份迁移方式是用mysqldump工具导出一个sql文件,再在新数据库中导入sql来完成数据迁移。

试验发现,通过mysqldump导出百万级量的数据库成一个sql文件,大概耗时几分钟,导出的sql文件大小在1G左右,然后再把这个1G的sql文件通过scp命令复制到另一台服务器,大概也需要耗时几分钟。在新服务器的数据库中通过source命令来导入数据,我跑了一晚上都没有把数据导入进来,cpu跑满。

脚本迁移

直接通过命令行操作数据库进行数据的导出和导入是比较便捷的方式,但是数据量较大的情况下往往会比较耗时,对服务器性能要求也比较高。如果对数据迁移时间要求不是很高,可以尝试写脚本来迁移数据。虽然没有实际尝试,但是我想过大概有两种脚本方案。

第一种方式,在迁移目标服务器跑一个迁移脚本,远程连接源数据服务器的数据库,通过设置查询条件,分块读取源数据,并在读取完之后写入目标数据库。这种迁移方式效率可能会比较低,数据导出和导入相当于是一个同步的过程,需要等到读取完了才能写入。如果查询条件设计得合理,也可以通过多线程的方式启动多个迁移脚本,达到并行迁移的效果。

第二种方式,可以结合Redis搭建一个“生产+消费”的迁移方案。源数据服务器可以作为数据生产者,在源数据服务器上跑一个多线程脚本,并行读取数据库里面的数据,并把数据写入到redis队列。目标服务器作为一个消费者,在目标服务器上也跑一个多线程脚本,远程连接redis,并行读取redis队列里面的数据,并把读取到的数据写入到目标数据库。这种方式相对于第一种方式,是一种异步方案,数据导入和数据导出可以同时进行,通过redis做数据的中转站,效率会有较大的提升。

这里你也可以使用Go语言来写迁移脚本,利用其原生的并发特性,可以达到并行迁移数据的目的,提升迁移效率。

文件迁移

第一种迁移方案效率太低,第二种迁移方案编码代价较高,通过对比和在网上找的资料分析,我最终选择了通过mysql的。

select data into outfile file.txt、load data infile file.txt into table

的命令,以导入导出文件的形式完成了百万级数据的迁移。

迁移过程

在源数据库中导出数据文件

select * from dc_mp_fans into outfile '/data/fans.txt';

复制数据文件到目标服务器

zip fans.zip /data/fans.txtscp fans.zip root@ip:/data/

在目标数据库导入文件

unzip /data/fans.zipload data infile '/data/fans.txt' into table wxa_fans(id,appid,openid,uNIOnid,@dummy,created_at,@dummy,nickname,gender,avatar_url,@dummy,@dummy,@dummy,@dummy,language,country,province,city,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy);

按照这么几个步骤操作,几分钟内就完成了一个百万级数据表的跨服务器迁移工作。

注意项

在mysql执行load data infile和into outfile命令都需要在mysql开启了secure_file_priv选项, 可以通过show global variables like ‘%secure%’;查看mysql是否开启了此选项,默认值Null标识不允许执行导入导出命令。

通过vim /etc/my.cnf修改mysql配置项,将secure_file_priv的值设置为空:

[mysqld]  secure_file_priv=''

则可通过命令导入导出数据文件。

  • 导入导出的数据表字段不对应

上面示例的从源数据库的dc_mp_fans表迁移数据到目标数据库的wxa_fans表,两个数据表的字段分别为:dc_mp_fans

Mysql百万级数据迁移的示例分析

wxa_fans

Mysql百万级数据迁移的示例分析

在导入数据的时候,可以通过设置字段名来匹配目标字段的数据,可以通过@dummy丢弃掉不需要的目标字段数据。

关于“Mysql百万级数据迁移的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql百万级数据迁移的示例分析

本文链接: https://www.lsjlt.com/news/70012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql百万级数据迁移的示例分析
    这篇文章将为大家详细讲解有关Mysql百万级数据迁移的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     ...
    99+
    2024-04-02
  • MySQL中数据迁移的示例分析
    这篇文章主要为大家展示了“MySQL中数据迁移的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中数据迁移的示例分析”这篇文章吧。1.关于数据迁...
    99+
    2024-04-02
  • 百万级MySQL的数据量怎么快速完成数据迁移
    这篇文章主要讲解了“百万级MySQL的数据量怎么快速完成数据迁移”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“百万级MySQL的数据量怎么快速完成数据迁移”...
    99+
    2024-04-02
  • IOS数据库升级数据迁移的示例分析
    这篇文章主要介绍IOS数据库升级数据迁移的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!IOS 数据库升级数据迁移的实例详解概要:很久以前就遇到过数据库版本升级的引用场景,当...
    99+
    2024-04-02
  • 如何高效的在Mysql百万级数据量级下迁移到Redis
    如何高效的在Mysql百万级数据量级下迁移到Redis,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。redis协议学习协议的格式为:*<...
    99+
    2024-04-02
  • oracle数据库迁移到MySQL的示例分析
    这篇文章给大家分享的是有关oracle数据库迁移到MySQL的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方式一: 手动方式导入导出手动的方式导入, 就是操作步骤会比较...
    99+
    2024-04-02
  • oracle中数据fs到asm迁移的示例分析
    小编给大家分享一下oracle中数据fs到asm迁移的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!(RedHat&nb...
    99+
    2024-04-02
  • MySQL数据库千万级数据查询和存储的示例分析
    这篇文章主要介绍MySQL数据库千万级数据查询和存储的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!百万级数据处理方案数据存储结构设计表字段设计表字段 not null,因为 null 值很难查询优化且占用额...
    99+
    2023-06-15
  • MySQL百万级数据分页查询优化方案
    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。 ...
    99+
    2024-04-02
  • Mysql数据迁徙方法工具的示例分析
    这篇文章给大家分享的是有关Mysql数据迁徙方法工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法...
    99+
    2024-04-02
  • PHP分批次处理百万级数据
    PHP分批次处理百万级数据解决方案来了,假设数据量是几百万。 1、那么我们要从数据库中读取要进行数据量分批读取,以防变量内存溢出, 2、我们选择数据保存文件格式是csv文件,以方便导出之后的阅读、导入数据库等操作。 3、以防不方便ex...
    99+
    2023-09-16
    php 数据库 excel Powered by 金山文档
  • MySQL百万级数据大分页查询优化的实现
    目录一、MySQL分页起点越大查询速度越慢二、 limit大分页问题的性能优化方法(1)利用表的覆盖索引来加速分页查询(2)用上次分页的最大id优化三、MySQL百万数据快速生成3....
    99+
    2024-04-02
  • React项目迁移Webpack Babel7的示例分析
    这篇文章主要介绍React项目迁移Webpack Babel7的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!这里简单说下 React 项目的一些配置;首先我们新建项目 re...
    99+
    2024-04-02
  • WindowsServer 2012数据库迁移分析
    本篇内容主要讲解“WindowsServer 2012数据库迁移分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“WindowsServer 2012数据库迁移...
    99+
    2024-04-02
  • MySQL百万数据深度分页优化思路解析
    目录业务场景瓶颈再现问题分析回表覆盖索引IOLIMTI 2000,10 ?问题总结解决方案优化前后性能对比业务场景 一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查...
    99+
    2023-05-12
    MySQL数据分页优化 MySQL分页优化百万级数据
  • Mysql数据库百万级数据测试索引效果
    目录Mysql数据库百万数据测试索引一、索引的分类二、使用索引三、百万数据测试索引效果1. 再来创建个测试表2. 插入数据3. 测试查询四、索引使用原则Mysql数据库百万数据测试索...
    99+
    2024-04-02
  • mongodb 数据块的迁移流程分析
    目录1. 基本概念1.1 Chunk(数据块)1.2 Chunk Size(数据块大小)1.3 Migration(数据块迁移)1.4 Migration Thresholds(迁移...
    99+
    2024-04-02
  • Python数据分析之分析千万级淘宝数据
    目录1、项目背景与分析说明2、导入相关库3、数据预览、数据预处理4、模型构建1)流量指标的处理2)用户行为指标3)漏斗分析4)客户价值分析(RFM分析)1、项目背景与分析说明 1)项...
    99+
    2024-04-02
  • Kettle--MySQL生产数据库千万、亿级数据量迁移方案及性能优化
    一、Kettle环境搭建 一、Windows主要用于可视化创建数据迁移用到的ktr转换脚本、kjb作业脚本,以及脚本需要配置的DB2信息、读写性能优化信息等,也可直接在客户端完成不同数据库之间的数据迁移。 测试库表及数据 (1)创建测试库表...
    99+
    2023-09-10
    数据库 linux 服务器
  • MySQL数据库的示例分析
    这篇文章给大家分享的是有关MySQL数据库的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数据库概要数据库(Database)是存储与管理数据的软件系统,就像一个存入...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作