首先,如果你學(xué)MySQL只是玩玩讶迁,或者只是自用。那么MySQL編譯你就不需要了解了核蘸。
因為搭建一個yum倉庫巍糯,簡單的yum install **** 安裝mysql就可以滿足你所有的需求。
什么人需要看下一這篇文章:
想成為技術(shù)管理者客扎,重建MySQL數(shù)據(jù)庫信心祟峦,希望你的數(shù)據(jù)庫有技術(shù)體系建設(shè)。
以后的目標是架構(gòu)師徙鱼,想為以后的MySQL Replication宅楞、Semi-Sync Replication、Group Replication打基礎(chǔ)袱吆。
終極目標是開發(fā)厌衙,需要理解MySQL原理、優(yōu)勢杆故、劣勢迅箩?
在Linux下的編譯與調(diào)試,通常不用GUI工具处铛,操作起來更簡單直接饲趋,編譯過程中,依賴一些包及工具撤蟆,需要先準備好奕塑。
主要包括如下5個:
cmake-2.8.12.2 ,在 Centos 上面 家肯,可以通過 yum install cmake 來安裝 龄砰,如果安裝源沒有 , 就自行下載源碼來安裝 ,過程比較簡單 换棚。
bison-2.4.1 式镐,同樣可以使用 yum install bison 來安裝 ,如果找不到的話 固蚤,可以自行http:/ / gnuwin32.sourceforge.net/packages/bison.htm 下 載編譯安裝娘汞。
libaio-devel ,在 Centos 下面 夕玩,可以直接通過命令 yum install libaio-devel.x86_64 安裝你弦。
boost_ l_59_0.tar.gz ,從 MySQL 官網(wǎng)就可以下載 燎孟,和 MySQL 源碼放在一起禽作。
如果缺少其他一些包的話,一般是一些基礎(chǔ)包 揩页,可以相應(yīng)下載安裝即可 旷偿。
將 mysql-5. 7.16.tar.gz 解壓 ,解壓之后可 以看到其源碼組織結(jié)構(gòu)(昨天已經(jīng)把組織結(jié)構(gòu)說了)碍沐。
在源碼目錄下有 一個名為 CMakeLists.txt 的文件 狸捅,這個文作就干 用來通過 CMake 配置編譯環(huán)境的入口文件 ,在每一個需要被編譯的子目 錄中都有這么一個文件 累提,通過它們就可 以在 Linux 下生成相應(yīng)的 Makefile 文件了尘喝。
編譯之前,最好是在源碼目錄下mkdir一個單獨的目錄斋陪,用來存放中間文件朽褪,這樣不會污染源碼目錄,在你想要清除環(huán)境的時候无虚,直接將這個編譯目錄刪除即可缔赠。
例子:
cd mysql-5.7.16
mkdir yuanma
cd yuanma
再將下載好的文件boost_1_59_0.tar.gz 放到源碼目錄中,以便生成編譯環(huán)境時使用友题。
下面是CMake命令來生成的編譯環(huán)境
cmake ? ? -DBUILD_CONFIG=mysql_release \
-DINSTALL LAYOUT=STANDALONE \
-DCMAKE BU LD_TYPE=RelWithDebinfo \
-DENABLE DTRACE =OFF \
-DWITH EMBEDDED_SERVER=OFF \
-DWITH NNODB_MEMCACHED=ON \
-DWITH SSL=bundled \
-DWITH ZLIB=system \
-DWITH PAM=ON \
-DCMAKE_INSTALL_PREFIX=/ var /my sql/ \
-DINSTALL_PLUGINDIR=”/var /mysql / b/ plugin” \
-DDE FAULT CHARSET=utf 8 \
-DDEFAULT_COLLATION=utf 8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT=“MySQL Server (GPL)”\
-DWITH_DEBUG=OFF \
-DWITH_BOOST= ? ?
上面的命令中嗤堰,有一點需要注意,因為當前所對應(yīng)的相對目錄為mysql-5.7.16/yuanma度宦,而源碼的目錄為mysql-5.7.16踢匣,所以CMake命令指定源碼目錄為“ ? ?”,不然CMake找不到路徑戈抄。
上面的編譯環(huán)境如果看不懂离唬,沒關(guān)系,看我下面的Excel表:
如果有特殊需求划鸽,可以在CMake命令中通過在前面加上-D來指定相應(yīng)的值输莺,選擇是否啟用戚哎。
執(zhí)行和這個命令進行CMake的過程,就是配置編譯環(huán)境的過程嫂用。
如果看到型凳,下面信息,代表配置已經(jīng)完成尸折,可以做真正編譯工作了啰脚。
--configuring done
--Generating done
此時你會發(fā)現(xiàn),在當前目錄下出現(xiàn)了Makefile文件实夹,這就是上面CMake配置時生成的,有了Makefile粒梦,就可以通過make來編譯MySQL源碼了亮航。
編譯時,直接在debug下執(zhí)行:
make -j 24(這個參數(shù)可以加快編譯過程)
編譯完成之后匀们,需要安裝:
make install
因為在CMake執(zhí)行時缴淋,指定參數(shù)CMAKE_INSTALL_PREFIX 為var/mysql,安裝完成之后,所有關(guān)于MySQL需要的內(nèi)容都會安裝在這個目錄下面泄朴,內(nèi)容如下面:
drwxr-xr-x 2 root root 4096 Jan 10 12:16 bin
-rw-r--r-- 1 root root 17987 Nov 28 21:32 COPYING
我就不全部打了重抖,你cd進這個目錄 ls -l 會顯示所有
在var/mysql這個目錄里面,包含了所有的MySQL編譯生成的可執(zhí)行文件祖灰,其中包括mysql钟沛、mysqld、mysqldump局扶、mysqlbinlog等文件恨统。
這些文件在bin目錄下,這個目錄三妈,就是MySQL在運行時畜埋,需要指定的basedir。
之所以編譯安裝畴蒲,是因為里面的參數(shù)可以隨你自己調(diào)動悠鞍,根據(jù)自己的需求來,既不會導(dǎo)致空間浪費模燥,又可以避免資源浪費咖祭。