停止MySQL服务hang的问题简单分析(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 写第一篇,意味着还有第二篇的内容,这个也是自己今天偶然发现的问题。同事之前碰到了一个MySQL服务不断重启的问题,究其原因,其实倒还合理,今天的这个问题比较纠结,看起来好像没有直接的联系,问题算是比较诡异。

img_655877d5feb35786f9e29de9a2b23114.jpe

写第一篇,意味着还有第二篇的内容,这个也是自己今天偶然发现的问题。同事之前碰到了一个MySQL服务不断重启的问题,究其原因,其实倒还合理,今天的这个问题比较纠结,看起来好像没有直接的联系,问题算是比较诡异。

我简单复现下这个问题,我在5.7.19的版本中做了测试,可以复现。

首先搭建一主两从的测试环境,使用sandbox或者是我自己写的shell版本也可以,具体可以参考:https://github.com/jeanron100/mysql_slaves

我配置的环境如下,端口分别为10010和10020

10010 n1 Y

10020 n2 N

运行脚本init.sh大概也就一分钟就会搭建好了,参数文件的设置如下,GTID是开启的。

datadir=/U01/mysql_5.7_repl/n1

basedir=/usr/local/mysql_5.7

port=10010

socket=/U01/mysql_5.7_repl/n1/n1.sock

server_id=10010

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

binlog_checksum=NONE

log_slave_updates=ON

log_bin=binlog

binlog_format=ROW

主从的配置是差不多的,复制关系没有问题。

然后我们停止从库,把从库的GTID设置从配置文件删除,即删除参数。

gtid_mode=ON

enforce_gtid_consistency=ON

然后启动之后,MySQL服务竟然能够正常启动,在5.7.16的版本中测试时会出现不断重启的问题。当然启动之后,slave的线程是无法启动的。

mysql> start slave;

ERROR 3112 (HY000): The replication receiver thread for channel '' cannot start in AUTO_POSITION mode: this server uses @@GLOBAL.GTID_MODE = OFF.

提示很明显,是GTID的问题。

这个时候主库端已经没有了从库的连接,因为IO_Thread还没有建立关联。

我们这个时候保留主库GTID的配置,保留从库的服务,停止主库,使用mysqladmin shutdown 的方式。主库的操作命令就会hang住了。

mysqld的服务没了踪影,但是mysqladmin的命令卡在了那里。

img_090ce34cd8c020c8577573a69ff2f704.jpe

魔性的一点是mysqld的服务已经停止了,我重启还是能够正常启动,但是mysqladmin的进程一直挂在那里。这个就有些不太合理了。

而问题的解决方法有两个,一个是删除主库的GTID配置,另外一个是停止从库(或者保留从库GTID配置,暂且启动)

这个问题的方向已经明确,和不规范的配置,不规范的操作有关,但是这个问题的结果还是有些出人意料。后续再来解读。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
关系型数据库 MySQL Apache
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
16 0
|
6天前
|
关系型数据库 MySQL 索引
mysql 分析5语句的优化--索引添加删除
mysql 分析5语句的优化--索引添加删除
17 0
|
6天前
|
关系型数据库 MySQL 数据挖掘
轻松入门MySQL:利用MySQL时间函数优化产品销售数据统计与分析(9)
轻松入门MySQL:利用MySQL时间函数优化产品销售数据统计与分析(9)
|
6天前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之如何使用ADB MySQL湖仓版声纹特征提取服务
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
114 1
|
6天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
6天前
|
安全 关系型数据库 虚拟化
WIndows Server 远程桌面服务—RDS
WIndows Server 远程桌面服务—RDS
|
6天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
42 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
|
6天前
|
存储 关系型数据库 MySQL
MySQL 8 索引原理详细分析
了解索引的详细原则,不仅有助于优化,能把索引搞清楚的,面试中优势也会很突显。 关于数据库优化的话题,V哥觉得还有很多地方可以聊,如果你有兴趣,欢迎关注一起讨论。
MySQL 8 索引原理详细分析
|
6天前
|
弹性计算 关系型数据库 MySQL
检测MySQL 服务是否存活
【4月更文挑战第29天】
9 0