1,下载并解压
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz
wget http://118.192.2.54:8080/mysql-5.6.10.tar.gz
#tar -zxvf mysql-5.6.10.tar.gz
2, 安装编译源码所需的工具和库
#yum -y install gcc gcc-c++ autoconf automake bison ncurses-devel libtool-ltdl-devel* cmake make openssl openssl-devel
3,安装完成后为Mysql做准备
#mkdir -p /usr/local/mysql
#mkdir -p /var/mysqldata
groupadd mysql
useradd -g mysql mysql
4,编辑PATH搜索路径
#vi /etc/profile
Append these 2 lines to the end of the file:
export PATH
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
生效PATH搜索路径
#source /etc/profile
5,编译安装
#cd mysql-5.6.10
#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/var/mysqldata \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysqld.sock \
-DMYSQL_TCP_PORT=3310 \
-DMYSQL_USER=mysql \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_DEBUG=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
##-- Build files have been written to: /root/mysql-5.6.10 配置结束(cmake . -LH
查看配置参数)
参考地址:http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
#make && make install
6,完成后进入MYSQL安装目录,修改资源内存分配
#cd /usr/local/mysql/
#cp support-files/my-default.cnf /etc/my.cnf
#vim /etc/my.cnf
根据服务器硬件配置,将数据目录和套接字文件修改为实际值.
join_buffer_size = 1024M
sort_buffer_size = 16M
read_rnd_buffer_size = 32M
##注:
sort_buffer_size = 6M
#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
join_buffer_size = 8M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!
7,修改权限
#chown mysql:mysql /etc/my.cnf
#chown -R mysql:mysql /usr/local/mysql
#chown -R mysql:mysql /var/mysqldata
8,数据库初始化并添加开机启动
#cd /usr/local/mysql
#chmod 755 scripts/mysql_install_db
#scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/mysqldata
设置开机自启动服务控制脚本
执行下面的命令复制启动脚本到资源目录:
#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
执行下面的命令增加mysqld服务控制脚本执行权限:
#chmod +x /etc/rc.d/init.d/mysqld
执行下面的命令将mysqld服务加入到系统服务:
#chkconfig --add mysqld
执行下面的命令检查mysqld服务是否已经生效:
#chkconfig --list mysqld
命令输出类似下面的结果:
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
9,启动MYSQL
#service mysqld start
【编译参数】
cmake .\
-DCMAKE_BUILD_TYPE=RelWithDebInfo\ #默认,可去除
-DCMAKE_INSTALL_PREFIX=/usr/local/webroot/mysql/\
-DSYSCONFDIR=/usr/local/webroot/\ #my.cnf地址,可直接指定/etc/ 这个路径在5.6中有点奇特,指其他路径的话,系统会自动将my.cnf安装到/mysql/目录下,且用着用这会在etc下突然出现一个my.cnf,导致启动mysql出问题 。5.6好像这个无效,my.cnf只能在etc及mysql目录下生效。指定其他目录,也必须把my.cnf放etc\mysql目录下。据网有说5.6指定my.cnf位置的参数是DDEFAULT_SYSCONFIG=/usr/local/webroot/
-DMYSQL_UNIX_ADDR=/home/www/logs/mysql.sock\ #mysql.sock地址
-DMYSQL_DATADIR=/usr/local/webroot/mysql/data/\ #数据库地址
-DCOMMUNITY_BUILD=ON\ #可去除
-DFEATURE_SET=community\ #可去除
-DENABLED_PROFILING=ON\ #可去除
-DWITH_INNOBASE_STORAGE_ENGINE=1\ #编译innodb引擎
-DWITHOUT_PERFSCHEMA_STORAGE_ENGINE=1\ #不编译PERFSCHEMA引擎,具体查阅mysql手册文档
-DENABLED_LOCAL_INFILE=1\ #可去除
-DMYSQL_TCP_PORT=3306\ #默认3306可不写,其他端口可写上,或者my.cnf指定
-DWITH_EXTRA_CHARSETS=complex\ #字符集
-DWITH_SSL=bundled\ #5.6不再是no值,具体查阅mysql手册文档
-DWITH_EMBEDDED_SERVER=OFF\
-DWITH_READLINE=OFF\
-DWITH_DEBUG=OFF\#可去除
-DMYSQL_USER=ftpuser\ #默认mysql,可不写,也推荐使用mysql,其他用户请指定
-DENABLE_DOWNLOADS=1 #5.6新增参数,下载Google Mock,可不用
MySQL 5.6还增加3个跟Memcached api有关的编译选项:
// Enable SASL on InnoDB Memcached
ENABLE_MEMCACHED_SASL:BOOL=OFF
// Enable SASL on InnoDB Memcached
ENABLE_MEMCACHED_SASL_PWDB:BOOL=OFF
WITH_INNODB_MEMCACHED:BOOL=OFF
其他编译选项可以:cd进入目录后ccmake .或者cmake . -LH获知。更多的就查阅mysql手册文档install\update,源码安装部分吧.
在虚拟机上编译时还发现-DWITHOUT_PARTITION_STORAGE_ENGINE=1编译出错,不能通过的情况。
如果是升级,那么安装MySQL 5.6后,需要重新编译php,或者修改php.ini指定mysql.default_socket = /tmp/mysql.sock位置,否则phpmyadmin登陆时会出现:“#2002 无法登录 MySQL 服务器”的情况。
安装后,MySQL 5.6和之前版本不同,5.6没有my-medium.cnf等配置样板文件,而是只有个mysql-5.6.10/support-files/my-default.cnf,安装后会自动存放到mysql/my.cnf,打开后发现啥也没有。
语法方面:5.6中,SQL语句的get将成为关键字,需要加``反引号包围。
【常见错误】
错误一:mysql 5.6源码安装时发生了一个警告Googlemock was not found,看了一下,是新版mysql 5.6还支持了google的c++mock框架了,提示带了-DENABLE_DOWNLOADS=1可解决这个问题(就是允许下载)。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS接下来可以在mysql-5.6.10/source_downloads这个路径下会下载一个gmock-1.6.0.zip文件, 这个文件的安装
unzip gmock-1.6.0.zip
./configure
make再编译安装就正常了。(当然,个人觉得这个报错关系不大,可忽略之。
尤其是MySQL服务器在内网无法联接到互联网网的情况,是无法下载gmock-1.6.0.zip,也不会报错上面的CMake Error报错。
)
错误二:Starting MySQL.The server quit without updating PID file (/[FAILED]l/mysql/
像上面这样的mysql启动错误,可谓经常看到到底是什么原因导致的呢,网上的分析解释有很多,
有人分析师skip-federated这个参数就可以了,
又有人认为删除data/mysql-bin.index文件,就可以启动服务,
其实导致出现此错误的原因有很多,解决办法也有很多,我尝试像上面的两种解决办法一样故意做出错误参数配置,而上面提到的方法也确实解决了问题.不过这都是不全面的,我也不可能提出更加全面的解决办法.
不过出现上面的错误可以说解决办法都是你的参数配置出现问题导致的,
解决思路:
1:首先检查你的错误日志,找到最近的错误.查看问题出现在哪.
2:去修改my.cnf中的参数配置,但是请注意,修改的时候你务必要记清楚那些事修改了,方便稍后做出更加正确合理的再次修改.
在配置参数的时候一定注意高度重视innodb引擎参数的配置,它是极易导致错误的关键所在.
错误三:编译安装失败后,重新编译时要清除缓存
rm -rf CMakeCache.txt