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