一、问题描述 {#一、问题描述}
本站自建站以来使用的都是MySQL5.5.62版本,由于此版本数据库过于陈旧,在WordPress的站点健康检查中收到提示"数据库服务器过于陈旧"。遂决定升级MySQL,告别旧时代。
二、备份数据 {#二、备份数据}
由于没有测试环境,都是在生产环境直接操作。所以我没有进行数据库的卸载操作,而是直接将原目录修改名称以备不时之需【如果升级失败可以回退】。
升级前备份MySQL中的wordpress数据库。【因为我只用到了wordpress数据库】
## 格式
mysqldump -u [用户名] -p [数据库名] > [生成的文件名]
## 导出示例
mysqldump -u root -p wordpress > /home/mysql/wordpress.sql
三、停止服务 {#三、停止服务}
备份后,停止原MySQL服务
service mysql stop
备份MySQL目录和my.cnf文件【需根据实际路径自行备份】
mv /usr/local/mysql /usr/local/mysql_old
mv /etc/my.cnf /etc/my.cnf_old
最好还要将nginx和php-fpm服务一并停掉
service nginx stop
service php-fpm stop
四、安装新版 {#四、安装新版}
卸载步骤可自行判断是否执行,谨慎执行,后果自负。
(1)检查系统是否安装MySQL
rpm -qa|grep mariadb
rpm -qa|grep mysql
如果存在,卸载命令示例如下:
rpm -e --nodeps mariadb-libs-5.5.62-1.el7.x86_64
如果无输出,则可以直接安装新版本MySQL。
(2)检查操作系统版本
cat /etc/redhat-release
(3)下载并安装 MySQL 官方的 Yum Repository
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
(4)进行repo的安装
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
安装完成之后,会在/etc/yum.repos.d/这个目录下生成两个文件:
(5)安装MySQL Server
yum -y install mysql-server
(6)启动MySQL
systemctl start mysqld.service
## 查看服务状态
systemctl status mysqld.service
## 查看进程
ps -ef|grep mysqld
(7)登录MySQL
mysql -u root -p
首次登录,没有密码直接回车即可。登录后设置密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
退出,使用配置的密码再次登录。
(8)版本验证
[root@dameng ~]# mysql --version
mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
此时,MySQL已升级到8.0.26版本。
五、数据恢复 {#五、数据恢复}
重新创建wordpress数据库
mysql> create database wordpress;
## 执行备份SQL文件
mysql> source /home/mysql/wordpress.sql;
六、重启服务 {#六、重启服务}
service php-fpm start
service nginx start
登录网站,验证
SQL服务器已是最新,MySQL升级成功。