PS:在以往的工作中,公司线上的服务器90%都使用MySQL数据库,性能也相当的稳定;所以一直都在用MySQL5.0.x5.1.x5.2.x之间的版本,前天朋友突然问我使用过Mysql5.5.X版本的没有,才发现源码编译和之前不一样,以后新版本的也要多接触接触。


一、CMake简介

CMake名字取自于英文‘cross platform make’的缩写,它是一个跨平台的编译工具,比Unix/Linux系统中的make更为高阶,CMake可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序构建执行档。CMake能够输出各种各样的Makefile或者project文件,能测试编译器所支持的C++特性,类似Unix/Linux下的automake。从MySQL5.5.x版本起便使用CMake替代我们熟悉的Make编译器,从而使得我们也改变MySQL5.5.x的编译过程,不过一旦你熟悉了CMake编译器,你会觉得它的编译过程非常的简洁,而且高效率。


二、CMake官方下载

CMake的新版本:http://wwwNaNake.org/files/v2.8/cmake-2.8.11.2.tar.gz


[[email protected]_master download]# wget http://www.cmake.org/files/v2.8/cmake-2.8.11.2.tar.gz
--2013-06-18 15:37:01--  http://www.cmake.org/files/v2.8/cmake-2.8.11.2.tar.gz
Resolving www.cmake.org... 202.106.199.34
Connecting to www.cmake.org|202.106.199.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 120 [text/html]
Saving to: `cmake-2.8.11.2.tar.gz'
100%[=== ===================================>] 5,8120       214K/s   in 30s    
2013-06-18 15:37:21 (4.24 MB/s) - `cmake-2.8.11.2.tar.gz' saved [120/120]


三、CMake编译安装

PS:在你开始编译CMake之前,我不得不提示你看一下CMake的说明文件Readme.txt,它会告诉你如何编译安装CMake,尽管它是英文的说明,你也能看懂大概的意思。

[[email protected]_master download]# tar -xf cmake-2.8.11.2.tar.gz   #解压程序

[[email protected]_master download]# cd cmake-2.8.11.2                #切换目录

[[email protected]_master cmake-2.8.11.2]# ./bootstrap \

--system-zlib \                        #使用系统已安装的zlib

--system-bzip2                        #使用系统已安装的bzip

[[email protected]_master cmake-2.8.11.2]# gmake                    #编译

[[email protected]_master cmake-2.8.11.2]# gmake install            #编译安装

CentOS下编译安装MySQL5.5.x的版本需使用Cmake编译器

PSCMake编译过程非常的简洁,而且显示了变成程序的进度。


31 检测安装的结果

CentOS下编译安装MySQL5.5.x的版本需使用Cmake编译器

PS:当你能执行CMake命令的查看它的语法与参数的信息,我想说的是你的CMake已经编译成功。


四、MySQL下载

*MySQL镜像下载地址:http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.27.tar.gz

[[email protected]_master download]# wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.27.tar.gz
--2013-08-08 01:42:11--  http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.27.tar.gz
Resolving mysql.ntu.edu.tw... 140.112.2.5
Connecting to mysql.ntu.edu.tw|140.112.2.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24667156 (24M) [application/x-gzip]
Saving to: `mysql-5.5.27.tar.gz'
100%[======================================>] 24,667,156   179K/s   in 2m 5s 
2013-08-08 01:44:17 (192 KB/s) - `mysql-5.5.27.tar.gz' saved [24667156/24667156]


五、MySQL编译安装

#解压程序

[[email protected]_master download]# tar -xf mysql-5.5.27.tar.gz -C /usr/local/src/


#切换目录

[[email protected]_master download]# cd /usr/local/src/mysql-5.5.27/

PS:编译MySQL之前,建议看下MySQL自带的安装文档INSTALL-SOURCE,或许会解决你心中所有的疑惑,请相信这是个好的习惯。



#编译MySQL程序,配置参数如下:

[[email protected]_master mysql-5.5.27]# cmake \
-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.27/ \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.27/tmp/mysql.sock\ -DMYSQL_DATADIR=/application/mysql-5.5.27/data \
-DDEFAULT_CHARSET=utf8 \      
-DDEFAULT_COLLATION=utf8_general_ci \ 
-DENABLED_LOCAL_INFILE=1 \    
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DWITH_READLINE=1
[[email protected]_master mysql-5.5.27]# make         #编译
[[email protected]_master mysql-5.5.27]# make install     #编译安装


提示:配置参数详解,与上一一对应。

#指定MySQL安装路径
#指定Unix socket文件安装路径
#指定MySQL数据库、表安装路径
#指定MySQL默认的字符集为utf8
#指定MySQL排序规则为utf8_general_ci,默认使用latinl_swedish_ci。
#启用本地功能的客户端库INFILE加载数据
#启用MySQL的扩展字符集,all表示所有
#启用MySQL的MYISAM存储引擎
#启用MySQL的INnoDB存储引擎
#指定MySQL服务TCP端口


#创建mysql

[[email protected]_master mysql-5.5.32]# groupadd mysql


#创建mysql用户并指定用户属于mysql组,不创建用户主目录

[[email protected]_master mysql-5.5.32]# useradd -s /sbin/nologin -M -g mysql mysql


