暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

MySQL 升级方法选择

原创 IT邦德 2021-07-12
656
作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ:2243967774

简介:
本次Mysql升级是基于Docker环境下的操作

image.png

跨版本升级:
---可行
5.5.57 --> 5.6.48
5.5.62 --> 5.7.30
5.6.37 --> 5.7.19
5.7.30 --> 8.0.19
-- 不可行,需要使用中间版本过度
5.5.62 --> 8.0.19
5.6.37 --> 8.0.19

1.MySQL 升级过程

注意:一定要进行备份。
在关闭 mysql 时,参数 innodb_fast_shutdown 影响着表的存储引擎为 innodb 的行为,参数为 0、1、2 三个值。
0 代表当 MYSQL 关闭时,Innodb 需要完成所有 full purge 和 merge insert buffer 操作,这需要花费时间来完成。
如果做 Innodb plugin 升级,通常需要将这个参数调为 0,然后再关闭数据库
1 是参数的默认值,不需要完成 full purge 和 merge insert buffer 操作,但是在缓冲池的一些数据脏页还是会刷新到磁盘。
2 表示不需要完成 full purge 和 merge insert buffer 操作,也不将缓冲池中的数据脏页写回磁盘

【5.5.62 升级到 5.7.30】
[root@centos7 ~]# docker cp /usr/share/zoneinfo/Asia/Shanghai mysql56:/etc/localtime    #修改时区

#启动数据库(5.5.62)
[root@mysql56 bin]# cd /usr/local/mysql/bin
[root@mysql56 bin]# mysqld_safe &
[root@mysql56 bin]# mysql -uroot -p     --默认空密码
mysql> grant all on *.* to root@'%' identified by 'root' with grant option;    --修改root远程登陆密码
mysql> flush privileges;
mysql>set password for root@'localhost'=password('root');  --修改本地root密码

#初始化(5.7.30)
/usr/local/mysql5730/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql5730 --datadir=/usr/local/mysql5730/data
[root@mysql56 ~]# cd /usr/local/mysql5730/data

[root@mysql56 data]# ll
image.png

[root@centos7 ~]# mysql -uroot -proot -h172.18.12.10 -P3306   #宿主机登陆容器内Mysql
[root@centos7 ~]# docker exec -it mysql56 bash
mysql> select version();

image.png

mysql> show variables like 'innodb_fast_shutdown%';

image.png

#确保数据刷新到磁盘
mysql> set global innodb_fast_shutdown=0;    
[root@mysql56 ~]# which mysqladmin
/usr/local/mysql/bin/mysqladmin

root@mysql5562:/# mysqladmin -uroot -p version  #查看版本

#关闭Mysql
[root@mysql56 ~]# mysqladmin -uroot -proot shutdown
[root@mysql56 ~]# systemctl status mysqld    #确认是否关闭

image.png

#修改 my.cnf 参数文件(例如 basedir 参数)
[root@mysql56 ~]# more /etc/my.cnf

image.png

[root@mysql56 local]# mkdir mysql5730
[root@mysql56 ~]# vi /etc/my.cnf
--------------添加以下内容----------------
[mysqld]
#basedir=/usr/local/mysql
basedir=/usr/local/mysql5730
datadir=/usr/local/mysql/data
port=3306
#socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/log.err
server_id=55623306
log-bin
skip-name-resolve
character_set_server=utf8mb4

#使用新版本 mysqld_safe 启动 MySQL,观察错误日志
[root@mysql56 bin]# cd /usr/local/mysql5730/bin
[root@mysql56 bin]# ./mysqld_safe &

#若新版本小于 8.0.16,那么需要使用 mysql_upgrade -uroot -proot,观察错误日志
[root@mysql56 bin]# ./mysql_upgrade -uroot -proot

image.png

mysql> select version();

image.png

本文如有错误或不完善的地方请大家多多指正,
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!

最后修改时间:2021-07-12 06:22:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论