飞道的博客

在PK体系下的CentOS上编译安装 MySQL 5.7

451人阅读  评论(0)

本文主要介绍如何在 PK 体系下的 CentOS 上编译安装 MySQL 5.7,本文使用的操作系统环境为:

CentOS 版本:

# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (AltArch)

Linux 内核版本:

# uname -r

4.14.0-115.el7a.0.1.aarch64

 

首先对系统进行更新:# yum update, 更新过程中需要校验 GPG key,确认无误则输入"y"继续。

更新完成后,即可正式安装需要的软件。

 

安装常用工具:

wget 下载工具:

# yum install wget

gcc 编译工具:

# yum install gcc gcc-c++ readline-devel zlib-devel

bzip2 解压缩工具:

# yum install bzip2

 

由于 CentOS 7 自带的系统镜像源不提供 MySQL 安装包,且提供的替代方案 MairaDB 5.5 版本也较低,MySQL 官方也未提供基于 arm 架构的二进制包,因此需要通过编译源代码方式进行安装。

 

1 更新系统自带的 gcc 版本

系统自带的 gcc 版本为 4.8.5,在编译 MySQL 源码时会报编译器内部错误,因此需要更新 gcc 版本至 7.3.0。

# gcc -v

gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)

 

我们通过编译源码方式安装 gcc 7.3.0,首先下载 gcc 7.3.0 源代码:

# wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

解压源码包:

# tar -zxf gcc-7.3.0.tar.gz

编译安装前的准备:

# mkdir -p /data/gcc 创建程序将要安装的目录。

# cd gcc-7.3.0进入源代码目录。

# ./contrib/download_prerequisites运行download_prerequisites脚本下载所需要的文件。

mkdir gcc-build-7.3.0 创建编译输出目录。

将需要的文件都复制进编译输出目录:

# cd gcc-build-7.3.0

# cp ../gmp-6.1.0.tar.bz2 ./

# cp ../mpfr-3.1.4.tar.bz2 ./

# cp ../mpc-1.0.3.tar.gz ./

# cp ../isl-0.16.1.tar.bz2 ./

 

复制完后,在当前目录执行:

# ../configure --prefix=/data/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib

 

参数解释:

--prefix=/data/gcc指定安装目录。

--enable-checking=release增加一些检查,也可以–-disable-checking在编译过程中不做检查。

--enable-languages=c,c++选择 gcc 支持的编程语言 c c++。

--disable-multilib取消多目标库编译(取消32位库编译)。

 

开始编译:# make -j2,时间较长,请耐心等待(测试环境2核 CPU 编译用时超过2小时)。

编译完成后,卸载旧版本 gcc:

 

检查已安装的 gcc 版本号:

# rpm -q gcc

# rpm -q gcc-c++

 

根据输出结果进行卸载:

# rpm -e gcc-c++-4.8.5-39.el7.aarch64

# rpm -e gcc-4.8.5-39.el7.aarch64

 

安装 gcc 7.3.0:

# make install

验证:

将安装目录的 bin 目录添加到环境变量:# export PATH=$PATH:/data/gcc/bin

运行# gcc -v,可以看到版本已经更新完成。

将环境变量语句加入到配置文件,否则只在当前窗口会话生效:# vi /etc/profile,在文件末尾加入一行:export PATH=$PATH:/data/gcc/bin,然后使用# source /etc/profile更新配置文件。

 

2 编译安装 MySQL 5.7

2.1 安装编译所需要的 boost 库

首先下载 boost 1.59 源代码:

# wget https://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

解压源码包:

# tar -zxf boost_1_59_0.tar.gz

编译安装前的准备:

# mkdir -p /data/boost 创建程序将要安装的目录。

# cd boost_1_59_0进入源代码目录。

# ./bootstrap.sh编译前检查。

# ./b2 --prefix=/data/boost编译。

# ./b2 --prefix=/data/boost install安装。

将 boost lib 库目录环境变量语句加入到配置文件,否则只在当前窗口会话生效:# vi /etc/profile,在文件末尾加入一行:export PATH=$PATH:/data/boost/lib,然后使用# source /etc/profile更新配置文件。编辑动态链接库配置文件:# vi /etc/ld.so.conf,在末尾加上:/data/boost/lib,执行# ldconfig使改动生效。

 

