我有一个200+GB mysql转储文件,需要导入到我的开发机器上运行的本地sql服务器中。我尝试使用mysql < db_backup.sql方法进行天真的转储还原,并设法恢复了大约85%的数据库,然后再访问
mysql服务器已经消失了
错误。这花费了大约5天时间。
我想知道是否有一种方法可以将部分恢复的DB与转储文件进行比较,以了解哪些表仍在等待,或者是否有一种从大型转储文件中恢复的更快(至少4x)的方法。
如有任何建议,将不胜感激。谢谢。
发布于 2016-12-13 09:24:47
感谢您提供的附加信息,如果它是标准的和默认的设置,它对于海量数据来说并不是最理想的,所以您可以从以下几个方面开始:
调整开始:
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=时,截断/优化可用时间的效果,这对于开发机器来说是很重要的。
所有以上工作总是和如果你决定重新加载所有转储,如果会走另一条路。
已恢复的:
我不确定--你的大垃圾堆里面是什么,所以不能给出通用的建议--如何恰当地分割它。
发布于 2016-12-15 10:43:21
恢复速度更快,但在建议调优mysql设置后仍比预期的要慢。
我查看了一些第三方实用程序,发现了以下内容:https://github.com/deviantintegral/mysql-parallel
这需要以一种特定的格式重新创建转储,但在此之后,恢复速度要快几个数量级,以超过1GB/分钟的速度写入DB。
发布于 2017-05-05 02:05:25
希望,这已经解决了,在未来我建议使用我的翻盖器来备份巨大的数据库并恢复它。本机mysqldump和还原非常慢,因为它是单线程的,但是在mydumper中,最多可以使用62个线程。
https://dba.stackexchange.com/questions/157889
复制相似问题