mysql 5.5 編譯詳解

說明藍色=命令名稱mysql

      淺綠=命令參數linux

      淺藍=選項c++

      紫色=目錄sql

      系統環境:CentOS  5.7  x86_64數據庫

1、安裝簡介緩存

用戶名:mysql
安裝目錄:/usr/local/mysql-5.5.20
數據庫目錄:/data/mysql/data
源碼包:
mysql-5.5.21.tar.gz服務器

自動部署腳本可在 http://linux521.blog.51cto.com/4099846/803623 下載socket

2、安裝準備tcp

添加用戶
useradd -s
/sbin/nologin mysqlide

創建所需目錄
mkdir -p /data/mysql/data
chown -R mysql:mysql
/data/mysql

安裝編譯所需文件或程序
yum install
gcc gcc-c++ cmake  ncurses-devel bison

下載源碼包
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.21.tar.gz/from/http://mirror.services.wisc.edu/mysql/  -P
/usr/local/src

3、編譯安裝

cd /usr/local/src
tar xvf mysql-5.5.21.tar.gz
cd
mysql-5.5.21

CFLAGS="-O3" CXX=gcc
CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
cmake -DMYSQL_USER=mysql \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.21 \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1  \
-DWITH_DEBUG=0
注:詳細參數見下文補充內容。

make -j 2 && make install
注:-j 用來指定CPU核心數,可加快編譯速度,不加也能夠。

chown -R mysql:mysql /usr/local/mysql-5.5.21/

mv /usr/local/src/mysql-5.5.21/support-files/my-large.cnf /etc/my.cnf
注:在/usr/local/src/mysql-5.5.21/support-files/文件夾中有多個my-****.cnf 配置文件,具體用那一個配置文件根據本身實際狀況。能夠經過查看配置文件的頭部信息來了解配置問價適合的配置。例如
[root@localhost support-files]# head /usr/local/src/mysql-5.5.21/support-files/my-huge.cnf
# Example MySQL config file for very large systems.
#
# This is for a large system with memory of 1G-2G where the system runs mainly
# MySQL.

mv /usr/local/src/mysql-5.5.21/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --level 345 mysqld
on

/usr/local/mysql-5.5.21/scripts/mysql_install_db --user=mysql \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql-5.5.21/ \
--datadir=/data/mysql/data/

echo "export PATH=/usr/local/mysql-5.5.21/bin:$PATH" >>/etc/profile
source /etc/profile
   
補充:
從mysql5.5起,mysql源碼安裝開始使用cmake。下面是 mysql 5.5 與之前的參數對照:

configure Command CMake Command
./configure cmake .
./configure --help cmake . -LH or ccmake .

Parameter configure Option CMake Option CMake Notes
Installation base directory --prefix=/usr -DCMAKE_INSTALL_PREFIX=/usr
 
mysqld directory --libexecdir=/usr/sbin -DINSTALL_SBINDIR=sbin interpreted relative to prefix
Data directory --localstatedir=/var/lib/mysql -DMYSQL_DATADIR=/var/lib/mysql
 
Config directory (for my.cnf) --sysconfdir=/etc/mysql -DSYSCONFDIR=/etc/mysql
 
Plugin directory --with-plugindir=/usr/lib64/mysql/plugin -DINSTALL_PLUGINDIR=lib64/mysql/plugin interpreted relative to prefix
Man page directory --mandir=/usr/share/man -DINSTALL_MANDIR=share/man interpreted relative to prefix
Shared-data directory --sharedstatedir=/usr/share/mysql -DINSTALL_SHAREDIR=share this is where aclocal/mysql.m4 should be installed
Library installation directory --libdir=/usr/lib64/mysql -DINSTALL_LIBDIR=lib64/mysql interpreted relative to prefix
Header installation directory --includedir=/usr/include/mysql -DINSTALL_INCLUDEDIR=include/mysql interpreted relative to prefix
Info doc directory --infodir=/usr/share/info -DINSTALL_INFODIR=share/info interpreted relative to prefix

Parameter configure Option CMake Option CMake Notes
readline library --with-readline -DWITH_READLINE=1
 
