一、源碼編譯的優缺點:
1.1 源碼編譯雖然繁瑣複雜,但是有最好的平台适應性。
1.2 能展現出最好的性能(根據系統狀态來産出何時的目的代碼)
1.3 支援特殊的字元集
1.4 可以定制存儲引擎
1.5 編譯的過程,也是熟悉MySQL的過程。
二、源碼包下載下傳(官網 www.mysql.com)
DOWNLOADS——Archives(歸檔目錄)——MySQL Community Server
下載下傳選項:
Product Version 産品版本 → 選擇版本(例如:8.0.12)
Operating System 作業系統 → 選擇Source Code(源代碼)
OS Version 系統版本 → 選擇Generic Linux (Architecture Independent) 通用Linux(架構獨立)
下載下傳 Compressed TAR Archive,Includes Boost Headers → 選擇帶有Boost頭的壓縮包(
MySQL需要Boost C++庫建構 )![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicWZwpmLjZWZiFWN2YzMxMWOlRzMxEDZ2EGNwImMkJTM0IDM3MGMxEDNzMWO08CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpeg)
[root@JSH-01 ~]# cd /usr/local/src/
[root@JSH-01 src]# ls
LinuxProbe.pdf mysql-boost-8.0.12.tar.gz
[root@JSH-01 src]# tar zxvf mysql-boost-8.0.12.tar.gz
[root@JSH-01 src]# ls
LinuxProbe.pdf mysql-8.0.12 mysql-boost-8.0.12.tar.gz
四、建構編譯環境:使用cmake指令(需要通過yum安裝)生成Makefile檔案
4.1 cmake的基本使用方法
4.1.1 檢視所有編輯選項:在源碼目錄執行 “ccmake .”或者“cmake . -LH” 指令(.指的是目前目錄)
4.1.2 編譯參數指定方式為: -DXXX=YYY 例如 -DMYSQL_DATADIR=/usr/local/var
4.1.3 cmake指令執行完畢後會生成
MakeFile檔案,用于對源代碼進行編譯
4.1.4 cmake為嵌套方式組織,每個目錄下都有CMakeList.txt檔案,在根目錄下執行cmake指令會一次處理每個子目錄下的CMakeList.txt 并生成MakeFile檔案
4.1.5 cmake執行一次之後會儲存執行狀态,如果要重新執行,要删除
源碼目錄下的CMakeList.txt檔案4.1.6 如圖為解壓縮後,目錄内的檔案内容
4.2 cmake指令的路徑參數
4.2.1 -DCMAKE_INSTALL_PREFIX 指定安裝目錄(必須指定)
4.2.2 -DMYSQL_DATADIR 指定MySQL資料目錄(必須指定)
4.2.3 -DINSTALL_SBINDIR 指定MySQL安裝位置(預設為bin)
4.2.4 -DINSTALL_MYSQLSHAREDIR 指定share目錄位置(預設為share)
4.2.5 -DINSTALL_LIBDIR 指定lib庫安裝位置(預設為lib)
4.2.6 -DINSTALL_MANDIR 指定幫助文檔安裝位置(預設為man)
4.2.7 -DINSTALL_MYSQLTESTDIR 指定測試套件安裝位置(預設為mysql-test)
4.2.8 -DINSTALL_PLUGINDIR 指定插件安裝位置(預設為plugin)
4.2.9 -DSYSCONFDIR 配置檔案目錄
4.3 cmake指令的存儲引擎配置參數
4.3.1 -DWITH_ARCHIVE_STORAGE_ENGINE 歸檔引擎(預設打開)
4.3.2 -DWITH_BLACKHOLE_STORAGE_ENGINE 黑洞引擎(預設打開)
4.3.3 -DWITH_FEDERATED_STORAGE_ENGINE 聯邦引擎(預設打開)
4.3.4 -DWITH_INNOBASE_STORAGE_ENGINE Innodb引擎(5.5版之後預設打開)
4.3.5 -DWITH_INNODB_MEMCACHED Innodb的memcached擴充(預設關閉)
4.3.6 -DWITH_PARTITION_STORAGE_ENGINE 分區引擎(預設打開)
4.3.7 -DWITH_PERFSCHEMA_STORAGE_ENGINE 性能統計表(預設打開)
4.4 與cmake編譯相關的參數
4.4.1 -DWITH_DEBUG = ON|OFF 指定編譯debug版本還是release版本
4.4.2 指定gcc編譯參數,例如:“-O3 -g -DNDEBUG”
-DCMAKE_CXX_FLAGS 可以指定C代碼參數
-DCMAKE_C_FLAGS 指定C++代碼參數
-DCMAKE_C_FLAGS_RELEASE = -O3 -DNDEBUG
-DCMAKE_CXX_FLAGS_RELEASE
4.5 指定編譯器
-DCMAKE_C_COMPILER = /usr/bin/gcc
-DCMAKE_CXX_COMPILER = /usr/bin/c++
4.6 關于cmake的詳細介紹,請參考 https://www.cnblogs.com/hllnj2008/p/4043778.html
4.7 編譯腳本舉例(shell腳本)
#!/bin/sh
base_path=/usr/local/src/mysql
cmake .
-DCMAKE_INSTALL_PREFIX = /usr/local/src/mysql \
-DMYSQL_DATADIR = /usr/local/src/mysql/var \
-DINSTALL_SBINDIR = libexec \
-DINSTALL_LIBDIR = lib/mysql \
-DSYSCONFDIR = /usr/local/src/mysql/etc \
-DMYSQL_UNIX_ADDR = /usr/local/src/mysql/tmp/mysql.sock \
-DINSTALL_SCRIPTDIR = bin \
-DINSTALL_MYSQLSHAREDIR = share \
-DINSTALL_SUPPORTFILEDIR = share/mysql \
-DWITH_EXTRA_CHARSETS = all \
-DWITH_DEBUG = 0 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE = 1 \
-DWITH_INNODB_MEMCACHED = 1 \
-DWITH_MYISAM_STORAGE_ENGINE = 1 \
-DWITH_INNOBASE_STORAGE_ENGINE = 1 \
-DWITH_PARTITION_STORAGE_ENGINE = 1 \
-DENABLED_PROFILING = 0 \
-DCMAKE_C_FLAGS = "-O3" \
-DCMAKE_CXX_FLAGS = "-O3" \
-DCMAKE_C_FLAGS_RELEASE = "-O3" \
-DCMAKE_CXX_FLAGS_RELEASE = "-O3" \
make -j 24
make install
#create etc,log,tmp,var
五、執行編譯 make -j N(N為線程數,一般為伺服器中CPU的個數)
六、安裝編譯産出物 make install
七、建立目錄 etc log var tmp
八、建立配置檔案 etc/my.cnf
九、安裝系統表 ./bin/mysql_install_db
十、登入資料庫并執行操作