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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值