麒麟ky10编译安装MySQL8
注意:V10 SP2自带的版本如下:cmake : 3.16.5 make : 4.3 gcc : 7.3.0 gcc-c++ : 7.3.0;目前最高只支持编译MySQL8.0.26版本数据库,如需编译更高版本MySQL8就必须升级gcc、gcc-c++。
gcc官方下载地址:http://ftp.gnu.org/gnu
一、编译升级gcc、gcc-c++
提示:gcc的版本升级,可以根据自己需要编译的MySQL8版本去进行升级;这里是根据编译MySQL8.2最新版本而去升级gcc10版本。
1.1、安装依赖
通过yum源安装常规依赖软件工具包,如yum源没有的请自行下载安装:
yum -y install lrzsz curl telnet wget tar vim unzip zip gcc gcc-c++ gcc-devel openssl-devel perl ncurses-devel bison-devel libaio libaio-devel libtirpc-devel rpcsvc-proto-devel rpcgen
1.2、编译升级gmp、mpc、mpfr依赖
相关源码包下载地址请参考上方的gcc下载地址,不同的gcc版本需要的这个三个依赖包版本不同,请自行参考官网。
1.2.1、编译gmp
tar -xf gmp-6.3.0.tar.gz
cd gmp-6.3.0
./configure --prefix=/usr/local/gmp-6.3.0
make -j4 && make install
1.2.2、编译mpfr
tar -xf mpfr-4.2.1.tar.gz
cd mpfr-4.2.1
./configure --prefix=/usr/local/mpfr-4.1.2/ --with-gmp=/usr/local/gmp-6.3.0/
make -j4 && make install
1.2.3、编译mpc
tar -xf mpc-1.2.0.tar.gz
cd mpc-1.2.0
./configure --prefix=/usr/local/mpc-1.2.0 --with-gmp=/usr/local/gmp-6.3.0/ --with-mpfr=/usr/local/mpfr-4.1.2/
make -j4 && make install
1.2.4、将三个依赖包的lib加入到系统lib里面
建议是在/etc/ld.so.conf.d新建一个配置文件专门存放这次升级的所有lib路径,如下:
cat /etc/ld.so.conf.d/gcc-10.1.0.conf
/usr/local/gmp-6.3.0/lib
/usr/local/mpfr-4.1.2/lib
/usr/local/mpc-1.2.0/lib
ldconfig ###运行命令使以上的配置生效
1.3、编译升级gcc
请参考上方的gcc官网下载好想升级的gcc版本源码包;
1.3.1、编译gcc
tar -xf gcc-10.1.0.tar.gz
cd gcc-10.1.0
mkdir build
../configure --prefix=/usr/local/gcc-10.1.0 --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,fortran,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-isl --without-cloog --enable-gnu-indirect-function --build=aarch64-linux-gnu --with-stage1-ldflags=' -Wl,-z,relro,-z,now' --with-boot-ldflags=' -Wl,-z,relro,-z,now' --with-multilib-list=lp64 --with-mpc=/usr/local/mpc-1.2.0/ --with-mpfr=/usr/local/mpfr-4.1.2/ --with-gmp=/usr/local/gmp-6.3.0/
make -j4 && make install
编译安装完成后,同样的需要将新版本gcc的lib加入到系统lib变量中;
cat /etc/ld.so.conf.d/gcc-10.1.0.conf
/usr/local/gmp-6.3.0/lib
/usr/local/mpfr-4.1.2/lib
/usr/local/mpc-1.2.0/lib
##新增
/usr/local/gcc-10.1.0/lib
/usr/local/gcc-10.1.0/lib64
/usr/local/gcc-10.1.0/libexec
ldconfig ###运行命令使以上的配置生效
1.3.2、替换或者配置变量
到这时就根据自己考量,是配置多版本gcc,还是替换更新升级新版本gcc;
更新:
将/usr/bin下的gcc命令备份后,直接替换新编译的gcc版本命令,即/usr/local/gcc-10.1.0/bin下的命令;
多版本(不建议):
就在/etc/profile文件里面配置export变量名和路径;
二、编译升级MySQL8.2
1、编译MySQL:
MySQL官方下载地址:https://downloads.mysql.com/archives/community/
建议下载带boost的源码包,例如:mysql-boost-8.2.0.tar.gz
tar -xf mysql-boost-8.2.0.tar.gz
cd mysql-8.2.0
cmake -DBUILD_CONFIG=mysql_release -DMYSQLX_TCP_PORT=33068 -DMYSQL_TCP_PORT=33068 -DCPACK_MONOLITHIC_INSTALL=ON -DCMAKE_INSTALL_PREFIX=/data/unimedical/.services/mysql8 -DSYSCONFDIR=/data/unimedical/.services/mysql8/conf -DMYSQL_DATADIR=/data/unimedical/.services/mysql8/data -DMYSQLX_UNIX_ADDR=/data/unimedical/.services/mysql8/conf/mysqlx.sock -DMYSQL_UNIX_ADDR=/data/unimedical/.services/mysql8/conf/mysql.sock -DENABLE_DOWNLOADS=ON -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=./boost
make -j4 && make install
2、编译问题处理
注意:编译MySQL8的时候,可能会存在找不到gcc的一些相关依赖;如下图:
这种情况是因为升级了gcc版本,但是新版本gcc的lib可能引用没生效;也可能是因为cmake编译MySQL8,会默认从原系统的lib路径找相关依赖,但没找到对应新版本的lib依赖;
解决方法,将新版本gcc的lib路径做个软连接到系统原路径下,如:
ln -sf /usr/local/gcc-10.1.0/libexec/gcc/aarch64-linux-gnu/10.1.0 /usr/libexec/gcc/aarch64-linux-gnu/10.1.0
ln -sf /usr/local/gcc-10.1.0/lib/gcc/aarch64-linux-gnu/10.1.0 /usr/lib/gcc/aarch64-linux-gnu/10.1.0
3、安装升级MySQL8
至此MySQL8编译完成后,就和普通的安装方式一样,通过初始化后就可以直接启动使用MySQL8数据库了。