MySQL频繁停库的问题分析(r12笔记第33天)

简介:   最近也抽空帮一些网友解决一些问题,有些是Oracle,有些是MySQL,有时候虽然忙忙乎乎,但是解决问题之后还是很有成就感的。   今天来说一个蛮有意思的问题,听起来还很诡异。

  最近也抽空帮一些网友解决一些问题,有些是Oracle,有些是MySQL,有时候虽然忙忙乎乎,但是解决问题之后还是很有成就感的。

  今天来说一个蛮有意思的问题,听起来还很诡异。是一个网友向我咨询,看看能不能给出一些建议。当我看到日志,隐隐感觉这是一个bug的感觉。

详细的日志如下:

2017-04-13 16:25:29 40180 [Note] Server socket created on IP: '::'.
2017-04-13 16:25:29 40180 [Warning] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
2017-04-13 16:25:29 40180 [Note] Slave I/O thread: connected to master 'xx@xxxx:6606',replication started in log 'mysql-bin.000105' at position 732153962
2017-04-13 16:25:29 40180 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
2017-04-13 16:25:29 40180 [Note] Event Scheduler: Loaded 0 events
2017-04-13 16:25:29 40180 [Note] /mysql_base/bin/mysqld: ready for connections.
Version: '5.6.20-log'  socket: '/tmp/mysql.sock'  port: 6607  Source distribution
2017-04-13 16:25:29 40180 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000105' at position 634901970, relay log '/mysql_log/relay-log.000339' position: 25153965
2017-04-13 16:26:01 40180 [Note] /mysql_base/bin/mysqld: Normal shutdown

2017-04-13 16:26:01 40180 [Note] Giving 2 client threads a chance to die gracefully
2017-04-13 16:26:01 40180 [Note] Event Scheduler: Purging the queue. 0 events
2017-04-13 16:26:01 40180 [Note] Shutting down slave threads
2017-04-13 16:26:01 40180 [Note] Slave SQL thread exiting, replication stopped in log 'mysql-bin.000105' at position 637977115
2017-04-13 16:26:01 40180 [Note] Slave I/O thread killed while reading event
2017-04-13 16:26:01 40180 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000105', position 732432767
2017-04-13 16:26:01 40180 [Note] Forcefully disconnecting 0 remaining clients
2017-04-13 16:26:01 40180 [Note] Binlog end
2017-04-13 16:26:01 40180 [Note] Shutting down plugin 'partition'
2017-04-13 16:26:01 40180 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2017-04-13 16:26:01 40180 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2017-04-13 16:26:01 40180 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'因为mysql服务进程启动没有一会就自动停止了。而且仔细查看这个日志,会发现里面没有任何Error的字样,有几个warning的信息,但是觉得不应该是问题的根本原因。

   通过上面的日志,我们会得到一些基本的信息:

  1. 这是一个从库,可以从relay的信息看出

  2. 停库的时候看起来是一个顺序的过程,不像是掉电宕机,异常crash的特点

  3. 标红的那句:

    Giving 2 client threads a chance to die gracefu

我觉得这句日志是这个问题查找的一个重点方向,怎么两个thread就可以优雅的die了。

   所以我准备从几个角度来查看。

  1. 是否是系统层面的异常

  2. 是否是内核参数的设置问题

  3. 是否是数据库参数的设置

  4. bug


    第一个问题,我查看了文件系统是ext4,内存是64G,剩余内存还很多,系统的配置和负载都不高。

    第二个问题,我查看了内核参数的设置,主要的shmmax这些参数设置都没有问题,我看了里面还指定了很多细节的网络设置,我们纠结了下是否是swap会有影响,尽管目前swap使用率几乎为0,还是带着试试看的心态调试了下,设置swapniess=1,结果测试问题依旧。

    第三个问题是否是数据库参数的设置,这个我看buffer_pool_size是40G,其它的参数设置也蛮合理,也没有生疏的参数设置,所以这个地方也无从下手,不过还是试了是把buffer_pool_size从40G设置为4G,结果问题依旧。

    第4个问题,查找bug,还真找到一个,https://bugs.mysql.com/bug.php?id=71104  但是这个问题很难解释的通,因为根据这位网友的反馈,这台服务器早上还好好的,下午就是这样了,所以说是bug也有些牵强。

    带着疑问,我也尝试了启动加上skip-slave-start都无济于事。

我觉得得换个思路,还有哪些盲点没有考虑到。

我突然看到日志目录下有一个文件,这个文件一看就不是MySQL系统生成的,很像是手工指定生成的文件。查看里面的信息,发现是检测MySQL运行状态的检查。由此我想是不是系统层面设置了什么任务之类的。

使用crontab -l查看,果然看到两个,第2个就是这个检查服务状态的任务脚本,而第一个是一个check_mysql.sh这样的脚本

内容如下:

#!/bin/bash
    datetime=`date +"%F %H:%M:%S"`
  /mysql_base/bin/mysql -uxx -pxx  -e "select version();" &>/dev/null
  if [ $? -eq 0 ]
         then     
        #date +"%F %H:%M:%S"
                echo "$datetime   mysql is running" >>/mysql_log/check_mysql.log
          else
                pkill mysql;
        sleep 5;
                /mysql_base/bin/mysqld_safe --user=mysql >/dev/null 2>&1 &
        echo "$datetime  ERROR:**************mysql restarted********************" >>/mysql_log/check_mysql.log
  fi大家细细看看这个脚本有没有问题,基本的思路就是连接到MySQL,查看一下版本,如果得到的结果为0,否则就会杀掉MySQL,然后等待5秒,重启服务。

  这里的关键就是第一部分的内容了,如果连接失败,后面的步骤肯定会出问题,也就是会直接杀掉MySQL.

  和这位网友确认,他上午是修改了一个数据,这个用户的密码应该修改了,导致连接异常出了这个意料之外的问题。

   最快的解决方式就是先注释掉这个cron,然后调整下密码,更关键的是这个逻辑要进行持续的改进。

  这个问题的分析也给我好好上了一课,很多复杂的问题,原因其实很简单,但是查找问题的过程不简单。

   


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
622 158
|
10月前
|
存储 消息中间件 监控
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
蒋星熠Jaxonic,数据领域技术深耕者。擅长MySQL到ClickHouse链路改造,精通实时同步、数据校验与延迟治理,致力于构建高性能、高一致性的数据架构体系。
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
|
11月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
726 156
|
11月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
780 161
|
10月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
916 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
10月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
943 6
|
10月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
2790 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
10月前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
1499 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
|
12月前
|
存储 关系型数据库 MySQL
深入理解MySQL索引类型及其应用场景分析。
通过以上介绍可以看出各类MySQL指标各自拥有明显利弊与最佳实践情墁,在实际业务处理过程中选择正确型号极其重要以确保系统运作流畅而稳健。
329 12
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
392 10

推荐镜像

更多