1.下载mysql8安装包
下载安装包需要到官网上直接下载,下载地址:
https://www.mysql.com/downloads/
选择服务器对应的版本下载RPM
2.安装mysql
解压文件后获得
实际并不需要这么多的包只需要
将下载好的文件放入/opt/server文件夹中
然后查看依赖是否安装
- libaio
rpm -qa|grep libaio
如图,如果存在libaio的字样说明有libaio相关依赖,否则执行下面命令,进行依赖的安装:
yum install libaio
- net-tools
rpm -qa|grep net-tools
如图,如果存在net-tools的字样说明有net-tools相关依赖,否则执行下面命令,进行依赖的安装:rpm -qa|grep net-tools
接下来是安装过程:
首先要进入到文件所在的文件下
cd /opt/server/mysql
然后执行安装指令
1 | rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm |
在安装第三个包的时候如果出现如下错误:
需要解除之前安装过的依赖即可,执行下面命令:
yum remove mysql-libs
在安装地五个包的时候如果出现如下错误:
需要安装libnuma依赖,执行如下命令解决:
yum install libnuma*
检测是否安装成功
rpm -qa|grep -i mysql
如果成功显示上面安装的6个包,说明安装成功。
3.设置权限
如果你是以root身份安装和允许mysql服务,为了保证数据库目录与文件(默认/var/lib/mysql下)的所有者为mysql用户,需要执行下面的命令初始化:
1 | mysqld --initialize --user=mysql |
–initialize选项默认以安全模式来初始化,则会为root用户生成一个临时密码,并将该密码标记为过期,登录后不能做其他任何操作,需要重新设置一个新的密码。生成的临时密码会记录在日志中,使用如下命令查看日志:
1 | cat /var/log/mysqld.log |
先启动服务
1 | systemctl start|stop|restart mysqld |
其中start|stop|restart分别为启动、停止和重启mysql服务。
如果需要开机自启动需要:
1 | systemctl enable mysqld |
然后先使用临时密码登陆
1 | mysql -uroot -p |
回车并输入临时密码登录,登录成功后,执行如下命令修改密码:
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your New Password' |
4.开启远程
如果是在远程服务器上安装服务需要打开远程设置
1 | use mysql |
5.优化配置
SQL执行慢有时候不一定完全是SQL问题,手动安装一台数据库而不做任何参数调整,再怎么优化SQL都无法让其性能最大化。要让一台数据库实例完全发挥其性能,首先我们就得先优化数据库的实例参数。
数据库实例参数优化遵循三句口诀:日志不能小、缓存足够大、连接要够用。
所以数据库事务提交后需要将事务对数据页的修改刷( fsync)到磁盘上,才能保证数据的持久性。这个刷盘,是一个随机写,性能较低,如果每次事务提交都要刷盘,会极大影响数据库的性能。数据库在架构设计中都会采用如下两个优化手法:
- 先将事务写到日志文件RedoLog(WAL),将随机写优化成顺序写
- 加一层缓存结构Buffer,将单次写优化成顺序写
所以日志跟缓存对数据库实例尤其重要。而连接如果不够用,数据库会直接抛出异常,系统无法访问。,以下是常见的优化项或者需要修改的项
参数分类 | 参数名 | 参数值 | 备注 |
---|---|---|---|
数据缓存 | INNODB_BUFFER_POOL_SIZE | 物理内存50-80% | 一般来说越大性能越好 |
日志相关 | Innodb_log_buffer_size | 16-32M | 根据运行情况调整 |
日志相关 | sync_binlog | 1、100、0 | 1安全性最好 |
监听及连接 | max_connections | 根据业务情况调整 | 可以预留一部分值 |
文件读写性能 | innodb_flush_log_at_trx_commit | 2 | 安全和性能的折中考虑 |
其他 | wait_timeout,interactive_timeout | 28800 | 避免应用连接定时中断 |
端口 | port | 非3306的值 | 基于数据库安全 |
日志相关 | log-bin | /opt/date | binglog日志的存放地址 |
日志相关 | expire_logs_days | 7 | 只保留 7 天的日志文件(需要重启mysql数据库) |