MySQL的数据迁移

article/2025/9/25 16:59:50

一、前言

数据库的数据迁移是我们经常遇到的问题,如因磁盘空间不够、业务出现瓶颈、项目改造等原因。

二、MySQL数据迁移常用的方法

1、使用第三方迁移工具。
2、数据文件和库表结构直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
3、数据库直接导出,拷贝文件到新服务器上,在新服务器导入。

第一种方案的优点:时间占用短,文件可断点传输,操作步骤少。缺点:新旧服务器中MySQL版本及配置必须相同,可能引起未知问题。

第二种方案的优点:设置完成后传输无人值守,自动完成。缺点:不够灵活,设置繁琐,传输时间长,异常后很难从异常的位置继续传输。

第三种方案的优点:会重建数据文件,减少数据文件的占用空间,兼容性最好,导出导入很少发生问题,需求灵活。缺点:使用传统导出导入时间占用长,数据较大时,容易发生导入中断。

1.1、第三方迁移工具,可以参考:第三方工具迁移数据

2.1、拷贝方法和挂载步骤可以参考:先备份,然后利用服务器的xshell中Xtfp传输备份文件到另一台服务器,之后执行1.1.4的方法

3.1、数据库直接导出,可以参考:导出数据库

3.1.1、表的数据量小,且表结构不变,可以选择直接导出表的数据和表的结构。
3.1.2、表的数据量大,且需要改动表结构,可以选择单独导出表的结构,之后使用MySQL的SELECT INTO OUTFILE 、LOAD DATA INFILE快速导出导入数据,可以看MySQL官方文档,该方法比一次性插入一条数据性能快20倍。

3.1.2.1、利用MySQL自身的语句快速导出导入数据

SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。

select [列名] from table [where 语句] into outfile ‘目标文件’ [option]

该语句分为两个部分。前半部分是一个普通的select语句,后半部分是导出数据。‘目标文件’参数是将查询的记录导出到哪个文件;‘option’参数为选参数选项,可能的取值有:
1、FIELDS TERMINATED BY ‘字符串’:设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。
2、FIELDS ENCLOSED BY ‘字符’:设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。
3、FIELDS OPTIONALLY ENCLOSED BY ‘字符’:设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。
4、FIELDS ESCAPED BY ‘字符’:设置转义字符,只能为单个字符。默认值为“\”。

5、LINES STARTING BY ‘字符串’:设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
6、 LINES TERMINATED BY ‘字符串’:设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。

提示:

1、FIELDS和LINES两个子句都是自选的,但是如果两个子句都被指定了,FIELDS必须位于LINES的前面。
2、该语法中的“目标文件”被创建到服务器主机上,因此必须拥有文件写入权限(FILE权限)后,才能使用此语法。同时,“目标文件”不能是一个已经存在的文件。
3、SELECT…INTO OUTFILE语句可以非常快速地把一个表转储到服务器上。如果想要在服务器主机之外的部分客户主机上创建结果文件,则不能使用SELECT…INTO OUTFILE语句(或者创建文件后,再用第三方工具导出到客户主机上)。
4、不管是SELECT INTO…OUTFILE,还是LOAD DATA …INFILE,文件都需要存放在指定的路径中,参考:secure_file_priv参数说明

3.1.2.2、实例:

使用SELECT…INTO OUTFILE语句来导出example数据库下employee表的记录。其中,字段之间用“,”隔开,字符型数据用双引号括起来。SQL代码如下:

SELECT ... FROM example.employee   INTO OUTFILE "/path/to/st6.txt"  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ' " '  LINES TERMINATED  BY '\n';

注意:如果表中包含中文字符,使用上面的语句会输出乱码,可以加入CHARACTER SET gbk语句即可解决这一个问题。修改SQL代码如下:

SELECT ... FROM example.employee   INTO OUTFILE "/path/to/st6.txt"  CHARACTER SET GBK FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ' " '  LINES TERMINATED  BY '\n';

导出数据的文本内容

在这里插入图片描述

导入表数据

LOAD DATA INFILE"/path/to/st6.txt" INTO TABLE  example.employee  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED  BY '\n'

好处:导入数据的速度会提高三倍左右,不过要注意的是它进行导出时的速度与mysqldump的方式来导出的速度没有太大的区别
注意:

  1. 用 load data 是较快的方法
  2. 大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引。 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了。
  3. 另外,如果是myisam表,则最好是导入之前先禁用表的索引,导完之后再启用;或者是一开始不创建索引,导完之后再创建,都会比导入的同时更新索引来的快很多

http://chatgpt.dhexx.cn/article/bxFATePy.shtml

相关文章

你觉得做程序员期间最开心的是什么?

不管是新入行的程序员还是工作多年的程序员,都会想一个问题,在这份工作中最开心的事情是什么呢?是无bug还是工作中发生的其他一些事情? 今天我们邀请了 3 名淘系技术的工程师,结合他们真实的学习工作经历,给…

限时免费下载《程序员面试宝典》.pd

