MySQL的20GB恢复需要多长时间?(阿卡有什么事吗?)

BCS*_*BCS 11 mysql performance

我正在尝试通过加载其中一个备份来构建生产MySQL数据库的开发副本.如果未压缩转储大约20G,需要多长时间才能完成?

这个命令已经运行了24h,CPU负载为10%,我想知道它是否只是很慢或者它/我做错了什么.

mysql -u root -p < it_mysql_dump.sql 
Run Code Online (Sandbox Code Playgroud)

顺便说一句,它是一台功能强大的桌面开发机器,有很多内存,但它可能是读取和写入相同的硬盘驱动器.我想我正在使用InnoDB.

Mar*_*rkR 8

恢复MySQL转储可能需要很长时间.这是因为它确实重建了整个表.

你需要做什么来解决它取决于引擎,但总的来说

我会说,做以下事情:

第0条规则:仅使用64位操作系统.

  1. 确保你有足够的物理ram来将最大的单个表放入内存中; 包括在此计算中操作系统的任何开销(注意:在使用4k页的操作系统,即所有这些页面表中,页表在大内存系统上占用大量内存 - 不要忘记这一点)
  2. 调整innodb_buffer_pool,使其大于最大的单个表; 或者如果使用MyISAM,请调整key_buffer,使其足以容纳最大表的索引.
  3. 耐心点.

现在,如果您仍然发现执行上述操作的速度很慢,则可能是您的特定数据库具有非常棘手的恢复结构.

就个人而言,我已经设法在<48小时内重建了一个服务器~2Tb,但这是一个特例.

如果您打算将生产数据加载到其中,请确保您的开发系统具有生产级硬件.

特别是,如果您认为可以将数据批量加载到不适合内存的表中(或者至少大部分加载到内存中),请忘记它.


如果这一切看起来太多,请记住您可以在InnoDB上使用文件系统或LVM快照,然后只复制文件.使用MyISAM它有点棘手,但仍然可以完成.

  • 您有关于如何执行最后一点的链接吗? (2认同)

Dan*_*man 5

打开另一个终端,运行 mysql,并计算转储 ( SELECT COUNT(*) FROM table)中某些表中的行数。与源数据库进行比较。那会告诉你进展。

我在大约 14 小时内通过网络将大约 80GB 的数据插入 MySQL。它们是每行一个插入的转储(慢),开销很大,插入具有快速磁盘的服务器上。

如果硬件足够旧,或者您的导入正在与其他东西竞争磁盘 IO 和内存,则 24 小时是可能的。

  • 您仍然可以查看新服务器上数据文件的大小以了解它们的增长情况。总有办法监控。 (3认同)