#授权mysql用户管理mysql程序目录

[[email protected]_master ~]# chown -R mysql.mysql /application/mysql-5.5.27/


#复制MySQL的配置文件

[[email protected]_master mysql-5.5.27]# cp support-files/my-medium.cnf /etc/my.cnf


#复制MySQL的启动脚本,并授予可执行的权限(x

[[email protected]_master mysql-5.5.27]# cp support-files/mysql.server /etc/init.d/mysqld
[[email protected]_master mysql-5.5.27]# chmod +x /etc/init.d/mysqld


#执行初始化,安装MySQL的数据库、表

[[email protected]_master mysql-5.5.27]# /application/mysql-5.5.27/scripts/mysql_install_db \
--user=mysql \                           #指定初始化的用户
--datadir=/application/mysql-5.5.27/data/ \     #指定数据文件安装路径
--basedir=/application/mysql-5.5.27/          #指定程序目录安装路径


#运行MySQL服务


[[email protected]_master ~]# /etc/init.d/mysqld start
Starting MySQL..                                           [  OK  ]


#检测MySQL服务器运行的端口

[[email protected]_master ~]# netstat -lntp | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      20206/mysqld


#授予用户密码,已确保数据库的安全性

[[email protected]_master mysql-5.5.27]# /application/mysql-5.5.27/bin/mysqladmin -u root password '123456'


#测试登陆数据库是否需要密码

CentOS下编译安装MySQL5.5.x的版本需使用Cmake编译器

提示:网上很多文档在CMake时,都加上了-DMYSQL_USER参数,CMake之后你会发现MySQL有些版本并没有带此参数,我相信你此时会感到很诧异,为什么博主的文档可以,我的就不可以了,所有我建议在大家编译MySQL前先看一下它自带的安装文档INSTALL-SOURCE,你也可以过滤你需要的参数如:grep DMYSQL_USER INSTALL_SOURCE.


六、MySQL参数英文注释信息

-DWITH_READLINE=bool

      Whether to use the readline library bundled with the

      Distribution.


-DCMAKE_INSTALL_PREFIX=dir_name

      The installation base directory.

      This value can be set at server startup with the --basedir

      option.


-DMYSQL_DATADIR=dir_name

      The location of the MySQL data directory.

      This value can be set at server startup with the --datadir

      Option.


-DDEFAULT_CHARSET=charset_name

      The server character set. By default, MySQL uses the latin1

      (cp1252 West European) character set.

      charset_name may be one of binary, armscii8, ascii, big5,

      cp1250, cp1251, cp1256, cp1257, cp850, cp852, cp866, cp932,

      dec8, eucjpms, euckr, gb2312, gbk, geostd8, greek, hebrew,

      hp8, keybcs2, koi8r, koi8u, latin1, latin2, latin5, latin7,

      macce, macroman, sjis, swe7, tis620, ucs2, ujis, utf8,

      utf8mb4, utf16, utf32. The permissible character sets are

      listed in the cmake/character_setsNaNake file as the value of

      CHARSETS_AVAILABLE.

 

-DDEFAULT_COLLATION=collation_name

      The server collation. By default, MySQL uses

      latin1_swedish_ci. Use the SHOW COLLATION statement to

      determine which collations are available for each character

      set.

      This value can be set at server startup with the

      --collation_server option.



-DENABLED_LOCAL_INFILE=bool

      Whether to enable LOCAL capability in the client library for

-LOAD DATA INFILE.

      This option controls client-side LOCAL capability, but the

      capability can be set on the server side at server startup

      with the --local-infile option. See Section 6.1.6, "Security

      Issues with LOAD DATA LOCAL."



-DMYSQL_UNIX_ADDR=file_name

      The Unix socket file path on which the server listens for

      socket connections. This must be an absolute path name. The

      default is /tmp/mysql.sock.

      This value can be set at server startup with the --socket

      option.


-DWITH_EXTRA_CHARSETS=name

      Which extra character sets to include:


         + all: All character sets. This is the default.


         + complex: Complex character sets.


         + none: No extra character sets.


-DMYSQL_TCP_PORT=port_num

      The port number on on which the server listens for TCP/IP

      connections. The default is 3306.

      This value can be set at server startup with the --port

      option.


-DWITH_INNOBASE_STORAGE_ENGINE=1

  The MyISAM, MERGE, MEMORY, and CSV engines are mandatory (always

  compiled into the server) and need not be installed explicitly.


  To compile a storage engine statically into the server, use

  -DWITH_engine_STORAGE_ENGINE=1. Some permissible engine values are

  ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB),

  NDBCLUSTER (NDB), PARTITION (partitioning support), and PERFSCHEMA


七、MySQL5.5.x版本的新功能

a)默认存储引擎为INnoDB,而不再是MyISAM

b)INnoDBI/0子系统变化,能够同有效地利用可用的I/O能力。

c)半同步复制,实现通过可选插件组件。

d)表分区的增强功能。

e)IPv6支持,MySQLU期,可用解压通过IPv6连接客户端的TCP/IP连接。

提示:更多的信息,请访问http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

PS:希望此篇文章,能够给大家带来一些帮助。