最近笔者的mysql是5.7.28,官方提示可以升级到5.7.29,点“更新”,发现在编译安装,最终升级失败。查看错误日志,发现提示c++: internal compiler error: Killed (program cc1plus) ,笔者想想这个应该是自己服务器的问题,不应该是宝塔面板官方的shell脚本问题,因为这句话提示说:“c++编译器内部错误,进程被强制杀掉”,所以判断原因应该是机器cpu和内存不足导致编译爆满引起的,那怎么办呢?
登陆宝塔面板后台,首页,打开“Linux工具箱”,点击“Swap/虚拟内存”,在这里把swap调大点,再进行更新,应该就OK了。
注意点:
1.swap一般设置为内存容量的1.5倍, 若您的服务器内存大于4GB,可设1-2GB的固定值,在这里我们可以设置为3倍,编译结束恢复原始设置。
2.swap原理是从硬盘划一部分空间变成虚拟内存,要确保硬盘有足够的剩余空间。
3.编译过程中,关掉服务器的正在运作的组件,比如php,nginx,memcached等,目的是把cpu和内存性能都让给编译过程。
4.编译过程可能失败,可再次编译或者加大点swap空间,多试几次应该会成功。
5.编译失败的话,正常不会影响数据。
6.编译失败的话可以删除/www/server/mysql目录项的src(源码包和编译后的文件)和以即将升级的未来版本号命名的文件夹,然后重新更新。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/sqlops/1101.html