您当前的位置: 首页 > 数据库教程 > MySQL教程 > 源码编译安装MySQL5.6.10最佳实践

源码编译安装MySQL5.6.10最佳实践

作者:不详 来源:网络 发布时间: 2014-07-17 12:40 点击:
1安装cmake MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。 因此,我们首先要在系统中源码编译安装cmake工具。 # wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz # tar zxvf cmake-2.8.7.tar.gz # cd cmake-2.8.

源码编译安装MySQL5.6.10最佳实践

  1安装cmake

  MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。

  因此,我们首先要在系统中源码编译安装cmake工具。

  # wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz

  # tar zxvf cmake-2.8.7.tar.gz

  # cd cmake-2.8.7

  # ./configure

  # make

  # make install

  1.1cmake命令语法

  1.2重新编译时,需要清除旧的对象文件和缓存信息

  # make clean

  # rm -f CMakeCache.txt

  1.3安装选项

  CMAKE_INSTALL_PREFIX值是安装的基本目录,其他cmake选项值是不包括前缀,是相对路径名,绝对路径包括CMAKE_INSTALL_PREFIX路径。如-DINSTALL_SBINDIR=sbin的绝对路径是/usr/local/mysql /sbin

  1.4存储引擎选项

  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才可以使用。

  有关插件的CMake的选项的其他信息,请查阅: http://forge.mysql.com/wiki/MySQL_Internals_Support_for_Plug-Ins

  1.5 lib库选项

  1.6其他选项

  之前MySQL的编译选项大多数都支持。新旧版本之间的安装选项映射成大写字母,删除选项前面破折号,中间字符间的破折号替换成下划线。如:

  --with-debug => WITH_DEBUG=1

  --with-embedded-server => WITH_EMBEDDED_SERVER

  1.7调试配置过程

  使用configure编译完将生成config.log和config.status文件。

  使用cmake编译完在CMakeFiles目录下生成CMakeError.log 和CMakeOutput.log文件。

  1.8第三方接口工具

  在之前的版本,第三方工具从MySQL顶层源目录中读取源configure.in文件来确定mysql版本。如:对5.5.7 - RC版本的AC_INIT线看起来像这样:

  AC_INIT([MySQLServer], [5.5.7-rc], [], [mysql])

  现在的版本可以直接读取版本文件。如:如果版本是5.5.8,文件看起来像这样的:

  MYSQL_VERSION_MAJOR=5

  MYSQL_VERSION_MINOR=5

  MYSQL_VERSION_PATCH=8

  MYSQL_VERSION_EXTRA=rc

  如果源码包不是GA版,MYSQL_VERSION_EXTRA的值将非空。如:对于一个发布RC版本是这样的: MYSQL_VERSION_EXTRA=rc

  构建5位数字的版本号,使用下面公式:

  MYSQL_VERSION_MAJOR*10000+ MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH

  2验证安装依赖

  通过 rpm -qa | grep name的方式验证以下软件包是否已全部安装。

  gcc* gcc-c++* autoconf* automake* zlib*libxml* ncurses-devel* libmcrypt* libtool*

  通过yum安装示例

  例:yum install gcc gcc-c++

  例:yum install ncurses-devel

  如果缺少相关的软件包,可通过yum -y install的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh的方式安装。

  3安装前的系统设置

  建立mysql安装目录及数据存放目录

  # mkdir /usr/mysql5.5

  # mkdir /usr/mysql5.5/data

  创建用户和用户组

  # groupadd mysql

  # useradd –gmysql mysql

  赋予数据存放目录权限

  # chown mysql:mysql –R /opt/mysql5.5/data

  4正式开始安装(从configure更换为cmake)

  我相信大多数人都已经习惯了之前的configure方式,并且所使用的参数也是比较个性化的,换成cmake之后,这一方面会带来不少的麻烦。

  还好,MySQL的官方网站提供了二者的参数对照表,我们可以尽可能的保留之前的参数,来编译配置新的MySQL版本。

  configure 与cmake参数对照指南:

  http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide

  以我自己为例,之前我一直使用的参数为:

  ./configure --prefix=/opt/mysql/

  --sysconfdir=/opt/mysql/etc

  --localstatedir=/opt/mysql/data

  --with-tcp-port=3306

  --with-unix-socket-path=/tmp/mysqld.sock

  --with-mysqld-user=mysql

  --enable-assembler

  --with-extra-charsets=all

  --enable-thread-safe-client

  --with-big-tables

  --with-readline

  --with-ssl

  --with-embedded-server

  --enable-local-infile

  --with-plugins=partition,innobase,myisammrg

  经过与cmake的参数对照之后,去除掉已经被取消的参数(大多数是因为新版本已经默认启用),cmake的参数配置如下:

  cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql

  -DSYSCONFDIR=/opt/mysql/etc

  -DMYSQL_DATADIR=/opt/mysql/data

  -DMYSQL_TCP_PORT=3306

  -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock

  -DMYSQL_USER=mysql

  -DEXTRA_CHARSETS=all

  -DWITH_READLINE=1

  -DWITH_SSL=system

  -DWITH_EMBEDDED_SERVER=1

  -DENABLED_LOCAL_INFILE=1

  -DWITH_INNOBASE_STORAGE_ENGINE=1

  -DWITHOUT_PARTITION_STORAGE_ENGINE=1

  不带换行符的(只有一行)

  4.1参数:-DWITHOUT_PARTITION_STORAGE_ENGINE=1

  在64位机器上编译不过,会出现如下错误:(64位机器的浮点数运算上出错,导致找不着相应的函数)

  libsql.a(handler.cc.o): In function`get_ha_partition(partition_info*)’:

  /data/mysql-5.5.14/sql/handler.cc:269: undefined reference to`ha_partition::ha_partition(handlerton*, partition_info*)’

  /data/mysql-5.5.14/sql/handler.cc:271: undefined reference to`ha_partition::initialize_partition(st_mem_root*)’

  libsql.a(sql_partition_admin.cc.o): In function`Alter_table_truncate_partition_statement::execute(THD*)’:

  /data/mysql-5.5.14/sql/sql_partition_admin.cc:165: undefinedreference to `ha_partition::truncate_partition(Alter_info*, bool*)’

  collect2: ld returned 1 exit status

  make[2]: *** [sql/mysqld] Error 1

  make[1]: *** [sql/CMakeFiles/mysqld.dir/all] Error 2

  make: *** [all] Error 2

  4.2参数:-DWITH_SSL=bundled

  自mysql5.6.*及以后的版本都要默认带上此参数,否则编译不过 ,相关贴子:

  https://github.com/santisaez/powerstack/issues/49

  Use bundled SSL on CentOS-5

  4.3安装执行

  # tar xvf mysql-5.5.10.tar.gz

  # cd mysql-5.5.10

  # cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 -DSYSCONFDIR=/usr/local/mysql5.5/etc-DMYSQL_DATADIR=/usr/local/mysql5.5/data -DMYSQL_TCP_PORT=3306-DMYSQL_UNIX_ADDR=/usr/local/mysql5.5/mysqld.sock -DMYSQL_USER=mysql-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all-DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1-DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_SSL=bundled

  #make

  #make install

  5 设置

  #cd support-files/

  拷贝配置文件:

  #cp my-default.cnf /etc/my.cnf

  设置开机自动启动

  #cp mysql.server /etc/rc.d/init.d/mysqld

  5.1初始化数据库

  #/usr/local/mysql5.5/scripts/mysql_install_db--defaults-file=/etc/my.cnf --basedir=/usr/local/mysql5.5--datadir=/usr/local/mysql5.5data --user=mysql

  5.2设置

  #vi /etc/init.d/mysqld(编辑此文件,查找并修改以下变量内容:)

  basedir=/usr/local/mysql5.5

  datadir=/var/mysql5.5/data

  加入启动项:

  #chkconfig --add mysqld

  #chkconfig --level 345 mysqld on

  5.3启动服务

  #service mysqld start

  如果文件夹:/usr/local/mysql5.5是只读的,会报错:

  …

  …

  2013-04-08 11:12:45 7886 [Note] IPv6 is notavailable.

  2013-04-08 11:12:45 7886 [Note] - '0.0.0.0' resolves to '0.0.0.0';

  2013-04-08 11:12:45 7886 [Note] Server socketcreated on IP: '0.0.0.0'.

  2013-04-08 11:12:45 7886 [ERROR] Can't startserver : Bind on unix socket: Permission denied

  2013-04-08 11:12:45 7886 [ERROR] Do youalready have another mysqld server running on socket:/usr/local/mysql5.5/mysqld.sock ?

  2013-04-08 11:12:45 7886 [ERROR] Aborting

  …

  2013-04-08 11:12:45 7886 [Note] InnoDB:Starting shutdown...

  2013-04-08 11:12:47 7886 [Note] InnoDB:Shutdown completed; log sequence number 1626077

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'BLACKHOLE'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'PERFORMANCE_SCHEMA'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'ARCHIVE'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'CSV'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'MRG_MYISAM'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'MyISAM'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'MEMORY'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'sha256_password'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'mysql_old_password'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'mysql_native_password'

  2013-04-08 11:12:47 7886 [Note] Shutting downplugin 'binlog'

  2013-04-08 11:12:47 7886 [Note]/usr/local/mysql5.5/bin/mysqld: Shutdown complete

  130408 11:12:47 mysqld_safe mysqld from pidfile /usr/local/mysql5.5/data/zskw2.pid ended

  解决办法:将/usr/local/mysql5.5设为读写即可

  …

  5.4 设置密码

  #/usr/local/mysql/bin/mysqladmin password[new-password]

  6数据库初始化

  如果想让数据库可远程访问,必须在库中mysql下的user里存在如下用户

  Host user password

  % root xxx

  7附录

  7.1参考网址

  http://www.centos.bz/2011/09/linux-compile-install-mysql-5-5-15-from-source/

  http://blog.csdn.net/sunjingzhi/article/details/6671668

  https://github.com/santisaez/powerstack/issues/49

  http://heylinux.com/archives/993.html

  http://www.mysqlops.com/2011/03/06/mysql_compile_reference.html

  http://who0168.blog.51cto.com/253401/469898

  7.2所用my.cnf

  # Example MySQLconfig file for large systems.

  #

  # This is for a largesystem with memory = 512M where the system runs mainly

  # MySQL.

  #

  # MySQL programs lookfor option files in a set of

  # locations whichdepend on the deployment platform.

  # You can copy thisoption file to one of those

  # locations. Forinformation about these locations, see:

  #http://dev.mysql.com/doc/mysql/en/option-files.html

  #

  # In this file, youcan use all long options that a program supports.

  # If you want to knowwhich options a program supports, run the program

  # with the"--help" option.

  # The followingoptions will be passed to all MySQL clients

  [client]

  #password = your_password

  port = 3306

  #socket = /var/lib/mysql/mysql.sock

  socket = /usr/local/mysql5.5/mysqld.sock

  #character-set-server= utf8

  # Here followsentries for some specific programs

  # The MySQL server

  [mysqld]

  port = 3306

  #socket = /var/lib/mysql/mysql.sock

  socket = /usr/local/mysql5.5/mysqld.sock

  user=mysql

  skip-external-locking

  key_buffer_size =256M

  max_allowed_packet =1M

  table_open_cache =256

  sort_buffer_size = 1M

  read_buffer_size = 1M

  read_rnd_buffer_size= 4M

  myisam_sort_buffer_size= 64M

  thread_cache_size = 8

  query_cache_size= 16M

  # Try number ofCPU's*2 for thread_concurrency

  thread_concurrency =8

  #character-set-server= utf8

  max_connections =1000

  # Don't listen on aTCP/IP port at all. This can be a security enhancement,

  # if all processesthat need to connect to mysqld run on the same host.

  # All interactionwith mysqld must be made via Unix sockets or named pipes.

  # Note that usingthis option without enabling named pipes on Windows

  # (via the"enable-named-pipe" option) will render mysqld useless!

  #

  #skip-networking

  # Replication MasterServer (default)

  # binary logging isrequired for replication

  log-bin=mysql-bin

  # binary loggingformat - mixed recommended

  binlog_format=mixed

  # required unique idbetween 1 and 2^32 - 1

  # defaults to 1 ifmaster-host is not set

  # but will notfunction as a master if omitted

  server-id = 1

  # Replication Slave(comment out master section to use this)

  #

  # To configure thishost as a replication slave, you can choose between

  # two methods :

  #

  # 1) Use the CHANGEMASTER TO command (fully described in our manual) -

  # the syntax is:

  #

  # CHANGE MASTER TO MASTER_HOST=,MASTER_PORT=

  ,

  # MASTER_USER=,MASTER_PASSWORD=

  ;

  #

  # where you replace ,,

  by quoted strings and

  #

  by the master's port number(3306 by default).

  #

  # Example:

  #

  # CHANGE MASTER TOMASTER_HOST='125.564.12.1', MASTER_PORT=3306,

  # MASTER_USER='joe',MASTER_PASSWORD='secret';

  #

  # OR

  #

  # 2) Set the variablesbelow. However, in case you choose this method, then

  # start replication for the first time (evenunsuccessfully, for example

  # if you mistyped the password inmaster-password and the slave fails to

  # connect), the slave will create a master.infofile, and any later

  # change in this file to the variables'values below will be ignored and

  # overridden by the content of themaster.info file, unless you shutdown

  # the slave server, delete master.info andrestart the slaver server.

  # For that reason, you may want to leave thelines below untouched

  # (commented) and instead use CHANGE MASTERTO (see above)

  #

  # required unique idbetween 2 and 2^32 - 1

  # (and different fromthe master)

  # defaults to 2 ifmaster-host is set

  # but will notfunction as a slave if omitted

  #server-id = 2

  #

  # The replicationmaster for this slave - required

  #master-host =

  #

  # The username theslave will use for authentication when connecting

  # to the master -required

  #master-user =

  #

  # The password theslave will authenticate with when connecting to

  # the master -required

  #master-password=

  #

  # The port the masteris listening on.

  # optional - defaultsto 3306

  #master-port =

  #

  # binary logging - notrequired for slaves, but recommended

  #log-bin=mysql-bin

  # Uncomment thefollowing if you are using InnoDB tables

  #innodb_data_home_dir= /var/lib/mysql

  #innodb_data_file_path= ibdata1:10M:autoextend

  #innodb_log_group_home_dir= /var/lib/mysql

  # You can set.._buffer_pool_size up to 50 - 80 %

  # of RAM but bewareof setting memory usage too high

  #innodb_buffer_pool_size= 256M

  #innodb_additional_mem_pool_size= 20M

  # Set.._log_file_size to 25 % of buffer pool size

  #innodb_log_file_size= 64M

  #innodb_log_buffer_size= 8M

  #innodb_flush_log_at_trx_commit= 1

  #innodb_lock_wait_timeout= 50

  [mysqldump]

  quick

  max_allowed_packet =16M

  [mysql]

  no-auto-rehash

  # Remove the nextcomment character if you are not familiar with SQL

  #safe-updates

  [myisamchk]

  key_buffer_size =128M

  sort_buffer_size =128M

  read_buffer = 2M

  write_buffer = 2M

  [mysqlhotcopy]

  interactive-timeout
分享到:
本文"源码编译安装MySQL5.6.10最佳实践"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4