首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >巨大的mysqldump进口

问巨大的mysqldump进口
EN

Database Administration用户
提问于 2016-12-12 12:27:59
回答 3查看 1.6K关注 0票数 0

我有一个200+GB mysql转储文件,需要导入到我的开发机器上运行的本地sql服务器中。我尝试使用mysql < db_backup.sql方法进行天真的转储还原,并设法恢复了大约85%的数据库,然后再访问

mysql服务器已经消失了

错误。这花费了大约5天时间。

我想知道是否有一种方法可以将部分恢复的DB与转储文件进行比较,以了解哪些表仍在等待,或者是否有一种从大型转储文件中恢复的更快(至少4x)的方法。

如有任何建议,将不胜感激。谢谢。

EN

回答 3

Database Administration用户

发布于 2016-12-13 09:24:47

感谢您提供的附加信息,如果它是标准的和默认的设置,它对于海量数据来说并不是最理想的,所以您可以从以下几个方面开始:

  • 定位my.cnf文件(根据安装情况,它可以是几个不同的位置)
  • 在mysql中,运行像‘innodb_ file _per_table’这样的变量;如果关闭,最好删除ibdata文件并重新创建它。

调整开始:

代码语言:javascript
复制
innodb_buffer_pool_size = 4G (or 8G)
innodb_log_file_size = 1G
innodb_file_per_table= ON (if it OFF)
innodb_flush_log_at_trx_commit = 0 (because it development machine)
innodb_log_buffer_size = 64M
max_allowed_packet = 128M

它必须提高工作速度。

如果innodb_file_per_table=关闭,意味着在删除和/或优化表时,单文件中的所有数据库和mysql都不会释放空间。

在启用innodb_file_per_table=时,截断/优化可用时间的效果,这对于开发机器来说是很重要的。

所有以上工作总是和如果你决定重新加载所有转储,如果会走另一条路。

已恢复的:

  • 签入MySQL“显示数据库”,默认情况下按字母顺序转储和恢复,所以问题将列在列表的最后
  • 对于最后一个数据库,逐个表与原始表进行比较(如果可用的话),但是最好完全重新加载它。

我不确定--你的大垃圾堆里面是什么,所以不能给出通用的建议--如何恰当地分割它。

票数 0
EN

Database Administration用户

发布于 2016-12-15 10:43:21

恢复速度更快,但在建议调优mysql设置后仍比预期的要慢。

我查看了一些第三方实用程序,发现了以下内容:https://github.com/deviantintegral/mysql-parallel

这需要以一种特定的格式重新创建转储,但在此之后,恢复速度要快几个数量级,以超过1GB/分钟的速度写入DB。

票数 0
EN

Database Administration用户

发布于 2017-05-05 02:05:25

希望,这已经解决了,在未来我建议使用我的翻盖器来备份巨大的数据库并恢复它。本机mysqldump和还原非常慢,因为它是单线程的,但是在mydumper中,最多可以使用62个线程。

http://centminmod.com/mydumper.html

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/157889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档