前言:

需要注意下升级前版本更新变化【主要针对在5.7.13版前的】 https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html

环境:

当前测试环境是在主从复制下针对mysql的升级
原MySQL版本:5.7.27
升级到MySQL版本:5.7.31
系统:CentOS 7.6

升级操作

升级操作首先是在从库上进行操作 ,后在主库上进行操作,若部署了高可用,主库停机会触发切换。

# 判断当前库是否为从库
mysql> show global status like 'Slave_running';
​
结果为 ON ,则表明是从库
结果为 OFF,则表明是主库
​
# 进一步验证,出现如下信息,表明是从库
mysql> show slave statusG
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.20.101 # 主库的地址
...

1.下载并上传新版本

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html

  • 验证MySQL的MD5是否正确(防止下载到非官方版本)
# 官方
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
MD5: bf1a97232dbab450cf73356fc74a02a3
​
# 实际验证
[root@initnode102 ~]# md5sum mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
bf1a97232dbab450cf73356fc74a02a3 mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

2.解压并创建软链

# 解压
[root@initnode102 ~]# tar zxf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
​
# 创建软链
[root@initnode102 ~]# cd /usr/local/
[root@initnode102 local]# ln -s /usr/local/mysql-5.7.31-linux-glibc2.12-x86_64/ mysql5731

3.停止复制

# 登陆mysql
[root@initnode102 mysql_data]# mysql -hlocalhost -uroot -p
​
# 查看下复制是否正常【双 YES】
mysql> show slave statusG
mysql> show slave statusG
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.20.101 # 主地址Master_User: rplMaster_Port: 3306Connect_Retry: 60Master_Log_File: bin.000003Read_Master_Log_Pos: 887Relay_Log_File: relay.000003Relay_Log_Pos: 640Relay_Master_Log_File: bin.000003Slave_IO_Running: Yes # 注意是否 YESSlave_SQL_Running: Yes # 注意是否 YES
...
# 停止复制
mysql> stop slave;
Query OK, 0 rows affected (0.03 sec)
​
# 查看下master status,记录下当前的 Executed_Gtid_Set 的值
mysql> show master status;
+------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
| bin.000001 | 551 | | | 22302bb1-c8bb-11e9-8669-00505620a3cf:1,
a7776f71-c8be-11e9-838f-0050563bb195:1-4 |
+------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

3.XA事务检查

 # XA检查是否有值
mysql> XA RECOVER;
Empty set (0.00 sec)
​
# 若有值,则需要 COMMIT 或 ROLLBACK xid
mysql> XA COMMIT xid;
或
mysql> XA ROLLBACK xid;

4.完全关闭mysql

 # 配置MySQL执行慢关机,InnoDB在关闭之前执行完全清除和更改缓冲区合并
mysql> SET GLOBAL innodb_fast_shutdown=0;
​
#退出mysql
mysql> exit
​
# 设置完参数后关闭MySQL
service mysqld stop

5.升级前备份数据文件

[root@initnode102 ~]# cd /data/
[root@initnode102 data]# cp -rp /data/mysql_data/ /data/mysql5727

6.更换程序

[root@initnode102 data]# cd /usr/local/
[root@initnode102 local]# mv /usr/local/mysql /usr/local/mysql5727
[root@initnode102 local]# mv /usr/local/mysql5731 mysql

7.启动mysql

service mysqld start
​
# 检查进程
[root@initnode102 local]# ps -ef|grep mysql
root 27132 1 0 14:01 pts/3 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql_data --pid-file=/data/mysql_data/initnode102.pid
mysql 28052 27132 11 14:02 pts/3 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql_data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=error.log --pid-file=/data/mysql_data/initnode102.pid --port=3306
root 28089 26838 0 14:02 pts/3 00:00:00 grep --color=auto mysql

8.执行升级

# 进入最新程序的目录
[root@initnode102 local]# cd /usr/local/mysql/bin
​
# 执行升级
[root@initnode102 bin]# mysql_upgrade -uroot -hlocalhost -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Found outdated sys schema version 1.5.1.
Upgrading the sys schema.
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.

9.恢复主从复制

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
​
mysql> show slave statusG
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.20.101 # 主服务器IPMaster_User: rplMaster_Port: 3306Connect_Retry: 60Master_Log_File: bin.000003Read_Master_Log_Pos: 1474Relay_Log_File: relay.000005Relay_Log_Pos: 983Relay_Master_Log_File: bin.000003Slave_IO_Running: Yes # 需要为 YESSlave_SQL_Running: Yes # 需要为 YES
...Seconds_Behind_Master: 0 # 注意下这个参数是否为 0

另一台从机同样操作一下

主机操作

1.操作前确认下高可用中间件是否正常【需正常情况下才能继续下面操作】

2.首先找出当前哪台机器为主并刷新日志

# 判断当前库是否为从库
mysql> show global status like 'Slave_running';
​
结果为 ON ,则表明是从库
结果为 OFF,则表明是主库
​
# 进一步验证,出现如下信息,表明是从库
mysql> show slave statusG
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.20.101 # 主库的地址
...
​
# 刷新下日志,便于出现幽灵事务排查
mysql> flush logs;

3.安装上面步骤进行下升级

4.排查不要存在幽灵事务

# 当前mysql主执行【切换被选为主的机器】
show master status;
​
# 当前机器的mysql执行【原主】
show master status;

  • 查看当前机器[原主]上 auto.cnf 的值
 [root@initnode102 ~]# cat /data/mysql_data/auto.cnf
