一个100多G的sql文件导入时,大概1个多小时就会自动断了,报错:
mysql lost connection during query
日志中发现,mysql有重启的痕迹。 找了半天cron之类的,并没有发现什么问题,而去期间也并没有人去手动重启mysqld服务。
一开始怀疑是某些参数设置不当,比如 max_allowed_packet 或者 connection_timeout 等参数设置的太小,都调整后,问题依旧。最后偶然发现 swap 竟然用完了,但是内存剩余还很多。
这说明,mysql的配置文件中某些参数设置不当,最后调整了
innodb_buffer_pool_size 这个参数,问题解决。
因为这台服务器上跑着两个mysql,内存一共为32G, 其中一个我设置
innodb_buffer_pool_size = 16G
另一个设置
innodb_buffer_pool_size = 28G
这俩加一起远远超出了32G,所以服务器开始使用swap了,当swap用尽后,就会自动重启mysql了。