CentOS6.5上编译安装MySQL-5.5.38

MySQL通常有三种安装方式:

  • RPM包 以及 yum 安装

  • 通用二进制包安装

  • 源码编译安装


    这里, 我们仅对源码编译安装进行讲解。首先需要说明的是从MySQL5.5开始就要用cmake安装了,已不能用./configure编译安装,所以我们首先需要安装cmake。


1、安装必要的编译环境

# yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make 

### 或者说是更粗暴的方式
# yum -y groupinstall "Development tools"

##########################################
### 然后安装以下包, 可以避免后面出现的错误
# yum -y install ncurses-devel


2、安装cmake

我还是建议yum安装cmake,可以省不少力气

# yum -y install cmake


3、创建mysql用户和组

# groupadd -r mysql
# useradd -r -g mysql -s /sbin/nologin mysql


4、创建mysql数据目录(建议独立分区,且为逻辑卷)

这里,我创建 /mydata/data 目录

# mkdir -pv /mydata/data
# chown -R mysql:mysql /mydata/data
# ls -l /mydata
total 4
drwxr-xr-x 2 mysql mysql 4096 Jul 10 07:17 data


5、编译安装

# tar xf mysql-5.5.38.tar.gz -C /usr/local/
# ln -s mysql-5.5.38 mysql
# cd mysql

[root@localhost mysql]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

报错了,Curses library not found.

-- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.   
Call Stack (most recent call first):
  cmake/readline.cmake:118 (FIND_CURSES)
  cmake/readline.cmake:214 (MYSQL_USE_BUNDLED_READLINE)
  CMakeLists.txt:361 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

我们根据提示, 知道缺少ncurses-devel包,那么这就好办了,yum 安装即可

[root@localhost mysql]# yum -y install ncurses-devel


下面我们再次重新编译一下,可能还会报同样的错误,不要着急,遇到错误才能够学到东西,我们要仔细查看“报错信息”。人家已经说得非常清楚了,(-__-)b 都怪自己没有仔细看:

CentOS6.5上编译安装MySQL-5.5.38


    我们在多次运行cmake有个文件我们需要删除,删除当前目录下CMakeCache.txt文件并重新编译,再次运行cmake命令就会正常!

[root@localhost mysql]# rm -f CMakeCache.txt

# 再次使用上述的 cmake 指令, 重新执行

    如果环境检查没有问题, 那么下面就可以真正执行编译过程以及安装了。

[root@localhost mysql]# make && make install


这是一个非常漫长的过程,那么这里我们就来详细看看具体的编译选项

6、编译选项

说明:cmake指定编译选项的方式不同于make,其实现方式对比如下

./configure 对应的是 cmake .

./configure --help 对应的是 cmake . -LH 或者是 ccmake .


  • 指定安装文件的安装路径时常用的选项

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql   # 指定安装路径(默认的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql               # mysql的数据文件路径
-DSYSCONFDIR=/etc                         # 配置文件路径
  • 编译过程中启用其他存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1          # 使用INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1           # 常应用于日志记录和聚合分析,不支持索引
-DWITH_BLACKHOLE_STORAGE_ENGINE=1         # 黑洞存储引擎
  • 编译过程中取消一些存储引擎

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
示例如下:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
  • 编译进过程中功能启用的指令介绍

-DWITH_READLINE=1       # 支持批量导入mysql数据
-DWITH_SSL=system       # mysql支持ssl会话,实现基于ssl的数据复
-DWITH_ZLIB=system      # 压缩库
-DWITH_LIBWRAP=0        # 是否可以基于WRAP实现访问控制
  • 其他功能指令

-DMYSQL_TCP_PORT=3306                   # 默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock       # 默认套接字文件路径
-DENABLED_LOCAL_INFILE=1                # 是否启用LOCAL_INFILE功能
-DEXTRA_CHARSETS=all                    # 是否支持额外的字符集
-DDEFAULT_CHARSET=utf8                  # 默认编码机制
-DDEFAULT_COLLATION=utf8_general_ci     # 设定默认语言的排序规则
-DWITH_DEBUG=0                          # DEBUG功能设置
-DENABLE_PROFILING=1                    # 性能分析功能是否启用

7、MySQL服务启动脚本 及 配置文件

