ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL一次大表迁移的优化

2021-11-26 22:00:06  阅读:124  来源: 互联网

标签:配置文件 -- 索引 导入 MySQL 磁盘 迁移 数据 大表


文章目录

一.问题描述

  今天一个做Java开发的哥们向我咨询了一个问题。

  他想把一个300多万条数据数据的表迁移到本地测试环境,他处理的方案是 先通过mysqldump命令将该表做一个备份,然后传输到测试环境,最后执行备份文件。

  理想很丰满,现实很骨感,300多万的数据不大,备份下来也就2.5GB左右的sql文件,可是在测试环境居然执行了12个小时才执行了一半,无奈只能终止。

  于是这个哥们开始咨询我,希望我能提供一个快速一点的方法。

二. 解决方案

  既然是批量数据的迁移,那就肯定想到调整参数和索引相关,于是从这两个方向着手。

2.1 调整索引

将 dump.sql文件中除id列主键索引外的所有索引都去掉,数据同步完成后再创建索引。

2.2 调整参数

我调整的参数如下:

-- 默认值是128M,测试机器是16GB内存,可以调整为10G,缓存更多数据
innodb_buffer_pool_size=10G

-- 默认值是50M,尽量调大,减少checkpoint
innodb_log_file_size=4G

-- 每次事务提交,都写入os cache 缓存,可能1秒将cache里面数据写入磁盘,减少写磁盘
innodb_flush_log_at_trx_commit=2

-- 设置为0的时候,持久化操作留给文件系统 ,减少写磁盘
sync_binlog=0

-- 关闭binlog,减少写磁盘
skip-log-bin

2.3 重新导入数据

重新导入数据,速度快了很多,不到半个小时,300多万的数据都导入成功了。

2.4 重建索引

因为表有十多个索引,我放到一个文件里面批量执行,一个索引预估20分钟左右,索引预估需要3个小时左右,看来索引才是大头,导入数据其实没那么麻烦。
image.png

2.5 恢复mysql配置文件

最后被忘记将配置文件进行恢复,2.2步骤设置的,容易丢数据,还是双1来的安心。

标签:配置文件,--,索引,导入,MySQL,磁盘,迁移,数据,大表
来源: https://blog.csdn.net/u010520724/article/details/121569440

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有