MySQL数据库迁移快速导出导入大量数据

数据库迁移是我们经常可遇到的问题,对于少量的数据,迁移基本上不会有什么问题。生产环境中,有以下情况需要做迁移工作:

  • 磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺;
  • 业务出现瓶颈。比如项目中采用单机承担所有的读写业务,业务压力增大,不堪重负。如果 IO 压力在可接受的范围,会采用读写分离方案;
  • 机器出现瓶颈。机器出现瓶颈主要在磁盘 IO 能力、内存、CPU,此时除了针对瓶颈做一些优化以外,选择迁移是不错的方案;
  • 项目改造。某些项目的数据库存在跨机房的情况,可能会在不同机房中增加节点,或者把机器从一个机房迁移到另一个机房。再比如,不同业务共用同一台服务器,为了缓解服务器压力以及方便维护,也会做迁移。

MySQL迁移通常使用的有三种方法:

1、数据库直接导出,拷贝文件到新服务器,在新服务器上导入。

2、使用第三方迁移工具。

3、数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。

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

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

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

假如数据库迁移是因为业务瓶颈或项目改造等需要变动数据表结构的(比如分区分表),我们便只能使用第一种方法了。

使用MySQL的SELECT INTO OUTFILE 、LOAD DATA INFILE快速导出导入数据

LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。MySQL官方文档也说明了,该方法比一次性插入一条数据性能快20倍。

当用户一前一后地使用SELECT ... INTO OUTFILE LOAD DATA INFILE 将数据从一个数据库写到一个文件中,然后再从文件中将它读入数据库中时,两个命令的字段和行处理选项必须匹配。否则,LOAD DATA INFILE 将不能正确地解释文件内容。

下面是一个项目的例子,MySQL由windows平台迁移到Linux平台,数据总量12G

Windows平台导出数据:

tables.txt是保存数据表名称的文件,通过从文件中读取数据表名称,循环导出所有表:如果过程中摄及到分表,可根据分表规则修改导出的sql语句和批处理代码,非常灵活。

@echo off & setlocal enabledelayedexpansion
for /f %%i in (tables.txt) do ( set table=%%i
 echo "dump table -- !table! --"
 mysql -uroot -p12345678 codetc_old -e "SELECT * INTO OUTFILE 'F:/MySQL/Uploads/!table!.txt' FIELDS TERMINATED BY ',' FROM !table!"
)
pause

Linux平台导入数据:

#!/bin/bash
while read line
do
    mysql -uroot -p12345678 codetc_new -e "LOAD DATA INFILE '/var/lib/mysql-files/$line.txt' INTO TABLE $line FIELDS TERMINATED BY ','"
done < tables.txt

数据导入之前需在新机器上创建表结构,12G的数据导出用时3分钟左右,导入用时4分钟左右(执行时间根据机器的配置会有所不同,不具有参考价值)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要将Druid的MySQL数据库中的数据导入到本地MySQL数据库,可以按照以下步骤进行操作: 1. 在本地MySQL数据库中创建与Druid的MySQL数据库相同的表结构,可以使用CREATE TABLE语句来创建表。 2. 在本地MySQL数据库中创建一个与Druid的MySQL数据库连接的数据源,可以使用MySQL命令行客户端或者其他MySQL客户端工具连接。 3. 在本地MySQL数据库中使用SELECT语句查询Druid的MySQL数据库中的数据,并将结果保存到本地的一个临时文件中。 4. 在本地MySQL数据库中使用LOAD DATA INFILE语句将临时文件中的数据导入到本地MySQL数据库中的表中。 需要注意的是,如果Druid的MySQL数据库中的数据量比较大,那么可能需要分批导入或者使用专业的数据迁移工具来完成数据迁移。同时,在导入数据时也需要注意数据的一致性和正确性。 ### 回答2: 要把druid的MySQL数据库中的数据导入本地MySQL数据库,可以参考下面的步骤: 1. 首先,确保本地MySQL数据库已经启动并且可以连接。如果还没有安装MySQL数据库,可以先进行安装并启动。 2. 打开druid的MySQL数据库的管理工具,如phpMyAdmin、Navicat等,登录并选择要导出数据库。 3. 在导出数据库之前,可以根据需要选择要导出数据表或者整个数据库。如果只需要导出特定的数据表,可以在管理工具中选择对应的表。 4. 导出数据的方式可以选择导出为SQL文件或者导出为CSV文件。选择合适的导出选项,并且保存导出文件到本地计算机。 5. 然后,打开本地MySQL数据库的管理工具,登录并选择要导入数据数据库。如果还没有创建目标数据库,可以先进行创建。 6. 在管理工具中选择导入选项,并且选择之前导出的文件进行导入操作。 7. 导入过程中可能需要设置一些选项,如字符集、导入方式等,根据实际情况进行选择和设置。 8. 确认导入选项设置无误后,开始执行导入操作。导入过程可能需要一些时间,取决于导入数据量和网络速度。 9. 导入完成后,可以在本地MySQL数据库的管理工具中查看导入数据,确保导入成功。 总结:通过以上步骤,就可以将druid的MySQL数据库中的数据成功导入到本地的MySQL数据库中。 ### 回答3: 要将Druid的MySQL数据库中的数据导入到本地MySQL数据库,可以按照以下步骤进行操作: 1. 首先,确保本地MySQL数据库已经正确安装并启动。 2. 在Druid的MySQL数据库中,使用导出工具(如mysqldump)将数据导出为SQL文件。可以使用以下命令导出整个数据库: ``` mysqldump -u 用户名 -p 密码 数据库名 > 导出文件名.sql ``` 3. 将导出的SQL文件复制到本地机器上,并确保路径和文件名正确。 4. 在本地MySQL数据库中,创建新的数据库(如果已存在,则跳过此步骤): ``` CREATE DATABASE 新数据库名; ``` 5. 在本地MySQL数据库中,使用导入工具(如mysql或source命令)导入SQL文件。可以使用以下命令导入数据: ``` mysql -u 用户名 -p 密码 新数据库名 < 导出文件名.sql ``` 6. 等待导入过程完成,导入的速度取决于数据量的大小,可能需要一些时间。 7. 导入完成后,可以使用本地MySQL数据库客户端工具验证数据是否正确导入,并执行必要的查询和操作。 总结起来,将Druid的MySQL数据库中的数据导入到本地MySQL数据库需要导出数据库的SQL文件,然后在本地创建目标数据库导入SQL文件。最后,通过本地MySQL客户端工具验证数据是否正确导入

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值