暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL 5.7.26 二进制版本安装

原创 余强 2020-03-25
1262

MYSQL 5.7.26 二进制版本安装

安装前环境准备:

搭建yum环境

方法一:搭建阿里云的yum源(需要服务器可以上网)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOSBase.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

执行如下命令:
yum makecache

方法二:使用系统iso搭建本地的yum源
mkdir -p /data/os/yum_repo
cd /data/os
上传iso到/data/os下
mount -o loop CentOS-7.4-x86_64-DVD-1708.iso /data/os/yum_repo/
cd /etc/yum.repos.d/
vi os.repo

[os]
name=os
baseurl=file:///data/os/yum_repo
gpgcheck=0
enabled=1
gpgkey=file:///data/os/yum_repo/RPM-GPG-KEY-redhat-release

执行如下命令:
yum clean all && yum makecache

关闭系统的selinux

查询是否开启
getenforce

如果结果为Disabled说明已经关闭了selinux,为其他的结果执行如下关闭操作
临时关闭
setenforce 0

vi /etc/selinux/config
SELINUX=disabled
该参数改为 disabled 并保存后重新启动操作系统

根据实际情况选择关闭系统的防火墙

关闭防火墙:
systemctl stop firewalld

设置开机不启动:
systemctl disable firewalld

设置swap分区的配置

swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面

建议:如果内存足够大,而且服务器上面也只运行了该mysql数据库,则可以设置该值偏小。

默认swappiness是60的
[root@linux6 ~]# cat /proc/sys/vm/swappiness
60

在MySQL的服务器上最好设置vm.swappiness=0
如果要修改,则编辑/etc/sysctl.conf,加入vm.swappiness = 0就可以

修改完成了,执行
[root@linux6 ~]# sysctl –p
使参数生效

操作系统的限制

编辑/etc/security/limits.conf,添加
root soft nproc 65536
root soft nproc 65536
root soft nofile 65536
root hard nofile 65536
mysql soft nproc 65536
mysql soft nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536

numa关闭

方法一:OS内核层,启动时设置numa=off
linux6修改/etc/grub.conf,添加numa=off
linux7修改/boot/grub/menu.lst,添加numa=off

[root@MySQL-01 ~]# vim /etc/grub.conf
[root@MySQL-01 ~]# grep ‘numa’ /etc/grub.conf
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=c0618639-a967-4601-bca7-cc3b99c5c332 elevator=deadline rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM numa=off
[root@MySQL-01 ~]#

方法二:推荐在mysql启动前使用参数来关闭
例如
numactl –interleave=all /usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf &

下载并上传软件至/data/soft

创建mysql包存放目录:
[root@linux26 ~]# mkdir -p /data/soft
[root@linux26 ~]# cd /data/soft/
[root@linux26 ~]# yum install -y lrzsz
使用rz命令上传安装包
[root@linux26 soft]# ls
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

解压软件

解压包:
[root@linux26 soft]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
移动到/data下,目录为mysql(此mysql目录要不存在)
[root@linux26 soft]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /data/mysql

清除原始环境中mariadb
查询是否安装了mariadb
[root@linux26 soft]# rpm -qa | grep mariadb
如果有,则根据查询出来的结果yum remover删除
[root@linux26 soft]# yum remove mariadb-libs

磁盘处理:

不新建磁盘修改数据盘的atime属性

其中noatime,禁止操作系统更新文件的atime属性。atime是Linux/UNIX系统下的一个文件属性,每当读取文件时,操作系统都会将读操作时间回写到磁盘上。对于读写频繁的数据库文件来说,记录文件的访问时间一般没有任何用处,却会增加磁盘系统的负担,影响I/O性能!因此,可以通过设置文件系统的mount熟悉,阻止操作系统写atime信息,减轻磁盘I/O负担。

(1)修改文件系统配置文件/etc/fstab,指定noatime选项:
UUID=33958004-e8a7-4135-844f-707a5537e86a /data ext4 noatime 0 1

(2)重新mount文件系统使其修改生效:
[root@MySQL-01 ~]# mount -o remount /data

创建数据路径及授权

