参考链接:
更换阿里云yum源
cd /etc/yum.repos.d/
mkdir bak && mv *.repo bak
wget -O /etc/yum.repos.d/Centos-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release
yum clean all
yum makecache
安装编译需要的依赖包
yum -y install readline-devel gcc gcc-c++ boost make cmake bison bison-devel ncurses-devel libaio-devel perl git libtirpc libtirpc-devel curl-devel autoconf zlib zlib-devel openssl-devel kernel-headers
# 相关依赖包的作用
cmake:由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost:从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本, 这个选择源码安装
GCC:是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC
bison:Linux 下 C/C++语法分析器
ncurses:字符终端处理库
percona-server-5.7.39-42.tar.gz
源码包下载地址:https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.39-42/source/
boost_1_59_0.tar.gz
Boost 库是一个经过千锤百炼、可移植、提供源代码的 C++ 库,作为标准库的后备,是 C++ 标准化进程的发动机之一。 Boost 库由 C++ 标准委员会库工作组成员发起,在 C++ 社区中影响甚大,其成员已近 2000 人。Boost 库为我们带来了最新、最酷、最实用的技术,是不折不扣的 “准” 标准库。
jemalloc-5.2.1.tar.gz
jemalloc 是由 Jason Evans 在 FreeBSD 项目中引入的新一代内存分配器。它是一个通用的 malloc 实现,侧重于减少内存碎片和提升高并发场景下内存的分配效率.
编译安装jemalloc
# 上传jemalloc-5.2.1.tar.gz到/boss/pkg目录下
cd /boss/pkg
tar zxvf jemalloc-5.2.1.tar.gz
cd jemalloc-5.2.1/
./autogen.sh
make
make install
cd ../
ln -s /usr/local/lib/libjemalloc.so.2 /usr/lib64/libjemalloc.so.2
解压boost
# 上传boost_1_59_0.tar.gz到/boss/pkg目录下
cd /boss/pkg
tar -xvzf boost_1_59_0.tar.gz# boost_1_59_0的作用是在编译过程中提供所需要的相关库文件,作为mysql编译参数的一个选项。
编译安装MySQL
# 卸载默认安装的MariaDB
[root@localhost jemalloc-5.2.1]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
#根据显示的版本卸载MariaDB
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64# 创建mysql组、mysql用户
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql# 创建相关目录
mkdir -p /boss/soft/mysql
mkdir -p /boss/soft/mysql/etc
mkdir -p /boss/soft/mysql/run
mkdir -p /boss/softdata/mysql/data
chown -R mysql:mysql /boss/softdata/mysql/data /boss/soft/mysql# 上传percona-server-5.7.39-42.tar.gz到/boss/pkg目录下
cd /boss/pkg
tar zxvf percona-server-5.7.39-42.tar.gz
cd percona-server-5.7.39-42/#注意DWITH_BOOST文件位置。cmake . \
-DSYSCONFDIR=/boss/soft/mysql/etc \
-DCMAKE_INSTALL_PREFIX=/boss/soft/mysql \
-DMYSQL_DATADIR=/boss/softdata/mysql/data \
-DMYSQL_UNIX_ADDR=/boss/soft/mysql/run/mysql.sock \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3318 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=UTF8MB4 \
-DDEFAULT_COLLATION=UTF8MB4_GENERAL_CI \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BOOST=/boss/pkg/boost_1_59_0 \
-DDOWNLOAD_BOOST=1 \
-DENABLE_DOWNLOADS=1 \
-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" \
-DWITH_SAFEMALLOC=OFF \
-DWITH_EDITLINE=0 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system# 注:cmake和编译安装的时间都比较长,在编译过程如果提示错误,可以根据提示完善相关安装条件,然后执行下面的命令后,再重新编译安装
make clean
rm -f CMakeCache.txt# 根据cpu个数指定并行参数
make -j 4
make install# 编译参数不能加 -DWITH_SYSTEMD=1 ,否则无法生成mysqld_safe文件,影响一键部署启动mysqld服务。
# 使用jemalloc来优化mysql可使用编译参数:-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF# 编译参数详解参考:https://www.cnblogs.com/taosim/articles/4252982.html
# 编译参数详解参考:https://www.jianshu.com/p/bcc952483ed6
开始漫长的编译过程~
经过了漫长的等待,进度条终于拉满,一次性成功,耗时68.6分钟(编译速度取决于你的cpu性能,我是小破电脑o(╥﹏╥)o)
编译完所有的文件都在/boss/soft/mysql目录下。
启动mysql
mkdir -p /boss/softdata/mysql/logs/{binlog,relay_log}
chown -R mysql.mysql /boss/soft/mysql
chown -R mysql.mysql /boss/softdata/mysql/# 创建mysql配置文件/etc/my.cnf
[client]
default_character_set = utf8mb4
port = 3318
socket = /boss/soft/mysql/run/mysqld.sock[mysql]
default_character_set = utf8mb4
prompt = "\u@mysqldb \R:\m:\s [\d]> "
no_auto_rehash
user = root[mysqld]
server-id=1
user = mysql
port = 3318
log-bin=mysql-bin
init_connect = 'SET NAMES utf8mb4'
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
basedir = /boss/soft/mysql
datadir = /boss/softdata/mysql/data
socket = /boss/soft/mysql/run/mysqld.sock
pid_file = /boss/soft/mysql/run/mysqld.pid
slow_query_log_file = /boss/softdata/mysql/logs/slow.log
log_bin = /boss/softdata/mysql/logs/binlog/mysql_binlog.log
log_bin_index = /boss/softdata/mysql/logs/binlog/mysql_binlog.index
relay_log = /boss/softdata/mysql/logs/relay_log/mysql_relay_bin
relay_log_index = /boss/softdata/mysql/logs/relay_log/mysql_relay_bin.index
log_error = /boss/softdata/mysql/logs/error.log
# 修改/etc/profile在最后一行添加环境变量配置并使环境变量生效
echo 'export PATH=/boss/soft/mysql/bin:$PATH' >> /etc/profile && source /etc/profile# 初始化数据库
mysqld --initialize-insecure --user=mysql --basedir=/boss/soft/mysql --datadir=/boss/softdata/mysql/data --defaults-file=/etc/my.cnf# 启动mysql数据库
/boss/soft/mysql/support-files/mysql.server start# 数据库root用户默认没有初始密码,输入以下命令后,连续按两次回车即可登录,记得修改密码。
mysql -uroot -p# 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
flush privileges;# 由于此次工作的主要内容是源码编译perconna mysql,编译成功后,服务启动工作都是简单的,如果有报错,一般都是小问题,自行百度解决即可。# 启动报错问题
1. /etc/my.cnf 中myisam_repair_threads 参数无法识别。(新版本去掉了该参数,注释掉即可)
后记
# cmake参数说明
-DCMAKE_INSTALL_PREFIX=dir_name 基础的文件夹,对应mysqld的--basedir参数
-DMYSQL_DATADIR=dir_name 数据存放目录
-DSYSCONFDIR=dir_name 默认配置my.cnf目录
-DWITH_MYISAM_STORAGE_ENGINE 添加MYISAM引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE 添加InnoDB引擎支持
-DWITH_ARCHIVE_STORAGE_ENGINE 添加ARCHIVE引擎支持
-DMYSQL_UNIX_ADDR 指定mysql.sock位置
-DWITH_PARTITION_STORAGE_ENGINE 安装支持数据库分区
-DINSTALL_BINDIR=dir_name bin目录位置
-DINSTALL_DOCDIR=dir_name 文档目录位置
-DINSTALL_DOCREADMEDIR=dir_name Readme文件位置
-DINSTALL_INCLUDEDIR=dir_name Include目录位置
-DINSTALL_LAYOUT=name 布局选项,包括Standalone、RPM、SRV4、DEB
-DWITH-SYSTEMD 可以使用systemd控制mysql服务
-DEXTRA_CHARSETS 使mysql支持所有的扩展字符
-DCMAKE_BUILD_TYPE RelWithDebInfo: 默认值,启用optimizations,同时生成调试信息 ,Debug: 禁用optimizations, 同时生成调试信息
-DENABLE_DTRACE 是否启用dtrace
-DWITH_EMBEDDED_SERVER 是否构建libmysqld嵌入式服务器库
-DWITH_INNODB_MEMCACHED 是否生成memcached共享库
-DWITH_SSL 加载SSL库 •bundled:使用与分发捆绑的库。•system:使用系统库。这是默认设置
-DWITH_ZLIB 某些功能要求使用压缩库支持构建服务器,例如 compress()和uncompress()函数,以及客户端/服务器协议的压缩, 这个使用_zlib表示zlib支持的来源: •bundled:使用与分发捆绑的zlib库。•system:使用系统zlib库。这是默认设置
-DINSTALL_PLUGINDIR 插件目录
-DDEFAULT_CHARSET 设置mysql的默认字符集
-DDEFAULT_COLLATION 设置默认字符集校对规则
-DWITH_EDITLINE 加载libedit/editline库 •bundled:使用与分发捆绑的库。 •system:使用系统库。这是默认设置
-DCOMPILATION_COMMENT 编译信息,后面启动的时候会看到
-DWITH_DEBUG 支持启用调试
-DWITH_BOOST 指向boost库所在目录
-DDOWNLOAD_BOOST 如果查找不到boost则下载boost
Percona Mysql 5.7 各版本源码下载地址:https://www.percona.com/downloads/Percona-Server-5.7/
上一篇:大模型相关资料整理