[auto]
server-uuid=a7776f71-c8be-11e9-838f-0050563bb195

  • 需要 Executed_Gtid_Set 的值能匹配
 # 新主上的
mysql> show master status;
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
| bin.000002 | 1489 | | | 22302bb1-c8bb-11e9-8669-00505620a3cf:1-4,
a7776f71-c8be-11e9-838f-0050563bb195:1-7 | # 查看这个值
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
​
# 当前机器上的
mysql> show master status;
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
| bin.000003 | 2287 | | | 22302bb1-c8bb-11e9-8669-00505620a3cf:1-4,
a7776f71-c8be-11e9-838f-0050563bb195:1-7 | # 查看这个值
+------------+----------+--------------+------------------+------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4.change master过去,将当前机器变为从库【无幽灵事务】

 mysql> change master to master_host='192.168.20.102',master_user='rpl',master_password='123456',master_port=3306,master_auto_position=1;

5.检查复制状态是否正常

mysql> show slave statusG

linux 清除mysql relay_MySQL 小版本升级相关推荐

  1. Linux下MySQL主从架构版本升级(5.7.31->5.7.33)——冷升级

    目录 前言 下载并上传MySQL 停应用 升级从库 停止备份 停止从MySQL 继承旧版本的配置 启动并升级从MySQL 登录并验证slave 关闭slave 升级主库 查看master状态 修改从库 ...

  2. linux 清除mysql密码_linux重置mysql密码

    一般这个错误是由密码错误引起,解决的办法自然就是重置密码. 假设我们使用的是root账户. 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:wi ...

  3. 云图说|云数据库MySQL内核小版本升级全攻略

    华为云有新的内核小版本发布时,您可以在"实例管理"页面看到内核小版本升级提示,具体操作方法及注意事项"云图说"来为您详解: 点击"了解更多" ...

  4. Linux安装MySQL的小波折

    准备执行service mysql status开启MySQL服务时发现失败了 报错 mysql: unrecognized service 后来发现是在rpm -ivh安装MySQL-server时 ...

  5. linux mysql5.7版本升级,linux升级mysql到5.7

    原文:http://blog.csdn.net/qing_gee/article/details/41774265 Linux升级MySQL版本到5.7. 1.下载Linux的5.7版本,主要需要两个 ...

  6. CentOS7下生产环境MySQL 5.7.26小版本升级5.7.39

    目录 升级前版本 背景 升级 下载软件包 备份并停止数据库 升级安装 升级后检查 本文仅适合使用当前数据库为 RPM 安装方式 升级前版本 使用 mysql -V 命令查看当前版本 [dev@gxmy ...

  7. linux mysql清除缓存_转载-清除Linux中MySQL的使用痕迹~/.mysql_history

    背景:我们在管理MySQL server的时候,常常使用mysql命令行工具连接MySQL server进行操作,此时我们可以像shell命令行一样,按向上的方向键, mysql会给出我们最近执行的S ...

  8. mysql小版本升级补丁操作

    一.前言 业务场景中需要通过小版本升级来解决 MySQL 的一些 BUG 需要升级到更高版本来解决,本篇博客记录 MySQL 小版本升级操作过程. 二.升级过程 查看当前 MySQL 版本: root ...

  9. linux动态库文件.so为什么有多个版本号?(多个名字)(小版本升级)

    如图,我编译ffmpeg后发现同一个库文件有很多不同版本号后缀 这是因为有时软件会小版本升级,为了避免小版本升级后找不到库了,所以才设置了另外两个链接文件,但其实指向的都是最后文件名长的那个文件 图中 ...

最新文章

  1. ORB-SLAM3中的3d-2d匹配
  2. 详细解说 STL 排序(Sort)
  3. Stanford 研究领域
  4. Java 调用 Impala - JDBC 调用Impala
  5. 2022年中国CRM行业研究报告
  6. J2ME开发及JBuilder工具的应用
  7. Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1 clojure邮箱发送
  8. 二叉树的前中后层遍历
  9. svn报错E175002
  10. RFB-Net论文解读
  11. 各大浏览器的内核分别是什么?
  12. vue 配置 微信SDK wifi功能
  13. HTML5期末大作业:游戏设计网站设计——游戏介绍(5页) 大学生游戏网页设计作业模板下载 网游网页设计作业成品 静态HTML手游网页制作下载_网页设计代码
  14. jmeter监控服务器插件jp@gc - PerfMon Metrics Collector报错 Operation timed out
  15. FI--SAP财务系统总账应用技巧
  16. 蓝桥杯嵌入式CT117E硬件开发平台经验分享11 | 第九届蓝桥杯国赛题
  17. 判断二叉树是否是平衡二叉树
  18. java 导出csv文件通过web下载
  19. 《实战Java高并发程序设计》.pdf
  20. 【MTU】Windows/Linux下修改MTU

热门文章

  1. Android 核心组件 Activity 之上
  2. ASP网页中 制作连续无缝滚动文字
  3. linux whois 命令 详解
  4. 巴菲特如何滚雪球的?
  5. jsp需要多少java基础_Java Web基础面试题你知道多少?
  6. Ubuntu18.04实用快捷键
  7. MeeGo、Ubuntu Touch、Sailfish、Tizen系统历史关系
  8. Linux ALSA音频子系统二
  9. C++线程传递多个参数demo
  10. Vue之ElementUI导航菜单