SSL library --with-ssl=/usr -DWITH_SSL=system
 
zlib library --with-zlib-dir=/usr -DWITH_ZLIB=system
 
libwrap library --without-libwrap -DWITH_LIBWRAP=0
 

Parameter configure Option CMake Option CMake Notes
TCP/IP port number --with-tcp-port-=3306 -DMYSQL_TCP_PORT=3306
 
UNIX socket file --with-unix-socket-path=/tmp/mysqld.sock -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
 
Enable LOCAL for LOAD DATA --enable-local-infile -DENABLED_LOCAL_INFILE=1
 
Extra charsets --with-extra-charsets=all -DEXTRA_CHARSETS=all default is "all"
Default charset --with-charset=utf8 -DDEFAULT_CHARSET=utf8
 
Default collation --with-collation=utf8_general_ci -DDEFAULT_COLLATION=utf8_general_ci
 
Build the server --with-server none
 
Build the embedded server --with-embedded-server -DWITH_EMBEDDED_SERVER=1
 
libmysqld privilege control --with-embedded-privilege-control none always enabled?
Install the documentation --without-docs none
 
Big tables --with-big-tables, --without-big-tables none tables are big by default
mysqld user --with-mysqld-user=mysql -DMYSQL_USER=mysql mysql is the default
Debugging --without-debug -DWITH_DEBUG=0 default is debugging disabled
GIS support --with-geometry none always enabled?
Community features --enable-community-features none always enabled
Profiling --disable-profiling -DENABLE_PROFILING=0 enabled by default
pstack --without-pstack none pstack is removed
Assembler string functions --enable-assembler none
 
Build type --build=x86_64-pc-linux-gnu no equivalent unneeded?
Cross-compile host --host=x86_64-pc-linux-gnu no equivalent unneeded?
Client flag --with-client-ldflags=-lstdc++ none unneeded
Client flag --enable-thread-safe-client none unneeded, clients are always thread safe
Comment --with-comment='string' -DWITH_COMMENT='string'
 
Shared/static binaries --enable-shared --enable-static none there is only DISABLE_SHARED
Memory use --with-low-memory none unneeded

1. 命令語法:

從新編譯時,須要清除舊的對象文件和緩存信息
  # make clean
  # rm -f  CMakeCache.txt

2.安裝選項

CMAKE_INSTALL_PREFIX值是安裝的基本目錄,其餘cmake選項值是不包括前綴,是相對路徑名,絕對路徑包括CMAKE_INSTALL_PREFIX路徑。如-DINSTALL_SBINDIR=sbin的絕對路徑是/usr/local/mysql/sbin
 
 3.存儲引擎選項
mysql存儲引擎是插件式的,所以插件控制選項能夠指定那個存儲引擎安裝。
configure編譯插件選項--with-plugins=csv,myisam,myisammrg,heap,innobase,
archive,blackhole在cmake中沒有直接對應的相同選項。對於csv,myisam,myisammrg,heap在cmake中是不須要明確指定存儲引擎的名稱,由於它們是強制性安裝。

可使用如下選擇來安裝innodb,archive,blackhole存儲引擎
 -DWITH_INNOBASE_STORAGE_ENGINE=1

 -DWITH_ARCHIVE_STORAGE_ENGINE=1

 -DWITH_BLACKHOLE_STORAGE_ENGINE=1

 (1可使用on代替)
 
 若是既不是-DWITH_<ENGINE>_STORAGE_ENGINE 也不是 -DWITHOUT_<ENGINE>_STORAGE_ENGINE 來指定存儲引擎,該存儲引擎將安裝成共享模塊式的。若是不是共享模塊式的將排除在外。共享模塊安裝時必須使用INSTALL PLUGIN語句或--plugin-load纔可使用。

4.其餘選項
 以前MySQL的編譯選項大多數都支持。新舊版本之間的安裝選項映射成大寫字母,刪除選項前面破折號,中間字符間的破折號替換成下劃線。如:
  --with-debug => WITH_DEBUG=1

  --with-embedded-server => WITH_EMBEDDED_SERVER

