mysql devel 静态编译_mysql 5.5 编译详解

本文详细介绍了如何在Linux环境下静态编译MySQL 5.5,包括添加用户、创建目录、安装依赖、配置编译选项以及启动服务。通过静态编译,你可以定制安装并优化MySQL以适应特定的系统需求。
摘要由CSDN通过智能技术生成

一、安装简介

用户名:mysql安装目录:/usr/local/mysql-5.5.27

数据库目录:/data/mysql/data源码包:mysql-5.5.27.tar.gz

二、安装准备

添加用户

useradd-s/sbin/nologin mysql

建立所需目录

mkdir-p/data/mysql/datachown-Rmysql:mysql/data/mysql

安装编译所需文件或程序

yuminstallgcc gcc-c++ cmake  ncurses-devel bison

三、编译安装

cd/usr/local/srctarxvfmysql-5.5.27.tar.gzcdmysql-5.5.27

CFLAGS="-O3" CXX=gccCXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"cmake-DMYSQL_USER=mysql \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.27 \

-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-j2 && make install注:-j 用来指定CPU核心数,可加快编译速度,不加也可以。

chown-Rmysql:mysql/usr/local/mysql-5.5.27/

mv/usr/local/src/mysql-5.5.27/support-files/my-large.cnf /etc/my.cnf注:在/usr/local/src/mysql-5.5.27/support-files/文件夹中有多个my-****.cnf 配置文件,具体用那一个配置文件根据自己实际情况。可以通过查看配置文件的头部信息来了解配置问价适合的配置。例如[root@localhost support-files]# head /usr/local/src/mysql-5.5.27/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.27/support-files/mysql.server /etc/init.d/mysqldchmod+x/etc/init.d/mysqldchkconfig--level 345mysqldon

/usr/local/mysql-5.5.27/scripts/mysql_install_db--user=mysql \

--defaults-file=/etc/my.cnf \

--basedir=/usr/local/mysql-5.5.27/ \

--datadir=/data/mysql/data/

echo"export PATH=/usr/local/mysql-5.5.27/bin:$PATH">>/etc/profilesource/etc/profile

补充:

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

./configurecmake .

./configure --helpcmake . -LH or ccmake .

Parameterconfigure OptionCMake OptionCMake Notes

Installation base directory--prefix=/usr-DCMAKE_INSTALL_PREFIX=/usr​

mysqld directory--libexecdir=/usr/sbin-DINSTALL_SBINDIR=sbininterpreted 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/plugininterpreted relative to prefix

Man page directory--mandir=/usr/share/man-DINSTALL_MANDIR=share/maninterpreted relative to prefix

Shared-data directory--sharedstatedir=/usr/share/mysql-DINSTALL_SHAREDIR=sharethis is where aclocal/mysql.m4 should be installed

Library installation directory--libdir=/usr/lib64/mysql-DINSTALL_LIBDIR=lib64/mysqlinterpreted relative to prefix

Header installation directory--includedir=/usr/include/mysql-DINSTALL_INCLUDEDIR=include/mysqlinterpreted relative to prefix

Info doc directory--infodir=/usr/share/info-DINSTALL_INFODIR=share/infointerpreted relative to prefix

Parameterconfigure OptionCMake OptionCMake 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​

Parameterconfigure OptionCMake OptionCMake 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=alldefault 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-servernone​

Build the embedded server--with-embedded-server-DWITH_EMBEDDED_SERVER=1​

libmysqld privilege control--with-embedded-privilege-controlnonealways enabled?

Install the documentation--without-docsnone​

Big tables--with-big-tables, --without-big-tablesnonetables are big by default

mysqld user--with-mysqld-user=mysql-DMYSQL_USER=mysqlmysql is the default

Debugging--without-debug-DWITH_DEBUG=0default is debugging disabled

GIS support--with-geometrynonealways enabled?

Community features--enable-community-featuresnonealways enabled

Profiling--disable-profiling-DENABLE_PROFILING=0enabled by default

pstack--without-pstacknonepstack is removed

Assembler string functions--enable-assemblernone​

Build type--build=x86_64-pc-linux-gnuno equivalentunneeded?

Cross-compile host--host=x86_64-pc-linux-gnuno equivalentunneeded?

Client flag--with-client-ldflags=-lstdc++noneunneeded

Client flag--enable-thread-safe-clientnoneunneeded, clients are always thread safe

Comment--with-comment='string'-DWITH_COMMENT='string'​

Shared/static binaries--enable-shared --enable-staticnonethere is only DISABLE_SHARED

Memory use--with-low-memorynoneunneeded

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__STORAGE_ENGINE 也不是 -DWITHOUT__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_

-DENABLED_LOCAL_INFILE=1

命令:load data local infile “filename.txt” into table tbl_name;

说明:MySQl的版本不得低于3.22.15,否则load data local不起作用。如果你没有给出local,则服务器按如下方法对其进行定位:

1)如果你的filename为绝对路径,则服务器从根目录开始查找该文件.

2)如果你的filename为相对路径,则服务器从数据库的数据目录中开始查找该文件.

如果你给出了local,则文件将按以下方式进行定位:

1)如果你的filename为绝对路径,则客户机从根目录开始查找该文件.

2)如果你的filename为相对路径,则客户机从当前目录开始查找该文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值