oom_killer由于 mysql 在插入longblob列时大量消耗内存,我的 MySQL 实例被 Linux 杀死。还原包含非常大longblob列的 mysqldump 时会发生这种情况。
我已经浏览过类似这个博客的内容,它建议将各种读/写缓冲区设置为不同的大小以限制内存消耗。但是,尽管提到的脚本在调整后输出了 350MB 的“TOTAL (MAX)”内存,mysql 在最终被杀死之前仍然会很高兴地吞噬千兆字节的内存。
这是通过 Docker 的复制:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=foobar -d --name mysql-longblob mysql:5.7
mysql -h 127.0.0.1 -P 3306 -u root --password -e "CREATE DATABASE blobs; USE blobs; CREATE TABLE longblob_test (bigcol LONGBLOB NOT NULL) ENGINE = InnoDB;"
mysql -h 127.0.0.1 -P 3306 -u root --password -e \
"SET GLOBAL max_allowed_packet=536870912;" # 512MB
mysql -h 127.0.0.1 -P 3306 -u root …Run Code Online (Sandbox Code Playgroud)