我的系统:Ubuntu 18.04
我的原来的MySQL版本:Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)

本文升级过程参考自:
[Ubuntu] MySQL 5.7 無痛升級到 8.0
https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

1 升级前的检查准备

在终端运行命令:

1
mysqlcheck -u root -p --all-databases --check-upgrade

返回结果如果全部都是OK, 就表示检查没问题,进入下一步。如果有错误,看这里:https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html

2 备份

备份数据库
之前都没有使用过备份数据库,参考的这个命令:

1
2
3
mkdir mysql-backup
cd mysql-backup
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p

该命令各个参数解释:

–all-databases : 表示导出全部数据库

–single-transaction : 这个不太懂,网上的解释也没看明白,需要补充补充数据库基础了。。

–quick : 导出时不会将数据加载到缓存,而是直接输出。默认就是启用状态。可以使用–skip-quick 取消该选项。

–lock-tables:开始导出前,锁定所有表。当导出多个数据库时,–lock-tables分别为每个数据库锁定表。

$(date+%F)表示获取当前时间,在Linux Shell中:

1
2
3
4
5
6
date //获取时间
2019年 08月 08日 星期四 11:40:20 CST
date +%F //获取日期
2019-08-08
date +%s //获取时间戳
1565235736

–user, –u指定连接的用户名

–password, –p连接数据库密码

备份MySQL设置

1
2
cd mysql-backup
sudo tar zcvf mysql_config.tar.gz /etc/mysql/

3 添加MySQL APT

下载mysql-apt-config_0.8.13-1_all.deb:https://dev.mysql.com/downloads/repo/apt/

安装:

1
2
3
4
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
sudo apt-get update

4 安装新版的MySQL

1
2
3
4
5
service mysql stop # 先停了MySQL service
sudo apt-get install mysql-server
sudo service mysql start # 开启MySQL service

最后检查下升级后的版本:

1
mysql -V

显示:

1
mysql Ver 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)

已经升级成功。