导入大型 MySQL 文件而不出现复制滞后

Import large MySQL file without replication lagging

我要在命令行上导入 5 GB table:

mysql -u dbuser -p customersdb < transactions.sql

之前我导入了一个 2GB 的文件,这导致复制延迟了很长时间。反正有什么可以避免的吗?在我看来,每几千次导入后以某种方式添加超时似乎是理想的选择。

我试过用谷歌搜索它,但这个用例似乎并不经常出现。

编辑:此外,是否有监控导入进度的方法?

导致延迟的问题是默认情况下从属线程是单线程的。所有操作 - 无论是来自您的导入还是来自其他操作 - 都发生在一个队列中。

从 MySQL 5.6 开始,您可以通过设置 slave_parallel_workers 选项来使用多线程。在 MySQL 5.6 中,这将分散来自不同模式的操作,在 5.7 中,它还可以在单​​个模式中并行化。

https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#sysvar_slave_parallel_workers