我有这个巨大的 32 GB SQL 转储,需要导入 MySQL。我以前不必导入如此庞大的 SQL 转储。我照常做:
mysql -uroot dbname < dbname.sql
时间太长了。有一个大约有 3 亿行的表,在大约 3 个小时内达到了 150 万行。因此,整个过程似乎需要 600 小时(即 24 天)并且是不切实际的。所以我的问题是,有没有更快的方法来做到这一点?
innodb_flush_log_at_trx_commit = 2
Percona 的 Vadim Tkachenko 制作了这张精美的 InnoDB 图形表示
您肯定需要更改以下内容
innodb_buffer_pool_size = 4G innodb_log_buffer_size = 256M innodb_log_file_size = 1G innodb_write_io_threads = 16 innodb_flush_log_at_trx_commit = 0
为什么要进行这些设置?
.ibd
Configuring the Number of Background InnoDB I/O Threads
像这样重启mysql
service mysql restart --innodb-doublewrite=0
这将禁用 InnoDB 双写缓冲区
导入您的数据。完成后,正常重启mysql
service mysql restart
这将重新启用 InnoDB 双写缓冲区
试试看 !!!