MySQL的安装方式通常来讲一般有三种:使用系统包管理工具(比如yum)进行安装、使用源码包进行编译安装、使用二进制包进行安装。
通常来说,如果需要进行高度定制化安装则需要使用源码包进行编译安装;普通独占服务器则使用包管理工具进行安装比较便捷快速;而实际生产环境中一般会使用二进制包进行安装,既省去编译的麻烦又可以一台服务器上安装多个实例。
MySQL的官网一共提供了四个版本:GA版、DMR版、RC版、Beta版。在实际生产环境中无比使用稳定的GA版本。
由于编译安装过于繁琐,包管理工具安装又及其简单,所以本篇仅仅介绍二进制包的安装过程。
正所谓“工欲善其事,必先利其器”,在正式安装MySQL之前我们必须对服务器进行相应的初始化和优化。下面简单介绍下服务器初始化的几项内容:
一、关闭服务器numa
关闭方式分为在BIOS、操作系统中关闭、MySQL数据库启动过程中关闭。
根据实验在BIOS层关闭NUMA,无论OS层面的NUMA是否开启,都不会影响性能;在OS层关闭NUMA,BIOS层中NUMA没有关闭,则会影响性能QPS会下降15%-30%。因此强烈推荐在BIOS层关闭NUMA。
二、关闭SELINUX
sed -i 's/^\(SELINUX=\).*/\1disabled/g' /etc/selinux/config
二、关闭防火墙
CentOS6.x
/etc/init.d/iptables stop
chkconfig iptables off
CentOS7.x
systemctl stop firewalld
systemctl disable firewalld
三、选择文件系统为xfs
xfs文件系统相比ext4,更加方便管理,支持动态扩容等,一种非常优秀的日志文件系统。
四、调整磁盘I/O调度算法为deadline模式
查看当前系统的I/O调度算法
cat /sys/block/sda/queue/scheduler
修改I/O调度器,需要在/etc/grub.conf中加入elevator=deadline,保证永久生效。
五、swap分区的设置
swappiness值的大小对如何使用swap分区有着很大的影响。它有着0和100两个极限值。0代表最大限度地使用物理内存,100则表示积极地使用swap分区。针对MySQL服务器建议不分配swap,或者分配很小的空间就足够了(比如2GB)
查看和修改swappiness
cat /proc/sys/vm/swappiness
sysctl -a|grep swap
六、修改操作系统限制 open files和max user processes
cat /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft core unlimited
* hard core unlimited
* soft stack 20480
* hard stack 20480
完成如上步骤后,重启服务器。服务器初始化基本完成。下面可以进行MySQL的安装
MySQL安装过程大致可以分为四个步骤:
一、创建MySQL用户组以及用户,创建数据库目录等
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
mkdir -p /data/mysql/{data,log,binlog}
chown -R mysql.mysql /data/mysql
二、下载MySQL二进制安装包,并校验。解压二进制安装包
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
md5sum mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
tar zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.26-linux-glibc2.12-x86_64
cd /usr/local
ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql
chown -R root.mysql mysql
三、设置配置文件并初始化MySQL
配置文件大家可以参考http://imysql.com/my-cnf-wizard.html自动生成工具生成后再自行更改。
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql --initialize
数据库初始化完成后,数据库的初始密码会在/data/mysql/log/error.log下,通过如下命令即可查看
cat /data/mysql/log/error.log|grep password
四、启动MySQL并完成相关操作
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
使用初始化密码登录数据库,修改数据库的初始密码
SET PASSWORD = "xxxxxxxxxxxxxxxxxx"
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
以上MySQL安装完成。