centos7源码安装mysql8.0_CentOS 7 源码编译安装MySQL 8.0

MySQL是一款开源的关系型数据库,目前最新的大版本为8.0,本文将介绍CentOS 7.2环境下,源码编译安装MySQL 8.0的过程以及遇到的问题。

环境:

CentOS 7.2

MySQL 8.0.18

一、下载MySQL 8.0 源码

这里我们使用官方版本,下载8.0.18版本压缩包,自带boost库,如下:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.18.tar.gz

当然也可以自己下载boost库,不使用mysql自带的boost库,如下:

wget https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz

二、安装配置编译环境

yum install -y gcc gcc-c++ cmake3 gdb

yum install -y libaio bison zlib-devel openssl-devel patch ncurses-devel

注意:

MySQL 8.0.18 依赖cmake 3.5.1及以上版本,GCC 5.3及以上版本。

源码编译安装高版本cmake和gcc参考文章:

三、编译安装

解压:

tar xf mysql-boost-8.0.18.tar.gz

cd mysql-8.0.18

设置高版本GCC环境变量:

由于高版本GCC安装在/usr/local目录下,设置cmake使用高版本GCC,如下:

export CC=/usr/local/bin/gcc

export CXX=/usr/local/bin/g++

配置编译选项:

cmake -DCMAKE_INSTALL_PREFIX=/data/mysql_8_0_18

-DWITH_MYISAM_STORAGE_ENGINE=1

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_EDITLINE=bundled

-DENABLED_LOCAL_INFILE=1

-DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF

-DDOWNLOAD_BOOST=0

-DWITH_BOOST=/data/boost/boost_1_70_0

-DFORCE_INSOURCE_BUILD=1

-DWITH_PLUGIN_NDBCLUSTER=0

-DWITH_ARCHIVE_STORAGE_ENGINE=0

-DWITH_BLACKHOLE_STORAGE_ENGINE=0

-DWITH_FEDERATED_STORAGE_ENGINE=0

#编译安装

make

make install

编译过程中遇到很多问题,后面会详细描述,最终编译成功,如下:

[root@localhost mysql_8_0_18]# cd /data/mysql_8_0_18/bin/

[root@localhost bin]# ./mysqld --version

/data/mysql_8_0_18/bin/mysqld  Ver 8.0.18 for Linux on x86_64 (Source distribution)

四、编译过程中的报错

报错一:

/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

解决方案:

使用高版本gcc动态库

ln -sf /usr/local/lib64/libstdc++.so.6 /lib64/libstdc++.so.6

报错二:

[ 56%] Building CXX object sql/CMakeFiles/sql_gis.dir/gis/srs/wkt_parser.cc.o

g++: fatal error: Killed signal terminated program cc1plus compilation terminated.

解决方案:

虚拟机内存1G太小了,调整到2G,不再报错。

报错三:

'SYS_gettid' was not declared in this scope

修改文件源码文件:

mysql-8.0.18/storage/innobase/buf/buf0buf.cc

在第一行,加上:

#include "sys/syscall.h"

报错四:

error: ‘os_compare_and_swap_thread_id’ was not declared

修改以下文件:

mysql-8.0.18/storage/innobase/lock/lock0lock.cc

mysql-8.0.18/storage/innobase/trx/trx0trx.cc

将"os_compare_and_swap_thread_id” 修改为 "os_compare_and_swap_lint"

五、最后

MySQL 8.0 的源码编译并不顺利,其中对cmake和gcc版本要求较高,编译过程中会遇到各种奇怪的问题。最后,希望本文对大家编译MySQL8.0有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值