CentOS下Mysql离线升级

2021/9/27 mysqlmysql8

# 一、下载 MySQL

网址:https://dev.mysql.com/downloads/mysql/

# 二、选择版本

Select Operating System: 选择 Red Hat ,CentOS 是基于红帽的,Select OS Version: 选择 linux 7 然后选择RPM bundle image

# 三、升级文件整理

整理要升级的rpm文件

# 解压
tar -xvf mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
# 列出需升级的文件
rpm -qa | grep -i mysql

# 然后把解压出来的rpm文件对比需要升级的文件列表,复制到一个文件夹中
# 创建mysql文件夹存储升级文件
mkdir mysql
# 蒋需要升级的文件移动到新创建的mysql文件夹中
mv xxx.rpm mysql

# 需要移动的,其实就是原来安装的那几个包,如
mysql-community-common-8.0.11-1.el7.x86_64.rpm
mysql-community-libs-8.0.11-1.el7.x86_64.rpm --(依赖于common)
mysql-community-client-8.0.11-1.el7.x86_64.rpm --(依赖于libs)
mysql-community-server-8.0.11-1.el7.x86_64.rpm --(依赖于client、common)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 四、备份数据库

升级数据库是不会删库的,但备库是常规操作!

mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > data-for-upgrade.sql

--add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)

--routines, -R
导出存储过程以及自定义函数。

--events, -E
导出事件。

--all-databases  , -A
导出全部数据库。

--force
在导出过程中忽略出现的SQL错误。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

参数可参考 (opens new window)

# 五、清空缓存

设置参数使数据库关闭时会清空缓存避免版本间缓存格式差异

mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
1

# 六、关闭数据库

mysqladmin -u root -p shutdown
1

# 七、卸载旧版本

卸载mysql-server包,拒绝直接升级!所以要先卸载其他包

rpm -e mysql-community-server-8.0.11-1.el7.x86_64.rpm  #后面的参数,是前面rpm -qa | grep -i mysql列表中的 mysql-server
1

# 八、升级全部包

首先要先进入到刚才整合的要安装的包里面,否则就需要手动一个一个更新	
rpm -Uvh *
1
2

# 九、启动数据库

mysqld_safe --user=mysql --datadir=/mysql/data       #mysqld_safe 是官方推荐的启动方式user为启动的系统用户datadir为数据库文件所在目录
或者
systemctl start mysqld.service
或者
service mysql start
1
2
3
4
5

# 十、升级数据库

该操作会将旧版的系统数据库数据表转成当前版本的模样

mysql_upgrade -u root -p #u是登录数据库用户
1

# 十一、再次重启

为确保所有更新生效官方建议再次重启数据库

mysqladmin -u root -p shutdown
service mysql start
1
2
更新日期: 2021/9/29 下午11:37:01