Linux 之源码编译安装 MySQL 5.7
MySQL 2015-12-11 5890
操作系统:CentOS 6.5(64位,阿里云)
MySQL 安装版本 5.7.10
MySQL 从 5.5 版本开始,通过 ./configure 进行编译配置方式已经被取消,取而代之的是 cmake 工具。
因此,我们首先要在系统中源码编译安装cmake工具。

1. 安装cmake
  # cd /usr/local/src
  # wget https://www.cmake.org/files/v3.4/cmake-3.4.1.tar.gz
  # tar zxvf cmake-3.4.1.tar.gz
  # cd cmake-3.4.1

  # ./configure --prefix=/usr/local/cmake
  # make && make install

2. 确保以下所需系统软件包已经被安装
  通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
  gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool*
  如果缺少相关的软件包,可通过yum -y install 的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh 的方式安装。

3. 安装前的系统设置
  // 建立 mysql 安装目录及数据存放目录
  # mkdir /usr/local/mysql  // 安装文件目录
  # mkdir /data/mysql/log  // 二进制日志目录,主从同步用
  # mkdir /data/mysql/data  // 数据库数据目录

  // 创建用户和用户组
  # groupadd mysql
  # useradd -M -s /sbin/nologin -g mysql mysql

  // 赋予数据存放目录权限
  # chown mysql:mysql -R /data/mysql/log
  # chown mysql:mysql -R /data/mysql/data

4. 安装 BOOST
  # cd /usr/local/src
  # wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
  # tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
  # mv /usr/local/boost_1_59_0 /usr/local/boost

5. 编译安装 MySQL 5.7.10
  通过 http://www.mysql.com/downloads/mysql 官方网址或国内的sohu镜像下载软件包。

  # cd /usr/local/src
  # wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.10.tar.gz
  # tar zxvf mysql-5.7.10.tar.gz
  # cd mysql-5.7.10

  # cmake \
   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  // 指定MySQL程序的安装目录
   -DMYSQL_DATADIR=/data/mysql/data \  // 数据文件目录
   -DDEFAULT_CHARSET=utf8 \  // 指定服务器默认字符集
   -DDEFAULT_COLLATION=utf8_general_ci \  // 指定服务器默认的校对规则
   -DENABLED_LOCAL_INFILE=ON \  // 指定是否允许本地执行 LOAD DATA INFILE
   -DWITH_MYISAM_STORAGE_ENGINE=1 \  // 指定静态编译到 MySQL 的存储引擎:MYISAM
   -DWITH_INNOBASE_STORAGE_ENGINE=1 \  // 指定静态编译到 MySQL 的存储引擎:INNODB
   -DWITH_ARCHIVE_STORAGE_ENGINE=1 \  // 指定静态编译到 MySQL 的存储引擎:ARCHIVE
   -DWITH_MEMORY_STORAGE_ENGINE=1 \  // 指定静态编译到 MySQL 的存储引擎:MEMORY
   -DWITH_BOOST=/usr/local/boost

  # make
  # make install

6. 配置并初始化数据库
  创建 my.cnf 配置文件
  # mkdir /var/log/mysql
  # chown mysql:mysql -R /var/log/mysql

  # mkdir /var/run/mysql
  # chown mysql:mysql -R /var/run/mysql

  # cp support-files/my-default.cnf /etc/my.cnf  // MySQL 默认配置文件路径
  配置内容可参考:/uploads/attachs/201512/17/12222898745.txt

  初始化数据库,会自动生成一个随机密码(拷贝,后续用)
  # cd /usr/local/mysql
  # bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

  复制生成 Mysql 服务器的自动与停止脚本
  # cp support-files/mysql.server /etc/init.d/mysql

  将 Mysql 服务添加到服务器管理中,并设置自启动状态:
  #chkconfig --list | grep mysql  // 查询当前是否有mysql服务
  #chkconfig --add mysql  // 添加mysql服务到服务器管理中
  #chkconfig --list | grep mysql  // 查询此时mysql服务器的启动状态
  #chkconfig --level 35 mysql on  // 设置在3、5运行级别也自启动

  启动MySQL
  #service mysql start 或 #/etc/init.d/mysql start
  如果启动失败修改 mysql 权限:#chmod 755 /etc/init.d/mysql

  通过命令行登录管理MySQL服务器(提示输入密码时输入之前拷贝的密码):
  # /usr/local/mysql/bin/mysql -u root -p

  登陆后,初始化 MySQL 数据库的用户密码
  mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW-PASSWORD';
  mysql> flush privileges;

注:MySQL启动后一切正常,但是大概在五六分钟后MySQL内存开始莫名飙升到500M,然后就稳定在500M左右,所有的 buffer, size, cache 等都是按最小配置,无 SQL 请求,甚至关闭 innodb 都无效。