不要轻信厂商的宣传稿,MySQL 8远没有鼓吹的好。它改了太多的东西,在配置一般的云主机上表现很差劲。经过反复的研究测试,建议非高配机器,不要采用这个版本。

我的测试机遇到典型的问题就是:CPU 占用率偏高,内存占用大,系统负载数字明显非常高。CPU 莫名其妙的100%。去调试 MySQL 配置参数?查找慢查询记录?一顿操作猛如虎,该添堵的还添堵。根本就调不出来好吧,白费工夫。

干脆,记录好现有的用户账号,导出来,数据全部用mysqldump导出来,删掉MySQL8,安装MySQL 5.7.31,重建数据库,再重新导入数据,出错了。

命令行导出数据:

mysqldump -uroot -p dbname > /path/to/***.sql

一看是编码问题,utf8mb4_0900_ai_ci在MySQL 5.7上面不支持,vim打开到处的文件, 用命令全局替换,存储退出:

:%s/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g

再导入:

mysql -uroot -p dbname < xxxx.sql 

数据库重建完毕,数据导入导出操作成功了。为何导入导出不用phpMyAdmin?这个工具操作少量数据还可以,稍大就不好用了,最好的最快的办法,还是命令行操作。 测试一会儿,重新查看系统负载和 CPU 占用率,只有原来的1/10。连MySQL的默认配置都没动,效果就大不相同。最后再根据phpMyAdmin的数据库状态提示和建议,进一步改进了数据库配置文件的参数设置,效果更为理想。

至此, 系统负载过高问题完全解决,根源就是这个MySQL 8的版本导致的,换成MySQL 5.7立刻就好了。

怎样开发打造出高质量的软件系统?