Centos7.6 源码编译部署percona mysql 5.7.39-42

Centos7.6 源码编译部署percona mysql 5.7.39-42

参考链接:

  1. mysql5.7.35源码编译安装部署
  2. CentOS7 编译安装 Percona Server 5.7
  3. percona Server for MySQL 5.7源码安装

一、部署环境准备

  1. 更换阿里云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
    
  2. 安装编译需要的依赖包

    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:
        字符终端处理库
    

二、安装包下载

  1. percona-server-5.7.39-42.tar.gz

    源码包下载地址:https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.39-42/source/
    
  2. boost_1_59_0.tar.gz

    Boost 库是一个经过千锤百炼、可移植、提供源代码的 C++ 库,作为标准库的后备,是 C++ 标准化进程的发动机之一。 Boost 库由 C++ 标准委员会库工作组成员发起,在 C++ 社区中影响甚大,其成员已近 2000 人。Boost 库为我们带来了最新、最酷、最实用的技术,是不折不扣的 “准” 标准库。
    
  3. jemalloc-5.2.1.tar.gz

    jemalloc 是由 Jason Evans 在 FreeBSD 项目中引入的新一代内存分配器。它是一个通用的 malloc 实现,侧重于减少内存碎片和提升高并发场景下内存的分配效率.
    

三、源码编译

  1. 编译安装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
    
  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编译参数的一个选项。
    
  3. 编译安装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
    

    Centos7.6 源码编译部署percona mysql 5.7.39-42_第1张图片

    开始漫长的编译过程~
    Centos7.6 源码编译部署percona mysql 5.7.39-42_第2张图片

    经过了漫长的等待,进度条终于拉满,一次性成功,耗时68.6分钟(编译速度取决于你的cpu性能,我是小破电脑o(╥﹏╥)o)
    Centos7.6 源码编译部署percona mysql 5.7.39-42_第3张图片

    编译完所有的文件都在/boss/soft/mysql目录下。

  4. 启动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/

你可能感兴趣的:(运维,Linux,数据库,Percona,Mysql,Centos7.6,源码部署,Mysql5.7.39)