为了方便管理,MySQL官方提供给我们一些脚本:

# 拷贝配置文件
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf

# 在mysql解压目录下,拷贝服务启动脚本
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
# 给脚本赋予可执行权限
[root@localhost mysql]# chmod +x /etc/init.d/mysqld
# 加入SysV
[root@localhost mysql]# chkconfig --add mysqld
# 开机启动
[root@localhost mysql]# chkconfig mysqld on

8、初始化

[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql

额, 不知道什么情况, mysql_install_db 竟然没有可执行权限。

[root@localhost mysql]# chmod +x /usr/local/mysql/scripts/mysql_install_db
# 然后重新执行

### 或者
[root@localhost mysql]# bash /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql


--basedir:该参数指定了安装 MySQL 的安装路径,填写全路径可以解决相对路径所造成的问题。
--datadir:该参数指定了 MySQL 的数据库文件放在什么路径下。数据库文件即我们常说的 MySQL data 文件

注意:为了安全,我们把mysql目录属主、属组改为root

[root@localhost mysql]# chown -R root:root mysql-5.5.38/


9、修改配置文件 /etc/my.cnf

# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
user            = mysql
port            = 3306
socket          = /tmp/mysql.sock
basedir         = /usr/local/mysql
datadir         = /mydata/data
pid-file        = /mydata/data/mysqld.pid
ft_min_word_len = 4
max_allowed_packet = 32M
character-set-server = utf8
skip-name-resolve

10、启动mysql服务

[root@localhost mysql]# service mysqld start
Starting MySQL... SUCCESS! 

# 做一些基础安全配置
[root@localhost mysql]# bin/mysql_secure_installation
# 根据提示选择 [Y/n]

# 测试是否启动成功,查看3306端口
[root@localhost mysql]# netstat -tunlp | grep 3306
tcp        0      0 0.0.0.0:3306        0.0.0.0:*          LISTEN      24533/mysqld

# 登录mysql
[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.38-log Source distribution

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql>


接下来,我们还需要做一些额外的工作:

1、将mysql的bin目录加入PATH 环境变量

[root@localhost mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@localhost mysql]# . /etc/profile.d/mysql.sh 
# 看一下是否成功
[root@localhost mysql]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

2、将mysql的man手册加入到man的path

[root@localhost mysql]# vim /etc/man.config
# 新增一行
MANPATH /usr/local/mysql/man

3、mysql的库文件

[root@localhost mysql]# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib/
[root@localhost mysql]# ldconfig -v
/usr/local/mysql/lib:
	libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0
/usr/lib/mysql:
	libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
	libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0

4、mysql的头文件

[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
`/usr/include/mysql‘ -> `/usr/local/mysql/include‘


附录:

MySQL 5.5 编译参数说明

从mysql5.5起,mysql源码安装开始使用cmake。下面是 mysql 5.5 与以前的参数对照:

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


参数说明:

红色为推荐参数(当然也要根据你的需求来制定)

绿色为可用参数
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
-DDEFAULT_CHARSET=utf8   //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all   //安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 //MySQL监听端口
-DMYSQL_USER=mysql //MySQL用户名
其他参数:
-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
-DSYSCONFDIR=/etc //MySQL配辑文件
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
-DWITH_READLINE=1 //快捷键功能
-DWITH_SSL=yes //SSL
-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区
-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径

BUILD_CONFIG   采用官方发行版一致的编译参数
CMAKE_BUILD_TYPE 指定产品编译说明信息   RelWithDebInf
CMAKE_INSTALL_PREFIX 指定MySQL安装路径  /usr/local/mysql
CPACK_MONOLITHIC_INSTALL是否建立单个安装包文件 OFF
DEFAULT_CHARSET  MYSQL 默认字符集  latin1
DEFAULT_COLLATION MYSQL 默认排序字符集  latin1_swedish_ci
ENABLE_DEBUG_SYNC 是否启用同步调试功能  ON
ENABLE_DOWNLOADS 是否下载可选文件  OFF
ENABLE_DTRACE  是否包含 DTrace 支持
ENABLE_GCOV  是否包含 Gcov 支持     5.5.14
ENABLED_LOCAL_INFILE 是否启用本地 LOAD DATA INFILE OFF
ENABLED_PROFILING 是否启用代码查询分析  ON
INSTALL_BINDIR  MySQL 主执行文件目录  PREFIX/bin
INSTALL_DOCDIR  文档安装路径   PREFIX/docs
INSTALL_DOCREADMEDIR 自述文件目录   PREFIX
INSTALL_INCLUDEDIR 头文件目录   PREFIX/include
INSTALL_INFODIR  关于信息文件目录  PREFIX/docs
INSTALL_LAYOUT  选择预定义的安装  STANDALONE
INSTALL_LIBDIR  库文件目录   PREFIX/lib
INSTALL_MANDIR  手册页面目录   PREFIX/man
INSTALL_MYSQLSHAREDIR 共享数据目录   PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test 目录   PREFIX/mysql-test
INSTALL_PLUGINDIR 插件目录   PREFIX/lib/plugin
INSTALL_SBINDIR  服务器超级用户执行文件目录 PREFIX/bin
INSTALL_SCRIPTDIR 脚本目录   PREFIX/scripts
INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share
INSTALL_SQLBENCHDIR sql-bench 性能测试工具目录 PREFIX
INSTALL_SUPPORTFILESDIR 扩展支持文件目录  PREFIX/support-files
MYSQL_DATADIR  数据库存放目录
MYSQL_MAINTAINER_MODE 是否启用MySQL的维护环境  OFF
MYSQL_TCP_PORT  TCP/IP 端口号   3306
MYSQL_UNIX_ADDR  Unix Socket 套接字文件  /tmp/mysql.sock
SYSCONFDIR  选项配置文件目录
WITH_COMMENT  编译环境发表评论
WITH_DEBUG  是否包括调试支持  OFF
WITH_EMBEDDED_SERVER 是否要建立嵌入式服务器  OFF
WITH_xxx_STORAGE_ENGINE 静态编译xxx 存储引擎到服务器
WITH_EXTRA_CHARSETS 额外的字符集,包括  all
WITH_LIBWRAP  是否包括支持libwrap(TCP包装) OFF
WITH_READLINE  使用捆绑的readline  OFF
WITH_SSL  是否支持SSL  no
WITH_ZLIB  是否支持Zlib  system
WITHOUT_xxx_


MySQL 5.5.30服务器端优化
 
/etc/my.cnf配置文件
 
[client]
port            = 3306
socket          = /tmp/mysql.sock
 
 
[mysqld]
####  mise  ####
user = mysql
port            = 3306
socket          = /tmp/mysql.sock
basedir = /data/mysql
datadir = /data/mysql/data
pid-file=/data/mysql/mysqld.pid
#default-storage-engine = MYISAM
ft_min_word_len = 4
max_allowed_packet = 32M
character-set-server = utf8
skip-name-resolve
 
 
####  performance  ####
open_files_limit = 10240
max_connections = 800
max_connect_errors = 6000
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 256M
max_heap_table_size = 256M
slow_query_log
long_query_time = 1
log_slow_queries=/data/mysql/slow-log.log
 
 
#### log ####
log-error=/data/mysql/mysqld.err
back_log = 500
log-bin=mysql-bin
max_binlog_cache_size = 8M
max_binlog_size = 512M
binlog_format=mixed
expire_logs_days = 7
 
 
####  buffer && cache  ####
read_buffer_size = 10M
read_rnd_buffer_size = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 300
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 4M
binlog_cache_size = 4M
table_open_cache = 2048
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
 
 
####  myisam  ####
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
 
 
####  innodb  ####
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 4G
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 150M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 60
innodb_flush_method = O_DIRECT
 
####  replication  ####
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
server-id = 1
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
 
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 32M
read_buffer = 8M
write_buffer = 8M
 
[mysqlhotcopy]
interactive-timeout
 
[mysqld_safe]
open-files-limit = 8196


本文出自 “Share your knowledge” 博客,请务必保留此出处http://skypegnu1.blog.51cto.com/8991766/1439313

CentOS6.5上编译安装MySQL-5.5.38,布布扣,bubuko.com

CentOS6.5上编译安装MySQL-5.5.38

上一篇:Oracle   bbed 使用


下一篇:MySQL的SQL_CALC_FOUND_ROWS