MySQL故障诊断常用方法手册(含脚本、案例)
当你在使用MySQL数据库时,突然遇到故障,你是否会感到迷茫?
● 数据库响应变慢、SQL慢、数据库插入出现延时……
● 表不见了、日志出现多个断连记录……
● 非法断电造成MySQL启动报错、同步复制无法启动……
看到这些语句,你是否感同身受?又或者这些也曾是你踩过的坑?
很多DBA们曾经都被故障分析诊断弄得焦头烂额,也曾因问题无法处理而愁眉苦脸,每到这种时候就希望天神能够帮助我们打通任督二脉、或者直接赐予我们一个解决办法,然而一般却没有这么容易。
不过,好在在我们前行的道路上,有无数乐于分享的大佬,记录了他们曾遇到过的故障诊断问题以及解决办法,并且愿意将之分享出来。如此,便为之后可能会遇到相似问题的人们提供一种思考方式,而这很可能就是你解决问题的一把钥匙。
前人栽树,后人乘凉。从事MySQL数据库技术服务10余年、云和恩墨MySQL技术顾问——黄超老师,曾在墨天轮社区分享过一篇文章,主题是“MySQL运维案例分享”,他在文中记录分享了自己曾遇到过的20个故障以及详细的解决办法(附带详细步骤、脚本),感兴趣的朋友可以点开《分享20个MySQL运维案例》 看看。
除此之外,黄超老师还结合多年踩坑、排雷的经验,通过真实案例、场景进行了一场直播,分享了MySQL数据库的故障诊断的常用方法,主要包括以下4个板块:
一、网络故障诊断
1、 网络连接
当应用无法连接MySQL、主从复制时报错,可以确认网络是否连通
检查:Ping ip
2、 端口连接
以防出现屏蔽服务器、默认端口设置不准确
检查:talnet ip端口
3、 数据库连接
需考虑账号密码是否正确、驱动是否正常
检查:mysql -hip -uroot -p
二、操作系统故障诊断
1、 查看日志
Messages 日志
Atop 日志
此处有案例分享,可以点击直播查看(可直接空降至04:48)
2、 查看资源占用
cpu:top
内存:free
硬盘:df,du
IO:iostat
三、MySQL故障诊断
(接下来是黄超老师本此直播分享的重点内容,大家可从直播的14:30空降查看)
1、 查看日志
2、 查看进程和端口
3、 查看错误号
4、 查看权限
5、 查看参数和状态
6、 查看会话
7、 查看系统表和视图
具体的检查方法和代码内容、图片较多,大家可以直接点击查看PPT全文-经典知识库:MySQL故障诊断常用方法手册 - 黄超
或跟随老师的直播查看,过程中老师也结合自己的经历进行了详细的讲解,通俗易懂。
四、案例分享
在第四部分案例分享板块中,老师一共分享了4个解决案例,从问题描述到诊断、解决,十分详细地还原、回顾了故障处理方式,包含清晰的代码和过程,4个案例分别是:
由于内容较多,本文无法一一尽述,大家可以查看直播或PPT了解具体内容。
熟练掌握这些方法,会让您在遇到各种各样的MySQL故障的时候,得心应手、游刃有余。希望大家能够有所收获。
相关阅读
墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号:
墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
MySQL故障诊断常用方法手册(含脚本、案例)的更多相关文章
- MySQL通用优化手册
转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...
- 常用脚本学习手册——Bat脚本
常用脚本学习手册--Bat脚本 我们在日常工作中常常会遇到一些需要重复进行的工作,又或者我们的项目在转交客户时需要去简化配置过程 这时我们就需要使用到一些自动化部署操作,我们常常会采用脚本来完成这部分 ...
- MySQL/MariaDB/Percona数据库升级脚本
MySQL/MariaDB/Percona数据库升级脚本截取<OneinStack>中upgrade_db.sh, 一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们.为防止大版本 ...
- MySQL分库分表备份脚本
MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动
CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...
- 第九章 MySQL中LIMIT和NOT IN案例
第九章 MySQL中LIMIT和NOT IN案例 一.案例的项目 1.创建数据库语句: #创建数据库 CREATE DATABASE `schoolDB`; USE `schoolDB`; #创建学生 ...
- MYSQL HA 部署手册
1 MySQL启用主主双写复制 1.1 卸载系统默认的数据库mariadb 安装mysql出现安装包不兼容问题,首先卸载掉系统自带mariadb 查看已经安装的mariadb rpm -qa|grep ...
- 使用mysql存放Ambari元数据的配置案例
使用mysql存放Ambari元数据的配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 详情请参考我之前的笔记:离线方式部署Ambari2.6.0.0 中关 ...
- MySQL源码安装一键脚本
#红色部分根据自己的需求来定义#!/bin/bash #卸载系统自带的Mysql /bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps /bi ...
- mysql 5.7 编译安装脚本。
此脚本尽量运行在centos 服务器上面,用于编译安装mysql 5.7 将此脚本和相应的软件 都放到/usr/local/src 目录下面 由于不能上传附件 所以需要把cmake-3.9.6.ta ...
随机推荐
- 【Big Data】 DBeaver连接Phoenix
前言 Phoenix是Hbase数据库的一个SQL化中间件 Hbase本身是一个NoSQL类型的列族库,Phoenix可以将其转换成SQL操作 Phoenix提供的客户端Jar包,可以让DBeaver ...
- 【Mybatis】05 官方文档指北阅读 vol3 配置 其二
对象工厂(objectFactory)[省略,入门阶段实在不懂] 插件(plugins)[省略,入门阶段实在不懂] 环境配置(environments) MyBatis 可以配置成适应多种环境,这种机 ...
- Google的Jax框架的JAX-Triton目前只能成功运行在TPU设备上(使用Pallas为jax编写kernel扩展)—— GPU上目前无法正常运行,目前正处于 experimental 阶段
使用Pallas为jax编写kernel扩展,需要使用JAX-Triton扩展包.由于Google的深度学习框架Jax主要是面向自己的TPU进行开发的,虽然也同时支持NVIDIA的GPU,但是支持力度 ...
- 国产操作系统 “银河麒麟操作系统V10” 试用失败历程
面对外国的科技封锁,具有自主产权的国产软件已经变得迫在眉睫了,几天前在新闻上看到国产的操作"银河麒麟操作系统V10"已经发布,于是抱着尝鲜的心态想着去试着用用.虽然都是基于linu ...
- 如何在无窗口模式下为git的tag和commit操作加GPG私钥——如何在命令行模式下使用gpg秘钥为git操作签名
相关: 如何在无窗口模式下运行GPG--如何在命令行模式下使用gpg生成秘钥:How to make gpg prompt for passphrase on CLI--GPG prompt for ...
- 使用pycharm专业版(支持远程调试及运行)如何运行mpi的代码呢???(mpi4py的代码)
问题如题: 请注意:这里pycharm专业版的远程调试及运行该如何设置不进行介绍. 由于mpi进程启动是需要执行mpiexec或mpirun命令的,然而在pycharm中我们只能远程调用Python命 ...
- 国产CPU——兆芯(先开)KX-6640MA 使用感受
上半年买了个兆芯CPU的小mini电脑,一直没有换Windows系统,这两天想着就换了过来,具体配置如下: 1. 使用Python死循环代码烧机,性能和我14年买的i5-4200M的Intel CP ...
- NVIDIA显卡的利用率“Volatile GPU Util"是什么???
相关: CPU端多进程/多线程调用CUDA是否可以加速??? 如何实现nvidia显卡的cuda的多kernel并发执行??? ==================================== ...
- 键盘中上、下、左、右四个光标键所对应的ASCII码值为多少
首先给出ASCII码值表: 上.下.左.右这四个光标键对应的ASCII码值不是一个值而是三个,准确的说光标键的ASCII码值是一个组合. 每个方向键所对应的三个键值为:0x1b + 0x5b + n ...
- 常用的php方法
/* * http 封装网络请求方法 */ /* * get method */ function get($url, $param=array()){ if(!is_array($param)){ ...