5.調試配置過程
  使用configure編譯完將生成config.log和config.status文件。
  使用cmake編譯完在CMakeFiles目錄下生成CMakeError.log 和CMakeOutput.log文件。

編譯參數參考:

BUILD_CONFIG   採用官方發行版一致的編譯參數 CMAKE_BUILD_TYPE 指定產品編譯說明信息   RelWithDebInf CMAKE_INSTALL_PREFIX 指定MySQL安裝路徑  /usr/local/mysql CPACK_MONOLITHIC_INSTALL是否創建單個安裝包文件 OFF   5.5.7 DEFAULT_CHARSET  MYSQL 默認字符集  latin1   5.5.7 DEFAULT_COLLATION MYSQL 默認排序字符集  latin1_swedish_ci 5.5.7 ENABLE_DEBUG_SYNC 是否啓用同步調試功能  ON   5.5.7 ENABLE_DOWNLOADS 是否下載可選文件  OFF   5.5.7 ENABLE_DTRACE  是否包含 DTrace 支持     5.5.7 ENABLE_GCOV  是否包含 Gcov 支持     5.5.14 ENABLED_LOCAL_INFILE 是否啓用本地 LOAD DATA INFILE OFF   5.5.7 ENABLED_PROFILING 是否啓用代碼查詢分析  ON   5.5.7 INSTALL_BINDIR  MySQL 主執行文件目錄  PREFIX/bin  5.5.7 INSTALL_DOCDIR  文檔安裝路徑   PREFIX/docs  5.5.7 INSTALL_DOCREADMEDIR 自述文件目錄   PREFIX   5.5.7 INSTALL_INCLUDEDIR 頭文件目錄   PREFIX/include  5.5.7 INSTALL_INFODIR  關於信息文件目錄  PREFIX/docs  5.5.7 INSTALL_LAYOUT  選擇預約義的安裝  STANDALONE  5.5.7 INSTALL_LIBDIR  庫文件目錄   PREFIX/lib  5.5.7 INSTALL_MANDIR  手冊頁面目錄   PREFIX/man  5.5.7 INSTALL_MYSQLSHAREDIR 共享數據目錄   PREFIX/share  5.5.7 INSTALL_MYSQLTESTDIR mysql-test 目錄   PREFIX/mysql-test 5.5.7 INSTALL_PLUGINDIR 插件目錄   PREFIX/lib/plugin 5.5.7 INSTALL_SBINDIR  服務器超級用戶執行文件目錄 PREFIX/bin  5.5.7 INSTALL_SCRIPTDIR 腳本目錄   PREFIX/scripts  5.5.7 INSTALL_SHAREDIR aclocal/mysql.m4 安裝目錄 PREFIX/share  5.5.7 INSTALL_SQLBENCHDIR sql-bench 性能測試工具目錄 PREFIX   5.5.7 INSTALL_SUPPORTFILESDIR 擴展支持文件目錄  PREFIX/support-files 5.5.7 MYSQL_DATADIR  數據庫存放目錄      5.5.7 MYSQL_MAINTAINER_MODE 是否啓用MySQL的維護環境  OFF   5.5.7 MYSQL_TCP_PORT  TCP/IP 端口號   3306   5.5.7 MYSQL_UNIX_ADDR  Unix Socket 套接字文件  /tmp/mysql.sock  5.5.7 SYSCONFDIR  選項配置文件目錄     5.5.7 WITH_COMMENT  編譯環境發表評論     5.5.7 WITH_DEBUG  是否包括調試支持  OFF   5.5.7 WITH_EMBEDDED_SERVER 是否要創建嵌入式服務器  OFF   5.5.7 WITH_xxx_STORAGE_ENGINE 靜態編譯xxx 存儲引擎到服務器    5.5.7 WITH_EXTRA_CHARSETS 額外的字符集,包括  all   5.5.7 WITH_LIBWRAP  是否包括支持libwrap(TCP包裝) OFF   5.5.7 WITH_READLINE  使用捆綁的readline  OFF   5.5.7 WITH_SSL  是否支持SSL  no   5.5.7 WITH_ZLIB  是否支持Zlib  system   5.5.7 WITHOUT_xxx_  

相關文章
相關標籤/搜索