鲲鹏aarch64架构的centos7 安装mysql


之前使用阿里云linux服务器安装mysql没碰到什么问题,最近在鲲鹏服务器的CentOs7系统里尝试着安装mysql,结果碰到各种问题。终于零距离初步接触了解了下鲲鹏服务器的与众不同。

先简单认识下鲲鹏服务器

鲲鹏原指华为海思在2019年1月初发布的一款兼容ARM指令集的服务器芯片鲲鹏920,性能强悍,配备了64个物理核心,单核实力从CPU算力benchmark的角度对比,大约持平于同期X86的主流服务器芯片,整体多核多线程算力较同期的X86芯片更强大。

当初看到服务器的配置,也惊讶了一嘴,64核的CPU,228G内存,看价格就知道配置多豪华了。

upload successful

性能放一边,回过头来继续看服务器的运维体验。

拿到服务器整好基础环境后,开始安装本地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
2
Loading mirror speeds from cached hostfile
http://repo.mysql.com/yum/mysql-5.7-community/el/7/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found

错误信息如图:

upload successful

尝试解决这个问题都不行,最后发现这个是因为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
2
3
备份原库文件夹 #mv /etc/yum.repos.d/ /etc/yum.repos.d-bak
重新创建库目录 #Mkdir /etc/yum.repos.d
写入新的repo文件 #echo -e "[kunpeng]\nname=CentOS-kunpeng - Base - mirrors.huaweicloud.com\nbaseurl=https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/CentOS-Base-kunpeng.repo

安装RPM包

1
2
3
清除缓存。 #yum clean all
创建缓存。 #yum makecache
安装数据库rpm包。 #yum -y install mysql-5.7.27-1.el7.aarch64 --enablerepo=kunpeng

upload successful

1
2
查看安装后的rpm包。 #rpm -qa | grep mysql
如果/etc/my.cnf配置文件的组和用户不是mysql用户和组,要修改为mysql:mysql。 #chown mysql:mysql /etc/my.cnf

检查my.cnf里配置的目录是否用户和组都是mysql,不是的话,都要修改好用户和组
upload successful

然后初始化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安装方式安装,需要额外做以下操作步骤避免初始化数据库失败。(华为官网说是安装前操作,我在安装后操作也没问题)

  1. 定位到服务器“/home”目录下,下载rpm-bug.zip。
    1
    2
    cd /home
    wget https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/database/patch/rpm-bug.zip
  2. 解压压缩包。
    1
    unzip rpm-bug.zip
  3. 进入解压后的文件目录并将其中的文件放入到对应的库文件目录中(如果有是否重写文件等提示,则输入y然后回车)。
    1
    2
    3
    4
    5
    6
    cd 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密码。

upload successful

以上rpm安装信息部分也可以参考华为官方信息 鲲鹏服务器mysql镜像站RPM安装


文章作者: Jacky Chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jacky Chen !
评论
  目录