1.添加一块新磁盘模拟数据盘
2.格式化并挂载磁盘
格式化盘:
[root@linux26 ~]# mkfs.xfs /dev/sdb
创建mysql数据库的数据文件路径:
[root@linux26 ~]# mkdir /data/mysql/data
获取新增磁盘的uuid
[root@linux26 ~]# blkid
把挂载的磁盘记录写入/etc/fstab,开机启动
vim /etc/fstab
UUID=95d55a96-1ca6-4070-a22e-eb6eb1a7462a /data xfs noatime 0 1
挂载磁盘:
[root@linux26 ~]# mount -a
查询挂载结果:
[root@linux26 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 94G 12G 83G 12% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.1M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sda1 197M 158M 39M 81% /boot
tmpfs 280M 12K 280M 1% /run/user/42
tmpfs 280M 0 280M 0% /run/user/0
/dev/sdb 20G 33M 20G 1% /data/mysql/data
3.目录授权
[root@linux26 ~]# chown -R mysql.mysql /data/mysql
调整磁盘I/O调度算法
临时生效的方法:
(1)查看当前系统支持的I/O调度算法:
[root@linux26 ~]# dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
[root@linux26 ~]#
(2)查看当前设备(/dev/sda)使用的I/O调度算法:
[root@linux26 ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@linux26 ~]#
(3)修改当前设备使用的I/O调度算法,普通磁盘可以选择Deadline,SSD我们可以选择使用NOOP或者Deadline
[root@linux26 ~]# echo “deadline” >> /sys/block/sda/queue/scheduler
[root@linux26 ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
[root@linux26 ~]#
永久生效的方法:
永久修改I/O调度算法,可以通过修改内核引导参数,增加elevator=调度算法名
其中linux6版本修改/etc/grub.conf,而linux7版本修改/boot/grub/menu.lst

[root@linux26 ~]# vim /boot/grub/menu.lst
更改后的内容:

[root@linux26 ~]# grep “deadline” /boot/grub/menu.lst
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=c0618639-a967-4601-bca7-cc3b99c5c332 elevator=deadline rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
[root@linux26 ~]#

安装相关依赖包

yum install libaio -y

开始安装:

创建mysql用户

创建mysql用户
[root@linux26 soft]# useradd -s /sbin/nologin mysql
设置环境变量
vim /etc/profile
export PATH=/data/mysql/bin:$PATH
[root@linux26 soft]# source /etc/profile
[root@linux26 soft]# mysqld -V
mysqld Ver 5.7.26 for linux-glibc2.12 on x86_64 (MySQL Community Server (GPL))

目录授权

mkdir -p /data/mysql/data
mkdir -p /data/mysql/log
chown -R mysql.mysql /data/mysql

设置my.cnf配置文件

简单的模板:
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
log_error=/data/mysql/log/mysql_error.log
log_bin=/data/mysql/log/mysql-bin.log
port=3306
server_id=3
[mysql]
socket=/tmp/mysql.sock
EOF

初始化数据库(创建系统数据)

mysql5.6 版本

初始化命令:/data/mysql/scripts/mysql_install_db

mysql5.7 版本

–initialize参数

正常使用–initialize参数,初始化数据库后会生成临时密码给与登录
[root@linux26 data]# mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data

说明:
–initialize参数
(1)对于密码复杂度进行定制:要求密码要12位,并且有4种密码格式(比如,大小写字母、数字、特殊字符)
(2)密码过期时间:180天
(3)给root@localhost用户设置临时密码

如果在启动的时候出现如下报错,则需要对缺少的依赖包进行安装即可

[root@linux26 data]# mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
执行完成初始化的命令,会出现如下的提示:
2020-02-29T08:56:15.521948Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-02-29T08:56:15.695632Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-02-29T08:56:15.727546Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-02-29T08:56:15.801784Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 57ecb8b9-5ad1-11ea-b70b-000c29375cdc.
2020-02-29T08:56:15.802632Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed’ cannot be opened.
2020-02-29T08:56:15.804654Z 1 [Note] A temporary password is generated for root@localhost: riY_<sKl<0qr

其中标黄色部分就是生成的临时密码,后续需要修改密码

–initialize-insecure参数

使用–initialize-insecure参数初始化数据库就不会生成密码,直接msyqld就可以登录数据库

如果已经用–initialize参数初始化过数据库,需要先删除数据文件的目录:
[root@linux26 data]# rm -rf /data/mysql/data/*
使用–initialize-insecure进行初始化数据库
[root@linux26 data]# mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
2020-02-29T09:06:30.390965Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-02-29T09:06:30.524295Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-02-29T09:06:30.553929Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-02-29T09:06:30.612936Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: c661754e-5ad2-11ea-8dcc-000c29375cdc.
2020-02-29T09:06:30.613884Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed’ cannot be opened.
2020-02-29T09:06:30.614951Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

此时无需密码也可以登录数据库

安装完成后调整:

设置mysql启动方式

sys-v(linux6的方法)

[root@linux26 data]# cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@linux26 data]# service mysqld restart

systemd(linux7的方法)

注意:如果已经用sys-v方式启动过数据库的话,需要先用sys-v方式关闭,才可以用以下的方式登录数据库

sys-v方式停止数据库
[root@linux26 data]# /etc/init.d/mysqld stop

配置systemd的文件
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
配置完成就可以用systemctl命令来控制mysql的启动和关闭
[root@linux26 data]# systemctl start mysqld

修改MySQL的root密码

登录到MySQL数据库中,执行如下语句:
update mysql.user set authentication_string=password(‘root’) where user=‘root’;
flush privileges;

mysql数据库启动报错

类似:without updating PID错误
思路:
(1) 查看日志,目录为/data/mysql/data/主机名.err,主要看该日志最后部分有[ERROR]的上下文
(2) 可能有的报错情况:
/et/my.cnf 路径不对
/tmp/mysql.sock 文件修改过或者删除过
数据目录权限不是mysql
参数改错了

最后修改时间:2020-03-27 18:24:34
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论