之前使用阿里云linux服务器安装mysql没碰到什么问题,最近在鲲鹏服务器的CentOs7系统里尝试着安装mysql,结果碰到各种问题。终于零距离初步接触了解了下鲲鹏服务器的与众不同。
先简单认识下鲲鹏服务器。
鲲鹏原指华为海思在2019年1月初发布的一款兼容ARM指令集的服务器芯片鲲鹏920,性能强悍,配备了64个物理核心,单核实力从CPU算力benchmark的角度对比,大约持平于同期X86的主流服务器芯片,整体多核多线程算力较同期的X86芯片更强大。
当初看到服务器的配置,也惊讶了一嘴,64核的CPU,228G内存,看价格就知道配置多豪华了。
性能放一边,回过头来继续看服务器的运维体验。
拿到服务器整好基础环境后,开始安装本地mysql数据库,因为一直用mysql5.7,很稳定没啥问题,暂时不打算升级到mysql新版本8.0。
安装环境:
- CentOs 7.9
- 服务器CPU内核版本 : 4.18.0-305.10.2.el7.aarch64
- Shell: Zsh 5.0.2 (aarch64-redhat-linux-gnu)
linux上安装mysql一般有两种方式:rpm安装和源码安装。
先试了rpm安装方式,结果安装到最后发生404错误,以下链接404:
1 | Loading mirror speeds from cached hostfile |
错误信息如图:
尝试解决这个问题都不行,最后发现这个是因为cpu内核不同导致的。 鲲鹏CPU使用的是arm指令集架构,与以前Intel和AMD的CPU的x86架构不同,前者是精简指令集运算(Reduced Instruction Set Computing,RISC),后者是复杂指令集运算(Complex Instruction Set Computing,CISC)。arm一般是用在移动通讯设备上的,华为搞这块起家的,现在老美打压华为,芯片管控,想想也能理解。
网上有人也碰到类似问题,用mysql源码和boost库重新编译安装成功的。于是,下载mysql源码包和boost库源码包重新cmake编译安装,但是我试了几次,mysql5.7和boost1.59一起cmake就出错,后来换成mysql5.6重新cmake,编译安装成功后,启动始终有错误,试了各种办法都无法成功启动mysql。后来看到mysql自己也提供了含boost的源码包,于是也下载下来安装,但是编译失败,出现了之前一样的错误。
有兴趣的朋友可以尝试华为提供的方法 “鲲鹏服务器Boostkit套件编译安装”
看来,鲲鹏的arm架构兼容mysql还是有问题。后来再次搜索,忽然发现华为提供了基于aarch64架构的mysql安装包rpm,版本是mysql5.7.27。
安装过程如下:
配置本地yum源
备份原yum库文件并将鲲鹏源的新配置写入repo文件。
1 | 备份原库文件夹 #mv /etc/yum.repos.d/ /etc/yum.repos.d-bak |
安装RPM包
1 | 清除缓存。 #yum clean all |
1 | 查看安装后的rpm包。 #rpm -qa | grep mysql |
检查my.cnf里配置的目录是否用户和组都是mysql,不是的话,都要修改好用户和组
然后初始化mysql:
1 | /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/var/lib/mysql |
如果出现以下错误,需要额外安装些华为提供的lib文件:
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
采用镜像站RPM安装方式安装,需要额外做以下操作步骤避免初始化数据库失败。(华为官网说是安装前操作,我在安装后操作也没问题)
- 定位到服务器“/home”目录下,下载rpm-bug.zip。
1
2cd /home
wget https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/database/patch/rpm-bug.zip - 解压压缩包。
1
unzip rpm-bug.zip
- 进入解压后的文件目录并将其中的文件放入到对应的库文件目录中(如果有是否重写文件等提示,则输入y然后回车)。
1
2
3
4
5
6cd rpm-bug
cp libatomic.so.1 /usr/lib64/
cp libstdc++.so.6.0.24 /lib64/
rm /lib64/libstdc++.so.6
ln -s /lib64/libstdc++.so.6.0.24 /lib64/libstdc++.so.6
cp libaio.so.1.0.1 /usr/lib64/libaio.so.1
上述操作完成后再执行mysql初始化命令,完成初始化后,就可以启动mysql了,安装的时候在系统启动目录(/etc/init.d)下生成了mysql文件.
第一次需要手动启动mysql服务
1 | /etc/init.d/mysql start |
后面不用再手动启动;服务器重启的话,mysql会自动启动。
初始化的时候,如果终端命令行里有回显log,可以在里面找到初始化的root密码;如果没有,可以在my.cnf配置文件里配置的错误日志文件里找到(如下图所示);然后进入mysql,修改root密码。
以上rpm安装信息部分也可以参考华为官方信息 鲲鹏服务器mysql镜像站RPM安装