最近漏洞扫描,扫描出了数据库存在中高危漏洞,于是迫切需要进行数据库升级。上网查了各种资料,说法很多,也到自己虚拟机上试了好多方法,终于倒腾出来,做下小总结记录一下。
升级操作:
1.到mysql官网https://dev.mysql.com/downloads/mysql/下载新版本的mysql,我这里下载的是mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz(旧版本为5.6.24-enterprise-commercial-advanced-log)
2上传软件包到/usr/local/后
解压 tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
重命名 mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
更改属主属组chown -R mysql:mysql /usr/local/mysql/
新建新版数据库存放目录mkdir mysqlData
关闭数据库进程service mysql stop
拷贝数据cp -r /var/lib/mysql /usr/local/mysqlData(此操作比较耗时,大约1小时,数据约600G)
更改属主属组chown -R mysql:mysql /usr/local/mysqlData
备份配置文件cp /etc/my.cnf /etc/my.cnf_bak
修改配置文件/etc/my.cnf 新增如下(注意旧版本的相关配置)
[mysqld]
basedir=/usr/local/mysql(新版数据库安装目录)
datadir=/usr/local/mysqlData(新版数据库数据存储目录)
log_error=/usr/local/mysqlData/error.log(新版数据库日志文件)
启动数据库 service mysql start
进入数据库并查看版本
mysql -u root -p
select version();
更新数据库内置表防止缺少相关内置信息
/usr/local/mysql/bin/mysql_upgrade -u root -p --force
重启数据库 service mysql restart
回退操作:
关闭数据库service mysql stop
还原配置文件cp /etc/my.cnf /etc/my.cnf_new
mv /etc/my.cnf _bak /etc/my.cnf
启动数据库 service mysql start
总结:拷贝数据比较耗时,并且数据存在冗余(占了两份),但是能快速进行版本切换,并且数据库数据安全一致性得到保证。