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

本文介绍MySQL5.7的主要新特性,包括增强的性能、InnoDB存储引擎、复制功能、优化器以及JSON类型支持等。同时提供详细的安装步骤,从依赖包安装到配置文件设置,帮助读者顺利完成MySQL5.7的部署。
摘要由CSDN通过智能技术生成

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账户,如果有直接登录就好

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

新版本的源码增加了boost库,如果你下的源码里面没有需要下载这个库,否则会报错

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

配置解释:

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

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

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

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

-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 就好。

转载于:https://my.oschina.net/u/1429136/blog/738772

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值