• 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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    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
      
      • 1
      # 相关依赖包的作用
      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
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    二、安装包下载

    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/
      
      • 1
    2. boost_1_59_0.tar.gz

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

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

    三、源码编译

    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    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编译参数的一个选项。
      
      • 1
      • 2
      • 3
      • 4
      • 5
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63

      在这里插入图片描述

      开始漫长的编译过程~
      在这里插入图片描述

      经过了漫长的等待,进度条终于拉满,一次性成功,耗时68.6分钟(编译速度取决于你的cpu性能,我是小破电脑o(╥﹏╥)o)
      在这里插入图片描述

      编译完所有的文件都在/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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      # 修改/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 参数无法识别。(新版本去掉了该参数,注释掉即可)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20

    后记

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    Percona Mysql 5.7 各版本源码下载地址:https://www.percona.com/downloads/Percona-Server-5.7/
    
    • 1
  • 相关阅读:
    安装集群kafka
    为给git设置代理
    互联网真实赚钱平台有哪些?分享六大类正规靠谱的线上平台
    蓝桥杯每日一题2023.11.9
    基于ssm的在线法律咨询平台的设计与实现
    【Python 千题 —— 基础篇】整数转换为布尔值
    无法查看 spring-boot-starter-parent的pom.xml
    vscode配置opencv/qt配置opencv)
    免费可商用图片素材网站,建议收藏
    《构建之法》笔记---第十章 典型用户和场景
  • 原文地址:https://blog.csdn.net/zwx45987568/article/details/127885598