我正在尝试通过加载其中一个备份来构建生产 MySQL 数据库的开发副本。如果未压缩转储约为 20G,需要多长时间才能完成此操作?
这个命令已经运行了 24 小时,CPU 负载为 10%,我想知道它是不是很慢,或者它/我做错了什么。
mysql -u root -p < it_mysql_dump.sql
顺便说一句,它位于具有大量内存的强大桌面开发机器上,但它可能正在读取和写入相同的 HDD。我想我正在使用 InnoDB。
最佳答案
恢复 MySQL 转储可能需要很长时间。这是因为它确实重建了整个表。
修复它的确切方法取决于引擎,但一般来说
我会说,执行以下操作:
第零条规则:仅使用 64 位操作系统。
- 确保您有足够的物理内存来将最大的单个表放入内存;在此计算中包括操作系统的任何开销(注意:在使用 4k 页的操作系统上,即所有这些页表本身在大内存系统上占用大量内存 - 不要忘记这一点)
- 调整 innodb_buffer_pool 使其大于最大的单个表;或者,如果使用 MyISAM,请调整 key_buffer,使其足够大以容纳最大表的索引。
- 要有耐心。
现在,如果您在执行上述操作后仍然发现它很慢,可能是您的特定数据库具有非常棘手的结构来恢复。
就我个人而言,我已经在 < 48 小时内成功地重建了一个约 2Tb 的服务器,但那是一个特例。
如果您打算将生产数据加载到其中,请确保您的开发系统具有生产级硬件。
特别是,如果您认为可以将数据批量加载到不适合内存(或至少大部分不适合内存)的表中,那就算了。
如果这一切看起来太多了,请记住您可以通过 InnoDB 在线使用文件系统或 LVM 快照,然后复制文件。使用 MyISAM 它有点棘手,但仍然可以完成。
关于mysql - 在 MySQL 中恢复 20GB 需要多长时间? (A.k.a. 有什么东西坏了吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404590/