2.1 编译安装 MySQL 5.7

首先下载 MySQL 5.7.19 源码包:

# wget https://src.fedoraproject.org/lookaside/extras/community-mysql/mysql-boost-5.7.19.tar.gz/sha512/4f51be587c5aeb829152ba856b13b800d4f70e538e6f2f484e73d3fa249b90a6ecb27ffd41a8554ad0ed6192a69045e7949102b8248e722da63bd4ee631e395c/mysql-boost-5.7.19.tar.gz

 

更换 gcc 的 lib 库,否则编译过程中可能报错。我们只需找到原来系统自带版本的gcc的lib库替换掉就可以,方法如下:

# find / -name "libstdc++.so*" //找出系统中存在的 lib 库文件。

# cd /usr/lib64 //进入系统 lib 库目录。

# cp libstdc++.so.6 ~/ //备份原来的库文件。

# cp /usr/lib64/libstdc++.so.6.0.19 ~/ //备份原来的库文件。

# rm -rf libstdc++.so.6 //删除原来的库文件。

# rm -rf libstdc++.so.6.0.19 //删除原来的库文件。

# cp /data/gcc/lib64/libstdc++.so.6 ./ //从之前编译安装好的 gcc 7.3.0 目录复制库文件。

# cp /data/gcc/lib64/libstdc++.so.6.0.24 ./ //从之前编译安装好的 gcc 7.3.0 目录复制库文件。

 

编译安装前的准备:

# mkdir -p /data/mysql 创建程序将要安装的目录。

# mkdir -p /data/mysql/data创建数据存放目录。

# useradd mysql创建 mysql 用户。

# chown -R mysql:mysql /data/mysql/赋予用户目录权限。

# tar zxf mysql-boost-5.7.19.tar.gz解压源代码包。

# cd mysql-5.7.19进入安装目录。

 

安装编译所需要的依赖软件包:

# yum -y install make cmake bison bison-devel ncurses ncurses-devel libaio-devel autoconf automake perl-Time-HiRes libatomic

 

编译配置:

# CC=/data/gcc/bin/gcc CXX=/data/gcc/bin/g++ cmake . -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_BOOST=boost

 

开始编译:make -j2

编译过程中可能遇到错误:

error: prctl was not declared in this scope

需要修改源代码mysql-5.7.19/sql/mysqld.cc,在文件前面部分加入以下内容:

#ifdef PR_SET_DUMPABLE

#include

#endif

编译完成后安装:# make install

 

创建my.cnf配置文件:

# cd /etc

# touch my.cnf

# vi my.cnf

 

配置文件示例如下:

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

###############################基础设置######################################

#Mysql服务的唯一编号 每个mysql服务Id需唯一server-id = 1

#服务端口号 默认3306

port = 3306

#mysql安装根目录

basedir = /data/mysql

#mysql数据文件所在位置

datadir = /data/mysql/data

#临时目录 比如load data infile会用到

tmpdir = /tmp

#设置socke文件所在目录

socket = /tmp/mysql.sock

[mysqld_safe]

log-error=/var/log/mysqld/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

根据配置文件的内容创建 mysqld.log 和 mysqld.pid 文件并赋予 mysql 用户权限:

# mkdir /var/run/mysqld

# mkdir /var/log/mysqld

# cd /var/run/mysqld

# touch mysqld.pid

# cd /var/log/mysqld

# touch mysqld.log

# chown -R mysql:mysql /var/log/mysqld

# chown -R mysql:mysql /var/run/mysqld

 

初始化数据库:

# /data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data --lc_messages_dir=/data/mysql/share --lc_messages=en_US

 

记住创建的 MySQL 数据库 root 用户的随机密码。启动 MySQL:

# cd /data/mysql

# ./support-files/mysql.server start

 

使用 root 密码登录数据库:

# ./mysql -uroot -p -S /tmp/mysql.sock

 

作者:李凌

本文转自【中国信创服务社区】


转载:https://blog.csdn.net/m0_46573967/article/details/114357123
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场