MySQL运维实战(1.3)安装部署:源码编译安装
作者:俊达
引言
在大多数情况下,我们不需要自己编译MySQL源码,因为编译的MySQL和二进制包的内容基本一致。然而,有些特殊情况可能需要我们采用源码编译的方式安装MySQL:
- 安装非标准版本的MySQL:有些特殊的应用场景会使用到MySQL的非标准版本,这时候我们就需要编译源码来安装。
- 安装社区的patch、bugfix、扩展插件:通过源码编译,可以轻松地添加社区提供的补丁、修复程序和扩展插件,以满足特定需求。
- 禁用二进制版本中的某些特性:源码编译可以让用户选择禁用或启用某些特定功能,以满足自己的需求。
- 使用未编译的功能:有些功能可能在二进制版本中并没有被编译进去,而通过源码编译可以启用这些功能。
- 使用其他编译器优化插件:源码编译可以让用户选择使用其他编译器进行编译,或者进行一些个性化的优化设置。例如,如果我们想要使用Intel的C编译器。
- 链接一些其他基础库:源码编译可以允许用户链接其他基础库,例如使用tcmalloc等。
- 编译debug版本:通过源码编译可以生成debug版本的MySQL,用于调试和分析问题。
因此,了解MySQL源码编译安装对于学习MySQL运维来说,确实是非常有帮助的。这不仅可以帮助我们更好地理解MySQL的工作原理,还可以让我们在面对一些特殊需求时,能够更加灵活地处理。
1 下载源码
https://downloads.mysql.com/archives/community/

