一.前言
linux安装软件的方式多种多样,MySQL也不例外,本文将介绍MySQL所有的安装方式。
二.关于MySQL的安装
MySQL一般可以采用四种安装方式,每种方式各有优点,使用场景各有不同:
- yum安装MySQL,优点:简单,方便,适用场景:可以访问网络的环境
- 离线源码编译安装MySQL,优点:可定制,适用性强,适用场景:无网络,需要定制MySQL,平台兼容性不强(内存最好大于4G不然编译会出现内存不足的报错)
- RPM包安装MySQL,优点:简单,方便,适用场景:redhat系统
- 通用二进制包安装MySQL,优点:简单,好维护,适用场景:大部分环境都适用(推荐)
三.部署规划
3.1 服务器规划
服务器 | 操作系统版本 | CPU架构 | MySQL安装方式 |
---|---|---|---|
node6 | CentOS Linux release 7.4.1708 | x86_64 | 源码编译安装MySQL |
node7 | CentOS Linux release 7.4.1708 | x86_64 | 通用二进制包安装MySQL |
node8 | CentOS Linux release 7.4.1708 | x86_64 | RPM包安装MySQL |
node9 | CentOS Linux release 7.4.1708 | x86_64 | yum安装MySQL |
3.2 数据库目录规划
文件类型 | 文件部署位置 |
---|---|
数据目录datadir | /data/data(/data目录请确保足够大) |
配置文件my.cnf | /etc/my.cnf |
错误日志log-error | /data/log/mysql_error.log |
二进制日志log-bin | /data/binlogs/mysql-bin(用于数据库恢复和主从复制,以及审计(audit)操作) |
慢查询日志slow_query_log_file | /data/log/mysql_slow_query.log |
套接字文件socket | /data/run/mysql.sock |
进程ID文件mysql.pid | /data/run/mysql.pid |
四.准备工具
1.MySQL通用二进制包:mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
2.MySQLRPM包:mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
3.MySQL源码包:mysql-boost-5.7.28.tar.gz
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
4.MySQL的Yum源:mysql57-community-release-el7-10.noarch.rpm
或者mysql-community-release-el7-5.noarch.rpm
下载方法:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
或者wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
五.通用二进制包安装MySQL
5.1 上传MySQL通用二进制安装包到node7的/usr/local/src目录下
[root@node7 src]# pwd
/usr/local/src
[root@node7 src]# ls
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
5.2 解压MySQL到指定目录并改名
[root@node7 src]# tar -zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@node7 src]# cd /usr/local/
[root@node7 local]# ls
bin etc games include lib lib64 libexec mysql-5.7.26-linux-glibc2.12-x86_64 sbin share src
[root@node7 local]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
[root@node7 local]# ls
bin etc games include lib lib64 libexec mysql sbin share src
5.3 创建MySQL用户和用户组
[root@node7 local]# groupadd -g 1111 mysql
[root@node7 local]# useradd -g mysql -u 1111 -s /sbin/nologin mysql
[root@node7 local]# id mysql #查看用户信息
uid=1111(mysql) gid=1111(mysql) groups=1111(mysql)
5.4 配置MySQL的bin目录到PATH路径
[root@node7 local]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@node7 local]# source /etc/profile
[root@node7 local]# mysql #输入MySQL之后双击tab键,即可列出候选MySQL命令
mysql mysql_client_test_embedded mysqld-debug mysqldumpslow mysql_plugin mysqlslap mysql_upgrade
mysqladmin mysql_config mysqld_multi mysql_embedded mysqlpump mysql_ssl_rsa_setup mysqlxtest
mysqlbinlog mysql_config_editor mysqld_safe mysqlimport mysql_secure_installation mysqltest_embedded
mysqlcheck mysqld mysqldump mysql_install_db mysqlshow mysql_tzinfo_to_sql
5.5 创建MySQL数据存放目录
[root@node7 ~]# mkdir -p /data/{data,log,binlogs,run}
[root@node7 ~]# tree /data #如果没有tree命令,则yum -y install tree安装
/data
├── binlogs
├── data
├── log
└── run
4 directories, 0 files
[root@node7 ~]# chown -R mysql:mysql /data
[root@node7 ~]# ll /data/
total 0
drwxr-xr-x 2 mysql mysql 6 Dec 3 11:07 binlogs
drwxr-xr-x 2 mysql mysql 6 Dec 3 11:07 data
drwxr-xr-x 2 mysql mysql 6 Dec 3 11:07 log
drwxr-xr-x 2 mysql mysql 6 Dec 3 11:07 run
5.6 配置MySQL配置文件
[root@node7 mysql]# rm -rf /etc/my.cnf
[root@node7 mysql]# touch /etc/my.cnf
#my.cnf配置文件详解,请查看我上一篇blog的#https://www.cnblogs.com/renshengdezheli/p/11913248.html的“MySQL配置文件优化参考”
[root@node7 mysql]# cat /etc/my.cnf
[client]
port=3306
socket=/data/run/mysql.sock
[mysqld]
port=3306
socket=/data/run/mysql.sock
pid_file=/data/run/mysql.pid
datadir=/data/data
default_storage_engine=InnoDB
max_allowed_packet=512M
max_connections=2048
open_files_limit=65535
skip-name-resolve
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
innodb_buffer_pool_size=1024M
innodb_log_file_size=2048M
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=0
key_buffer_size=64M
log-error=/data/log/mysql_error.log
log-bin=/data/binlogs/mysql-bin
slow_query_log=1
slow_query_log_file=/data/log/mysql_slow_query.log
long_query_time=5
tmp_table_size=32M
max_heap_table_size=32M
query_cache_type=0
query_cache_size=0
server-id=1
5.7 初始化MySQL数据库
[root@node7 mysql]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/data
[root@node7 mysql]# echo $?
0
[root@node7 mysql]# grep 'temporary password' /data/log/mysql_error.log #查看MySQL初始化密码
2019-12-03T03:47:42.639938Z 1 [Note] A temporary password is generated for root@localhost: lhrh>J,p<8gw
5.8 生成ssl(可选)
#关于MySQL开启ssl查看https://www.cnblogs.com/mysql-dba/p/7061300.html
[root@node7 mysql]# mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data/data
Generating a 2048 bit RSA private key
......................................+++
.+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
....................................+++
............................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.....................................................................................+++
..............................................+++
writing new private key to 'client-key.pem'
-----
#执行完成之后,会有在datadir目录生成*.pem文件
[root@node7 mysql]# ls /data/data/
auto.cnf client-cert.pem ibdata1 mysql public_key.pem sys
ca-key.pem client-key.pem ib_logfile0 performance_schema server-cert.pem
ca