在CentOS7上编译安装MySQL 5.7.14步骤详解

MySQL 5.7主要特性

  1. 更好的性能
    对于多核CPU、固态硬盘、锁有着更好的优化,每秒100W QPS已再也不是MySQL的追求,下个版本可否上200W QPS才是用户更关心的。
  2. 更好的InnoDB存储引擎
  3. 更为健壮的复制功能
    复制带来了数据彻底不丢失的方案,传统金融客户也能够选择使用。MySQL数据库。此外,GTID在线平滑升级也变得可能。
  4. 更好的优化器
  5. 优化器代码重构的意义将在这个版本及之后的版本中带来巨大的改进,Oracle官方正在解决MySQL以前最大的难题。
  6. 原生JSON类型的支持
  7. 更好的地理信息服务支持
    InnoDB原生支持地理位置类型,支持GeoJSON,GeoHash特性
  8. 新增sys库
    之后这会是DBA访问最频繁的库MySQL 5.7已经做为数据库可选项添加到《OneinStack》

安装前的装备

 安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

下载源码包

建议到官方网站下载http://dev.mysql.com/downloads/mysql/,选择“Source Code”。下载的过程,须要注册一个Oracle帐户,若是有直接登陆就好mysql

提供一个下载地址:http://101.96.10.47/dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.14.tar.gzc++

新版本的源码增长了boost库,若是你下的源码里面没有须要下载这个库,不然会报错sql

cd /usr/local/src

wget http://101.96.10.47/dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.14.tar.gz

tar -zvxf mysql-boost-5.7.14.tar.gz

cd mysql-5.7.14

新建MySQL用户和用户组

groupadd -r mysql
useradd -r -g mysql mysql

新建MySQL数据库数据文件目录

mkdir -p /home/mysql/data
mkdir -p /home/mysql/logs
mkdir -p /home/mysql/temp

备注:真实的生产环境通常来讲会独立放在根目录下,方便磁盘挂载上去数据库

预编译

cmake  
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_BOOST=./bootst/boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1

备注:使用cmake源码安装MySQL,若是你打算安装到不一样的路径,注意修改上面语句汇总的“/usr/local/mysql”和“/home/mysql/data安全

配置解释:socket

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql    //设置安装目录性能

-DMYSQL_DATADIR=/home/mysql/data     //设置数据库存放目录             优化

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock   //设置UNIX socket目录网站

-DDEFAULT_CHARSET=utf8mb4     //设置默认字符集ui

-DDEFAULT_COLLATION=utf8mb4_general_ci     //设置默认校对规则

-DWITH_INNOBASE_STORAGE_ENGINE=1    //添加InnoDB引擎支持

-DSYSCONFDIR=/etc    //设置my.cnf配置文件的所在目录,默认为安装目录

编译安装

make
#编译安装的过程比较久,编译安装完成执行make install
make install
#安装完成后清理一下零时文件
make clean

设置启动脚本,开机自启动

#拷贝可执行文件到指定的目录下,并修更名字为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#授予可执行的权限
chmod +x /etc/init.d/mysqld
#设置为开机启动 
systemctl enable mysqld

修改mysql的可执行目录

chown -Rf mysql:mysql /usr/local/mysql
chown -Rf mysql:mysql /home/mysql

配置文件

#参考,具体里面的参数说明,请自行晚上搜索
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

skip-external-locking
skip-name-resolve

user = mysql
port = 3306

basedir = /usr/local/mysql
datadir = /home/mysql/data
tmpdir = /home/mysql/temp
# server_id = .....
socket = /usr/local/mysql/mysql.sock
log-error = /home/mysql/logs/mysql_error.log
pid-file = /home/mysql/data/mysql.pid

open_files_limit = 10240

back_log = 600
max_connections=500
max_connect_errors = 6000
wait_timeout=605800

#open_tables = 600
#table_cache = 650
#opened_tables = 630

max_allowed_packet = 32M

sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 300
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M
query_cache_min_res_unit = 16k

tmp_table_size = 256M
max_heap_table_size = 256M

key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M

lower_case_table_names=1

default-storage-engine = INNODB

innodb_buffer_pool_size = 1G
innodb_log_buffer_size = 32M
innodb_log_file_size = 128M
innodb_flush_method = O_DIRECT

#####################
long_query_time= 2
slow-query-log = on
slow-query-log-file = /home/mysql/logs/mysql-slow.log

[mysqldump]
quick
max_allowed_packet = 32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

添加环境变量

vi /etc/profile

#末尾添加如下内容
#mysql env
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

source /etc/profile

初始化数据库

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data

备注:

  • MySQL以前版本mysql_install_db是在mysql_basedir/script下
  • MySQL 5.7直接放在了mysql_install_db/bin目录下。
  • "–initialize"已废弃,生成一个随机密码(~/.mysql_secret)
  • "–initialize-insecure"不会生成密码
  • "–datadir"目录下不能有数据文件

我用上面的语句执行后,好像没起啥做用,而后把-datadir里面的数据所有删除,用之前的脚本执行了一次,而后成功

mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data

启动数据库

[root@db-01 ~]# systemctl start mysqld
[root@db-01 ~]# systemctl status mysqld
?.mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: active (running) since Sat 2016-08-27 18:02:31 CST; 9s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13086 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
  Process: 13211 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           ?..13228 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/home/mysql/data --pid-file=/home/mysql/data/mysql.pid
           ?..13878 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/...

Aug 27 18:02:29 db-01 systemd[1]: Starting LSB: start and stop MySQL...
Aug 27 18:02:31 db-01 mysqld[13211]: Starting MySQL.. SUCCESS!
Aug 27 18:02:31 db-01 systemd[1]: Started LSB: start and stop MySQL.

查看mysql服务进程和端口

[root@db-01 ~]# ps -ef | grep mysql
root      13228      1  0 18:02 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/home/mysql/data --pid-file=/home/mysql/data/mysql.pid
mysql     13878  13228  0 18:02 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=10240 --pid-file=/home/mysql/data/mysql.pid --socket=/usr/local/mysql/mysql.sock --port=3306
root      14266  14187  0 18:05 pts/0    00:00:00 grep --color=auto mysql

设置数据库root用户密码

  MySQL和Oracle数据库同样,数据库也默认自带了一个 root 用户(这个和当前Linux主机上的root用户是彻底不搭边的),咱们在设置好MySQL数据库的安全配置后初始化root用户的密码。配制过程当中,一路输入 y 就好了。这里只说明下MySQL5.7.14版本中,用户密码策略分红低级 LOW 、中等 MEDIUM 和超强 STRONG 三种,推荐使用中等 MEDIUM 级别!

mysql_secure_installation

在这里设置的root用户明码,能够经过命令登录,可是不能执行任何操做,须要重置密码

mysql -u root -p
#首次进入,没法进行任何操做,会报错,运行mysqladmin重置密码
mysqladmin -u root
[root@db-01 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.14-log Source distribution

Copyright (c) 2000, 2016, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| edu_demo           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

这样MySQL 5.7.14就完成了安装,若是想要从新安装,只须要进入 /usr/local/src/mysql-5.7.14目录,从新执行make install 就好。

相关文章
相关标签/搜索