本文章提供一下本人的升级方案,真实环境可能会有各种不同,自己看情况处理,小版本升级其实并没有多复杂,注意点my.cnf配置文件就行,如果系统自带mariadb,修改配置文件时别和mariadb的自带路径冲突了,会导致一些报错。
由于工作需要,发现mysql5.7.30存在安全漏洞需要升级到mysql5.7.33,本次涉及到的生产服务器清单如下:
1.192.168.7.3 (ip随意填的,生产环境根据服务器ip自行修改)
2.192.168.7.5
·操作系统版本centos7.6
一、文件备份(时间建议:凌晨0点以后)
- 上传mysql5.7.33glibc二进制安装包至数据库服务器 (二进制包在网上下载,想升级什么版本就下载什么版本)
- 查询数据存储目录路径,数据库路径,(vi /etc/my.cnf 这个文件里面一般都有路径,也可以用find命令查找mysql路径,推荐在my.cnf文件里面看,find / -name mysql)
- 数据存储目录默认为:/var/lib/data。
- 数据库路径为:/home/data/mysql (我自己生产服务器的数据库路径,读者可根据自己的环境修改)
- 备份:#cp -rp /var/lib/data /home/mysql_bak/
- 备份my.cnf文件 #cp -rp my.cnf /home/mysql_bak/
二、部署(将mysql5.7.33的二进制包上传至服务器/usr/local/目录)
- 基础环境安装:#yum install libaio-devel ncurses-devel cmake gcc gcc-c++ bison -y
- tar -zxvf mysql-5.7.33-linux-glibc2.5-x86_64.tar.gz
- mv mysql-5.7.33-linux-glibc2.5-x86_64 /usr/local/mysql
- cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
- chown -R mysql:mysql /usr/local/mysql/
- Chmod -R 755 /usr/local/mysql/
- Chmod 755 /var/lib/mysqld.log
- 将basedir=/usr/local/mysql datadir= socket= 这些路径按照自己实际情况加入到my.cnf文件里面,因为用的是原my.cnf,所以应该没有太多需要修改的地方,只需要注意一下mysql的安装路径别弄错了就行。
三、
- 停止从库(需要先停止主从再进行 确定 binlog 同步后,在进行锁定等其他操作,如果没有主从,不需要这一步):
主数据库:192.168.7.3 从库:192.168.7.5
执行STOP SLAVE;语句
使用SHOW STATUS检查slave_open_temp_tables变量的值
如果值为0,使用mysqladmin shutdown命令关闭从服务器
2.备份数据库,备份前设置锁,只读(备份前确认没有服务调用数据库)
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
备份整个数据库
[root@test1 tmp]# mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > /home/mysql_bak/dataall.sql
Enter password:
关闭原mysql,#systemctl stop mysqld.service chkconfig --list 关闭开机自启
3.检查确认各个配置文件没问题后,进入/usr/local/mysql/bin目录 ./mysqld_safe --user=mysql &(启动mysql)
4.配置环境变量vi /etc/profile
5.添加到文件末尾:export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH
6.#source /etc/profile
7.vim /etc/my.cnf 将ps -ef |grep mysql看到的base路径加入配置文件里面
8.启动mysql,以/etc/init.d/mysql start的方式启动,进入mysql以后用sql语句,select version();看看数据库版本是否升级成功。
- 设置开机启动:#chkconfig --add mysql #chkconfig mysql on
- 开启主从同步,确认Binlog是否同步。命令:Start slave;确认binlog是否一致,pod号是否一致,也可以去navicat里面修改主库表数据,看看从库表数据是否同步一致。
- systemctl is-enabled mysqld查看系统自带的开机自启动有没有开启,有的话关闭掉:systemctl disable mysqld
注意:如果登录Mysql数据库时报2200错误,在my.cnf文件里面加入以下参数:
[client]
Socket=/var/lib/mysql/mysql.sock
转载请注明出处。