选择对应版本的源码包并下载
[root@box1 software]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.32.tar.gz
--2021-03-29 05:50:54-- https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.32.tar.gz
正在解析主机 downloads.mysql.com (downloads.mysql.com)... 137.254.60.14
正在连接 downloads.mysql.com (downloads.mysql.com)|137.254.60.14|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.32.tar.gz [跟随至新的 URL]
--2021-03-29 05:50:55-- https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.32.tar.gz
正在解析主机 cdn.mysql.com (cdn.mysql.com)... 184.27.193.3
正在连接 cdn.mysql.com (cdn.mysql.com)|184.27.193.3|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:52882168 (50M) [application/x-tar-gz]
正在保存至: “mysql-boost-5.7.32.tar.gz”
100%[================================================================================================================================================================================>] 52,882,168 2.76MB/s 用时 22s
2021-03-29 05:51:17 (2.32 MB/s) - 已保存 “mysql-boost-5.7.32.tar.gz” [52882168/52882168])
[root@box1 software]# md5sum mysql-boost-5.7.32.tar.gz
fd78ae35fb019656a7a9cb5361e96201 mysql-boost-5.7.32.tar.gz
2 解压代码
[root@box1 software]# tar xzf mysql-5.7.32.tar.gz
[root@box1 software]# ls -l
总用量 54844
drwxr-xr-x. 35 7161 31415 4096 9月 23 2020 mysql-5.7.32
-rw-r--r--. 1 root root 56154080 3月 29 05:04 mysql-5.7.32.tar.gz
3 编译安装
编译依赖条件
| 软件 |
|---|
| cmake |
| make |
| c/c++编译器 |
| boost c++库 |
| ssl库 |
编译选项
进入mysql源码目录
# cmake -L
CMake Error at cmake/boost.cmake:88 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
-- Cache values
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql
COMMUNITY_BUILD:BOOL=ON
DOWNLOAD_BOOST:BOOL=OFF
DOWNLOAD_BOOST_TIMEOUT:STRING=600
ENABLED_PROFILING:BOOL=ON
ENABLE_DTRACE:BOOL=ON
ENABLE_GCOV:BOOL=OFF
ENABLE_GPROF:BOOL=OFF
ENABLE_MEMCACHED_SASL:BOOL=OFF
ENABLE_MEMCACHED_SASL_PWDB:BOOL=OFF
FEATURE_SET:STRING=community
INSTALL_LAYOUT:STRING=STANDALONE
MYSQL_DATADIR:PATH=/usr/local/mysql/data
MYSQL_KEYRINGDIR:PATH=/usr/local/mysql/keyring
OPTIMIZER_TRACE:BOOL=ON
REPRODUCIBLE_BUILD:BOOL=OFF
TMPDIR:PATH=P_tmpdir
WITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON
WITH_ASAN:BOOL=OFF
WITH_ASAN_SCOPE:BOOL=OFF
WITH_AUTHENTICATION_LDAP:BOOL=OFF
WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON
WITH_BOOST:PATH=
WITH_CLIENT_PROTOCOL_TRACING:BOOL=ON
WITH_DEBUG:BOOL=OFF
WITH_DEFAULT_COMPILER_OPTIONS:BOOL=ON
WITH_DEFAULT_FEATURE_SET:BOOL=ON
WITH_EDITLINE:STRING=bundled
WITH_EMBEDDED_SERVER:BOOL=ON
WITH_EXTRA_CHARSETS:STRING=all
WITH_FEDERATED_STORAGE_ENGINE:BOOL=ON
WITH_INNOBASE_STORAGE_ENGINE:BOOL=ON
WITH_INNODB_MEMCACHED:BOOL=OFF
WITH_LZ4:STRING=bundled
WITH_MSAN:BOOL=OFF
WITH_PARTITION_STORAGE_ENGINE:BOOL=ON
WITH_RAPID:BOOL=ON
WITH_SSL:STRING=system
WITH_TEST_TRACE_PLUGIN:BOOL=OFF
WITH_UBSAN:BOOL=OFF
WITH_UNIT_TESTS:BOOL=ON
WITH_VALGRIND:BOOL=OFF
WITH_ZLIB:STRING=bundled
下载boost
下载 boost_1_59_0.tar.gz
解压
/root/software/boost_1_59_0
执行cmake
cmake . -DCMAKE_BUILD_TYPE=Debug \
-DMAKE_INSTALL_PREFIX=/app/dtstack/mysql \
-DCOMPILATION_COMMENT="lazybug" \
-DDEFAULT_CHARSET=utf8mb4 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST=/root/software/boost_1_59_0 \
-DWITH_SSL=system
-- Running cmake version 2.8.12.2
-- Configuring with MAX_INDEXES = 64U
-- CMAKE_GENERATOR: Unix Makefiles
-- SIZEOF_VOIDP 8
-- MySQL 5.7.32
-- Packaging as: mysql-5.7.32-Linux-x86_64
-- Local boost dir /root/software/boost_1_59_0
-- Found /root/software/boost_1_59_0/boost/version.hpp
-- BOOST_VERSION_NUMBER is #define BOOST_VERSION 105900
-- BOOST_INCLUDE_DIR /root/software/boost_1_59_0
....
-- COMPILE_DEFINITIONS: _GNU_SOURCE;_FILE_OFFSET_BITS=64;HAVE_CONFIG_H
-- CMAKE_C_FLAGS: -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement -Werror
-- CMAKE_CXX_FLAGS: -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter -Werror
-- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_C_FLAGS_DEBUG: -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DENABLED_DEBUG_SYNC -DSAFE_MUTEX
-- CMAKE_CXX_FLAGS_DEBUG: -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DENABLED_DEBUG_SYNC -DSAFE_MUTEX
-- Configuring done
-- Generating done
-- Build files have been written to: /root/software/mysql-5.7.32
执行make
make -j 4
Scanning dependencies of target INFO_SRC
Scanning dependencies of target INFO_BIN
Scanning dependencies of target abi_check
Scanning dependencies of target zlib
[ 0%] Built target INFO_SRC
[ 0%] [ 0%] Built target INFO_BIN
[ 0%] Building C object zlib/CMakeFiles/zlib.dir/adler32.o
...
[100%] Building CXX object sql/CMakeFiles/mysqld.dir/main.cc.o
Linking CXX executable mysqld
[100%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/pfs_connect_attr-t.cc.o
[100%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/sql/sql_builtin.cc.o
[100%] Building C object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/mysys/string.c.o
Linking CXX executable pfs_connect_attr-t
[100%] Built target mysql_embedded
[100%] Built target mysqltest_embedded
[100%] Built target mysqld
[100%] Built target pfs_connect_attr-t
执行make install 安装
root@box1 mysql-5.7.32]# make install
[ 0%] Built target INFO_BIN
[ 0%] Built target INFO_SRC
[ 0%] Built target abi_check
[ 0%] Built target zlib
[ 2%] Built target edit
...
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
安装的文件
[root@box1 mysql]# ls
bin docs include lib LICENSE man mysql-test README README-test share support-files
| 目录 | 内容 |
|---|---|
| bin | mysql的可执行文件和工具,脚本 |
| mysqld | |
| mysql | |
| mysqlbinlog | |
| mysqldump | |
| mysqladmin | |
| mysqld_safe | |
| docs | / |
| include | 头文件,编译时依赖 |
| lib | mysql client依赖库 |
| mysql plugin | |
| man | / |
| share | mysql error信息 |
| mysql系统初始化文件 | |
| support | 一些脚本 |
4 初始化数据库 & 启动MySQL
初始化数据库和启动MySQL的步骤和上一篇二进制安装方式一样(MySQL运维实战(1.2)安装部署:使用二进制安装部署),这里不再重复。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw
MySQL运维实战(1.3)安装部署:源码编译安装的更多相关文章
- Shell脚本一键部署——源码编译安装MySQL及自动补全工具
Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...
- yum安装与源码编译安装实际使用区别
总结一些我实际生产使用的区别: 1.yum安装不是说不行,都行,各有千秋. 2.yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下. 3.yum安装说的模块 ...
- 源码编译安装MySQL8.0.20
1 概述 本文章主要讲述了如何从源码编译安装MySQL社区版8.0.20,首先会介绍一些编译安装的相关知识,然后开始编译安装 2 源码编译安装的相关知识 2.1 make与configure make ...
- 【运维技术】Nginx安装教程(yum安装,源码编译)
安装方式 yum直接更新源安装 源码直接编译之后安装 使用yum进行直接安装 Installing a Prebuilt CentOS/RHEL Package from an OS Reposito ...
- MySQL数据库的二进制安装、源码编译和基础入门操作
一.MySQL安装 (1)安装方式: 1 .程序包yum安装 优点:安装快,简单 缺点:定死了各个文件的地方,需要修改里边的相关配置文件,很麻烦 2 .二进制格式的程序包:展开至特定路径,并经过简单配 ...
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- WordPress安装篇(5):源码编译安装LNMP并部署WordPress
与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
随机推荐
- ORACEL12C ORA-01033:ORACLE 正在初始化或关闭
问题:客户端报ORA-01033 原因:oracle12C CDB启动,但是可拔插的PDB实例未启动 解决办法: sqlplus / as sysdba--系统管理员登录 alter session ...
- 形象描绘TCP三次握手和四次挥手
一.TCP三次握手TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己.形象描绘TCP三次握手和四次挥手 张三首先向 ...
- gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量
前言 想自动化一下公司里代码的部分审查,最初想用 reviewdog 的,但是公司的域名基本都在 VPN 中访问的,gitlab ci 的容器中是访问不到的,于是乎实验了 gitlab 代码质量功能. ...
- Go函数介绍与一等公民
Go函数介绍与一等公民 函数对应的英文单词是 Function,Function 这个单词原本是功能.职责的意思.编程语言使用 Function 这个单词,表示将一个大问题分解后而形成的.若干具有特定 ...
- mybatis plus很好,但是我被它坑了!
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatis plus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得 ...
- 文心一言 VS 讯飞星火 VS chatgpt (130)-- 算法导论11.2 2题
二.用go语言,对于一个用链接法解决冲突的散列表,说明将关键字 5,28,19,15,20,33,12,17,10 插入到该表中的过程.设该表中有 9 个槽位,并设其散列函数为 h(k)=k mod ...
- STM32F103 CAN通信波特率的计算方法
前言 以下的波特率计算和实例仅针对 STM32F1系列 最近看一下CAN通信,翻出来之前做过的STM32 CAN通信的项目代码,有些概念比较模糊了,如波特率是怎么计算的. 最近接触rt-thread比 ...
- 支持向量机SVM:从数学原理到实际应用
本篇文章全面深入地探讨了支持向量机(SVM)的各个方面,从基本概念.数学背景到Python和PyTorch的代码实现.文章还涵盖了SVM在文本分类.图像识别.生物信息学.金融预测等多个实际应用场景中的 ...
- 每天5分钟复习OpenStack(十一)Ceph部署
在之前的章节中,我们介绍了Ceph集群的组件,一个最小的Ceph集群包括Mon.Mgr和Osd三个部分.为了更好地理解Ceph,我建议在进行部署时采取手动方式,这样方便我们深入了解Ceph的底层.今天 ...
- 关于如何来测一款app的思考
最近工作当中需要整体测一遍app,需要全方面思考并且尽可能覆盖所有待测点,因为整理总结了这篇关于app测试的总体大纲 一.功能测试 1.1界面测试 1.1.1导航测试 ---是否易于导航.导航是否直观 ...