遇到一个项目是华为鲲鹏arm架构linux服务器(CentOS 7.5 with ARM),刚开始一直按照X86的教程在执行,后来mysql的本地编译命令出现了二进制的错误,于是想到了这个是鲲鹏arm架构的服务器,所以在网上看了很多博客,找到如下方法。情况区分为有互联网的情况和没有互联网的情况。
1.首先是有互联网的情况下:
1.1先下载给各种依赖
yum install cmake time libaio-devel ncurses-devel numactl-devel openssl-develzlib-devel cyrus-sasl-devel openldap-devel perl-Env gcc gcc-c++ make rpm-build autoconf perl-JSON
1.2下载安装源码
wgethttps://obs-mirror--north-/database/mysql-community-5.7.28-1.el7.src.rpmrpm-ivhmysql-community-5.7.28-1.el7.src.rpm
1.3 编译安装MySQL
安装后的源码在/root/rpmbuild/SOURCES/里面。
我们将使用系统自带的GCC4.8.5来编译MySQL5.7.28,为此我们需要做一些修改
cd /root/rpmbuild/SOURCESvim mysql-5.7.28/sql/#添加 #include <sys/prctl.h>
vim mysql-5.7.28/cmake/build-configurations/compiler_options.cmake
将所有的-O3改成-O1。上述修改不会对MySQL功能造成影响,主要是GCC的版本问题。
修改完之后重新打包,编译。
tar-zcfmysql-5.7.28.tar.gzmysql-5.7.28rpmbuild-bb/root/rpmbuild/SPECS/mysql.spec
编译完成后,编译好的RPM包在/root/rpmbuild/RPMS/aarch64下
#启动数据库systemctl start mysqld#查看数据库状态systemctl status mysqld
数据库初始密码在/var/log/mysqld.log里可以查到
数据库配置文件在/etc/f里可以查到
mysql -uroot –p#修改密码和远程登录mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa!123456';mysql> use mysql;mysql> update user set host = '%' where user = 'root';mysql> FLUSH PRIVILEGES;
2.接下来是没有互联网的情况下(我遇到的就是这种情况):
2.1制作本地yum源
首先从网上下了一个centos的arm版本,然后挂载在系统上,这样服务器就可以使用挂载系统的本地yum源,这个具体方式可以百度linux制作本地yum源,主要就是下载一个arm版本的centos。
2.2 下载依赖
然后就开始下载依赖,注意下载依赖 要分开写,比如: yum install -y cmake ,要一个一个编译,如果直接复制进去 无法下载成功。而且我下载的时候,其中有一个个依赖没有下载成功(好像是这个ncurses-devel),不过不重要,应该是可以忽略的。
yum install cmake time libaio-devel ncurses-devel numactl-devel openssl-develzlib-devel cyrus-sasl-devel openldap-devel perl-Env gcc gcc-c++ make rpm-build autoconf perl-JSON
2.3下载mysql
然后下载rpm版本(注意是:rpm不是arm)的mysql文件(这个就是arm可执行的mysql文件)
https://obs-mirror--north-/database/mysql.5.7.28-rpm.tar
2.4 安转数据库
把上面这个下载好的文件上传到linux服务器,然后cd进入文件夹
#安装数据库rpm -ivh *.rpm
2.5启动数据库
#启动数据库systemctl start mysqld#查看数据库状态systemctl status mysqld
数据库初始密码在/var/log/mysqld.log里可以查到
数据库配置文件在/etc/f里可以查到
mysql -uroot –p#修改密码和远程登录mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa!123456';mysql> use mysql;mysql> update user set host = '%' where user = 'root';mysql> FLUSH PRIVILEGES;
==================================================
启动成功之后后续可以使用rpm的mysql 启动命令
(rpm)重启:service mysqld restart(rpm)停止:service mysqld stop
问题:
这是因为mariadb-libs和mysql的lib冲突引起的,执行yum -y remove mariadb-libs可解决问题。
博客参考:/forum/thread-56570-1-1.htm
后续要安装 redis nginx zookeeper tomcat等都没啥问题,但是特别要注意redis和gcc的版本号要保持一致
3.arm安装软件排查问题流程
先找有没有对应的arm的软件,然后在找找gcc或者jdk版本等底层环境版本号是否兼容相关软件。