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
# 三、升级文件整理
整理要升级的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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 五、清空缓存
设置参数使数据库关闭时会清空缓存避免版本间缓存格式差异
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
2
# 九、启动数据库
mysqld_safe --user=mysql --datadir=/mysql/data #mysqld_safe 是官方推荐的启动方式user为启动的系统用户datadir为数据库文件所在目录
或者
systemctl start mysqld.service
或者
service mysql start
1
2
3
4
5
2
3
4
5
# 十、升级数据库
该操作会将旧版的系统数据库数据表转成当前版本的模样
mysql_upgrade -u root -p #u是登录数据库用户
1
# 十一、再次重启
为确保所有更新生效官方建议再次重启数据库
mysqladmin -u root -p shutdown
service mysql start
1
2
2