社会竞争很残酷、面试则是一场表演,企业永远喜欢可以随机应变、聪明的求职者。 程序员的面试不同于一般岗位的面试。 当你在羡慕程序员十几万美金年薪的同时,你却不知道他们在应付面试时,要经历的重重磨难和压力。 程序员面试中,技…

互联网行业职位介绍 —— OD、PM、RD、FE、UE、QA、OP、DBA...

各种职位的简称在百度上一搜一大堆,我也只是根据自己公司的习惯,把常用的总结下来: 1、管理层 CEO – Chief Executive Officer 首席执行官 VP – Vice President 副总裁 HRD – Humen Resource Director 人力资源总监 OD – Operations…

浩鲸科技是外包公司吗_广东电商外包服务公司是什么意思_聚财猫科技

首页 > 新闻中心 发布时间:2020-11-12 02:11:12 导读:聚财猫科技为您提供广东电商外包服务公司是什么意思的相关知识与详情: 这种类型的公司缺乏运营团队的能力和技能。 在与客户的对话中,不强调团队的人数,合作伙…

阿里数据产品经理工作(总结篇):数据PD,做牛做马

送给真正的互联网人一顿干货早餐 【小咖导读】文自 听雨-悟禅 博客,PD(指产品经理,下同)本身就是在做牛做马,关系圈异常复杂。数据PD也不例外。而且打交道的人更多。以下是作者用PPT绘制的数据产品经理关系圈。 科普&a…

DevOps笔记-05:IT行业中BA、SM、PO、PM、PD、Dev、Ops、QA都是什么角色

1、BA (1)定义 BA是Business Analys缩写,即业务需求分析师。在互联网公司里,BA的角色就是产品经(PM),只是BA要承接某个很具体的业务或者领域,比如银行也有自己的IT部门,银行IT里的产…

Java空指针异常:NullPointerException

Java空指针异常(NullPointerException):空指针异常属于运行时异常(RuntimeException),即:编译会通过,但运行时会报异常。当你调用某个实例对象的方法时,如果该实例对象是…

什么是空指针异常

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。 发生NullPointerExceptio…

空指针异常的原因分析

空指针异常的原因分析: 1.当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 2. 调用空对象的方法时就会抛出 NullPointerException 空指针异常 (对象自己new 或是spring管理的要加Autowired注解) 3.如果该对象是由spring容器进行依赖注入(DI…

如何有效的避免空指针异常

空指针异常如何避免,听听老司机分享一些条件反射式的使用经验。 | 喜欢听我叨叨的,直接看视频 | 01 开篇 空指针异常在新手程序员里面非常常见,不只是新手,所有初级、中级甚至是高级都不可避免。 本期主题的由来是因为有这样一位…

关于Integer的空指针异常

关于Integer的空指针异常 问题来源 当用Integer来接收数据后,需要将数据与0进行比较,看是不是0,但是如果Integer接收的数据是null的时候,就会报空指针异常。 public static void main(String[] args) {Integer a null;System.…

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行Java开发,可以说…

Java 空指针异常的若干解决方案

Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括…

NullPointerException(空指针异常)

NullPointerException(空指针异常)对象为Null还拿来使用,就会出现此异常。 多的不说少的不聊,直接上代码!!! public class Main {public static void main(String[] args) {String str1 "";String str2 n…

Java中的空指针异常

Java中的空指针异常 一、什么是空指针异常? 1.1 异常的分类 NullPointerException是RuntimeException的一个子类,这是运行时异常,在编译时期不会触发。 1.2 空指针异常引入 Java是没有指针的,所以我们常说"Java 指针&quo…

PageRank算法介绍

互联网上有数百亿个网页,可以分为这么几类:不含有用信息的,比如垃圾邮件;少数人比较感兴趣的,但范围不是很广的,比如个人博客、婚礼公告或家庭像册;很多人感兴趣的并且十分有用的,比…

PageRank 算法(从原理到实现)

spark 系列 Spark 核心原理及运行架构 Spark RDD详解 Spark 常用算子大全 Spark SQL 详解 Spark GraphX 图计算入门基础 Spark PageRank 算法——从原理到实现 Spark PageRank spark 系列前言算法来源算法原理排名泄露排名下沉排名上升算法证明 PR值计算方法幂迭代法特征…

浅谈PageRank算法

TOC[目录] PageRank 是 由佩奇(Larry Page)等人提出 的 Google 最为有名的技术之一 PageRank 是一种基于随机游走 的 评价网站权值的算法 总之, PageRank 是一种十分重要的算法 不管在学术界 还是在产业界 Node Similarity(节点相似度) 假设在一个图G(V,E)中研究两…

PageRank算法 到 textRank

1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该 算法也成为其他搜索引…

PageRank算法浅析

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992 本文是根据 Topic-Sensitive PageRank Google’s PageRank:The Math Behind the Search Engine http://blog.csdn.net/hguisu/article/details/7996185 http://blog.codinglabs.…