Centos7.6 源码编译部署percona mysql 5.7.39-42
参考链接:
- mysql5.7.35源码编译安装部署
- CentOS7 编译安装 Percona Server 5.7
- percona Server for MySQL 5.7源码安装
一、部署环境准备
-
更换阿里云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/