10

在我的公司,我们偶尔会导入大型客户 MySQL 数据库 (40GB+),这些数据库可能需要一天多的时间才能加载到我们的开发人员机器上。虽然我们接受这个加载时间,因为它是在后台完成的,但我们缺乏任何可靠的能力来估计导入何时完成。这阻止了我们安排适当的时间来采取行动。这就像在等待有线电视人出现一样。

现在我最好的策略是快速show tables命令查看已加载的表格百分比。然而,由于桌子大小在彼此之间以及与每个客户之间都存在很大差异,因此这甚至不是很可靠。

有没有人有一个好的技术或工具可以用来获得 MySQL 导入的可靠百分比?

4

3 回答 3

16

您可以pv通过将转储管道传输到mysql.

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

它会在导入过程中根据 IO 吞吐量显示一个进度条。(如此处所示

于 2012-05-25T16:59:30.463 回答
1

HeidiSql 会告诉你到目前为止已经加载了多少 GB,这在试图确定还需要加载多少 GB 时非常有用。

于 2012-05-25T16:56:58.387 回答
1

您还可以show processlist对源数据库执行操作,以查看导出到特定表的距离(通过自动递增 ID)。Eric 提出了一个很好的观点,即您可以监控数据库数据目录的大小与源的大小相比。

我发现在加速转储/导入方面很有用,是通过表来完成,然后同时运行多个 mysqldump,本质上是多线程处理您的进程。我通常一次进行大约 4 次单独的转储/恢复。最佳数量取决于您的硬件和磁盘容量。

一个非常简单的例子给你一个想法:

mysqldump dbname table1 table2 table3 | mysql -h host &
mysqldump dbname table4 table5 table6 | mysql -h host &
mysqldump dbname table7 table8 table9 | mysql -h host &
于 2012-05-25T17:03:58.030 回答