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

news2025/1/16 8:15:55

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
    

    在这里插入图片描述

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

    经过了漫长的等待,进度条终于拉满,一次性成功,耗时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
    
    # 修改/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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计江苏策腾智能科技公司人事管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

第1关:节点监听机制

ZooKeeper的监听机制 节点监听机制用以保证集群之间的一致性,以及服务器可以及时通知客户端节点状态的变化。 一个节点可以被监控,包括路径中存储的数据修改,子节点路径改变,当该节点发生修改,服务器可以通知设置监控…

AVS3帧间预测

帧间预测是去除时域冗余的重要工具,随着AVS标准发展,越来越多的帧间预测工具被加入标准,主要可以分为三类:预测编码类型、运动信息编码工具、CU级和子块级运动补偿。 预测编码类型 预测编码类型是指帧间预测的不同预测方式&#…

年产5000吨芒果醋工厂设计

摘要 - 1 - 1 绪论 - 6 - 1.1 概述 - 6 - 1.1.1 芒果醋的价值 - 6 - 1.1.2 芒果醋的市场贸易需求 - 6 - 1.1.3 国内芒果醋行业发展现状 - 7 - 1.2 本课题研究的意义 - 7 - 1.3 本课题的研究内容 - 8 - 1.4 设计原则 - 8 - 2 厂址选择 - 8 - 2.1 厂址选择 - 8 - 2.2 气温 - 9 - …

21、池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)

池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略) 池化技术:事先准备好一些资源,有需要用就拿,用完再还回来线程池的好处: *降低资源的消耗:线程的不停的创建销毁…

【LeetCode 力扣】2.两数相加 Java实现 模拟 递归

题目链接:2.两数相加 1 原题描述: 2 解题思路 初看此题,其实并不难理解,我们只需要简单对加法过程进行一个模拟,即可完成。那么我们应该怎么模拟呢?首先观察题目,链表是采用的 逆序 存储&…

[旭日X3派] 初识篇 - 01

简单介绍一下 旭日X3派: 地平线旭日️ X3 派是一款面向生态开发者的嵌入式 AI 开发板,接口兼容树莓派,具有 5 TOPS 端侧推理与 4 核 ARM A53 处理能力。 可同时多路 Camera Sensor 的输入并支持 H.264/H.265 编解码。 结合地平线的高性能 A…

什么是JUC

什么是JUC JUC指的是:Java里的三个包 java.util.concurrentjava.util.concurrent.atomic:原子性java.util.concurrent.locks:lock锁回顾线程和进程 进程 程序执行的一次过程,一个进程包含一个或多个线程。进程是资源分配的单位 …

【毕业设计】深度学习行人重识别系统 - person reid

文章目录0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图4 实现效果5 部分代码6 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问…

Linux NetCore下Pdf转图片 内存溢出

Linux NetCore下Pdf转图片 内存溢出Linux PDF转图片异常查看libgdiplus版本解决方案NetCore 3.1下面调用Pdf转图片的组件,在本地windows环境下转换正常,但是到容器里面就会转换失败,查看命令行日志可以看到如下错误。 Linux PDF转图片异常 …

web期末大作业:基于html+css+js制作 学校班级网页制作----校园运动会 4页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园班级网页设计 | 我的班级网页 | 我的学校 | 校园社团 | 校园运动会 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 …

source 命令的用法(与 sh Filename、./Filename的区别)

source 命令简单来说,就是读取脚本里的语句,并在当前Shell中执行,脚本里面所有新建、改变变量的语句都会保存在当前shell里。 目录 1、source 命令的使用方法 2、source命令的妙用 3、source Filename 和 ./Filename的区别 1、source 命令…

12期数据分析-第5次数据分析作业-pandas数据清洗--第 课讲解

1.册除每列都为NAN的数据,以下操作正确的是单法题 选B: 2.?离散化就是将连续值进行分区间 选C 3.以下方法中可以修改索引名称的是多选 选ABCD。 df.index.map({0:‘A1’,1:‘B1’,2:‘C1’}) 4.?求4个人的平均分数 选BCD .…

docker安装es+mac安装Kibana工具

一、docker安装es 1、下载镜像 docker pull elasticsearch:7.9.0下载完后,查看镜像 docker images​​ 2、启动镜像 docker network create esnetdocker run -d --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.typesingle-node&…

2022 弱口令安全实验室招新赛-靶机挑战记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、ubuntu 代码执行getshell获取webshell二、server 2008r2EW 流量代理ms17010三、AD机器账号伪造漏洞域内hash传递攻击登录域控总结前言 2022 弱口令安全实验…

Chakra UI Pro (Marketing + Application UI + ECommerce)

Chakra UI Pro (Marketing Application UI ECommerce) 快速创建可访问的 React 应用 程序 Chakra UI 是一个简单、模块化且可访问的组件库,它为您提供构建 React 应用程序所需的构建块。 更少的代码。更快的速度 花更少的时间编写 UI 代码,将更多的时间…

ZYNQ之嵌入式学习----开篇实验Hello World

1 ZYNQ 嵌入式系统的开篇实验Hello World 阅读本文需先学习: FPGA学习----Vivado软件使用 1.1 ZYNQ 嵌入式系统开发流程 创建Vivado工程使用IP Integrator 创建 Processor System生成顶层HDL生成比特流,导出到SDK在SDK中创建应用工程板级验证 开篇实验任务是在 …

【前端笔记】小记一次Antd Vue 1.x (for vue2.x) icons组件按需引入的实现

因为项目有样式规范要求,和规范最相似的就是antd了,再加上项目用的是2.x,所以使用antd 1.x版本进行开发。项目完成后,理所应当对打包进行优化,于是遇到了icons组件全量引入的问题,查找了资料实现后特地记录…

R语言作业--第六章判别分析

目录 思考题4)原题目:贝叶斯判别的基本思想是什么? 练习题第3题:以舒张期血压和讯将胆固醇含量预测被检查者是否患冠心病,测得15名冠心病人和16名健康人的舒张压。X1及血浆胆固醇含量X2,结果如表6-4。 练习题第4题:…

Day03 leecode#有效的括号#合并两个有序链表

题目描述: 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必…