当前位置: 首页 >数据库 > MySQL从5.5升级到5.7

MySQL从5.5升级到5.7

最近有个任务将MySQL从5.5版本升级到5.7,没升级过数据库,只能摸索的前进。上网找了一堆资料。目测看只有两种升级方式

1.升级方式

1.Logical Upgrade(逻辑升级):利用mysqldump来直接导出SQL文件,然后起一个新的MySQL5.7库,将导出的SQL文件导入到新库中,当然如果采用这种方式的话建议不要用mysqldump而使用mydumper.因为我们公司的数据量很大所以没有采用这个方法来处理。

2.In-Place Upgrade:这个升级方法简单快速,就是直接替换原来的MySQL的安装目录和/etc/my.cnf配置文件,利用mysql_upgrade脚本来完成系统表的升级。

2.环境介绍

我们的mysql集群采用的是Atlas读写分离,mysql-proxy下有4台数据库服务器:

master: 172.16.100.1

slave1:172.16.100.2

slave2:172.16.100.3

slave3:172.16.100.4

当前数据库版本:”5.5.21

配置文件:/etc/my.cnf

数据目录:/data/mysql

操作系统版本:CentOS6.9

3.升级思路

因为是线上业务不能中断,所以决定先将其中一台slave踢出集群,并升级到mysql5.7,然后再讲mysql5.7这台设备加入到集群当中,等数据同步完了再做主备切换,再升级其他的slave节点。

4.实在演练

4.1.登陆到mysql-proxy中将其中一台从库从集群中踢出

mysql -uuser -ppwd -h127.0.0.1 -P234

查看后端代理库
mysql> SELECT * FROM backends;+-------------+-------------------+-------+------+ | backend_ndx | address | state | type | +-------------+-------------------+-------+------+ | 1 | 172.16.100.1:3306 | up | rw | | 2 | 172.16.100.2:3306 | up | ro | | 3 | 172.16.100.3:3306 | up | ro | | 4 | 172.16.100.4:3306 | up | ro |
+-------------+-------------------+-------+------+

5 rows in set (0.00 sec)
将服务172.16.100.4从集群中踢出
mysql> remove backend 4

4.2.替换mysql的安装目录

到mysql的官网下载mysql5.7版本mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

解压mysql5.7

tar -zxf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C  /usr/local/

如果你之前的mysql目录是链接的方式创建的话,那么只需要取消链接,从新做一下链接就可以了

cd /usr/local/

unlink mysql

ln -s mysql-5.7.23-linux-glibc2.12-x86_64 mysql

如果你之前的mysql目录不是链接的方式,那么重新命名一下,再链接一个mysql目录就可以了

cd /usr/local/

mv mysql mysql5.5

ln -s mysql-5.7.23-linux-glibc2.12-x86_64 mysql(建议尽可能的使用这种方式,比较方便升级)

 

4.3.启动mysql服务

mysql5.7以后是不需要进行数据库初始化的,也就是不用去执行mysql_install_db这个命令

/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --user=mysql --skip-grant-tables --skip-networking &

ps -ef  |grep mysql

如果有出息错误的话查看日志信息

 

4.4.升级系统表数据字典信息,命令如下:

/usr/loca/mysql/bin/mysql_upgrade

输出的结果:

可能会有一些error提示"ALTER TABLE ** FROCE",这些错误不用担心mysql在后面会自动修复repair的时间可能会有点长,要看你的数据库情况,我这次升级花了两个多小时

最后如果输出Upgrade process completed successfully那么就表示升级成功了。

 

4.5.升级完以后重启一下mysql

/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --user=mysql &

查看一下是否升级完了,如果升级成功的话输出如下

This installation of MySQL is already upgraded to 5.7.23, use --force if you still need to run mysql_upgrade

 

4.6.重新做一下主从配置

重做一下主从配置

mysql> change master to master master_host="172.16.100.1",master_user="***",master_passowrd="***",master_log_file=" mysql-bin.000004", master_log_pos=1083;

mysql> start slave;

mysql> show slave status\G;

如果两个yes就说明正常了

4.7加入到读写分离的集群中

到mysql-proxy设备上面

mysql -uuser -ppwd -h127.0.0.1 -P234

mysql> ADD SLAVE 172.16.100.4

mysql> select * from backends;
如果state的状态是up的就说明加入集群成功了。

 

后记:

我第一次升级数据库,不知道整体思路对不对,先在测试环境上面做的测试,然后又测了几天没有问题了才在线上做的升级。仅供参考。

 

 

 

 

作者:慢慢变成大叔
来源链接:https://www.cnblogs.com/zxy860320/p/9559227.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117446.html

标签:MySQL升级
分享给朋友:

“MySQL从5.5升级到5.7” 的相关文章

MySQL事务和锁 2022年05月16日 21:54:37
mysql查询最后一条记录 2022年06月08日 19:25:45
mysql 查询操作日志 2022年06月10日 21:58:42
MYSQL根据日期查询 2022年06月11日 21:03:52
mysql查询重复的 2022年06月12日 13:49:33