MyISAM重启之后的一次血泪教训
最近经历了一次MyISAM重启的血泪教训,小小的故障历经3个小时才全部解决完毕,特此铭记一下,以后坚决防止在同一个地方跌倒两次。
事情的过程:
某日早7点接到几条主库报警,给值班组打电话后得到的消息是有一台交换机重启了。so,第一反应,这种情况不用处理过会就好了。(后来才知道,这是条虚假消息,没有上去验证是一个巨大的错误,代价惨重。)
等到了8点,依然收到报警,并且有越来越多的趋势。赶紧实际登陆服务器验证,发现服务器被重启了,上面的MySQL实例被意外shutdown。这时候从工作群中知道好几台同机房的服务器都出现相同情况,第一反应,一个机架掉电了。于是就赶紧重启吧,重启好了就奖从库都change到最新的pos上,检查一下主库正常,从库也同步正常。
再过一会,到了9点,迎来了第一个小高峰,主库瞬间扛不住了,负载飙高到1000+。上服务器check一下服务发现满篇的show processlist都是check table和repair table。业务也开始大幅的接到投诉,没辙,赶紧切换主库吧。但是,由于已经启动主库,中间涉及较多的数据一致性问题,切换脚本用不上,只能手工操作。
最终10点才把所有收到影响的端口都change完毕,并进行了交叉检查。但是,依然有众多的从库出现数据不一致问题,需要重做,这将持续一天。
是什么导致一次小小的重启引发长达3个小时的故障呢?
经验总结:
1、经验主义要不得。第一时间应该上到服务器上确认主库情况,不能存在侥幸心理。
2、报警的监控应该分级控制,对于主库宕机,需要频繁多次的报警,杜绝感觉是误报的心理作用。
3、对于MyISAM表,意外关机重启之后,一般都会面临check table的操作,如果表大,那么check一个小时以上是家常便饭。
所以,对于MyISAM表,如果意外重启,千万不要重启主库,直接进行主库切换操作。这是恢复故障最快的方法,没有之一。
这里多说一下,为什么重启主库之后一切正常,主要原因为没有用到crash的表,而早高峰到来的时候,所有crash的表被用户,触发了check table操作,导致同时repair表,最终引发了雪崩。
4、沟通,工程师最爱干的事情就是钻到问题中去解决问题。缺乏一个统一的指挥体系,导致故障处理时间拖长,如果第一时间进行主库切换而不进行其他尝试,故障时间可以大大节省。
ps:由于一般都是innodb引擎的,对于myisam表的谨慎度不够,由此引发两个问题,其一就是尽快完成引擎升级,都替换成innodb,其二就是在实际操作之前需要确认一下使用的引擎情况。
MyISAM重启之后的一次血泪教训的更多相关文章
- 大于16MB的QSPI存放程序引起的ZYNQ重启风险
ZYNQ芯片是近两年比较流行的片子,双ARM+FPGA,在使用分立FPGA和CPU的场合很容易替代原来的分立器件. ZYNQ可以外接QSPI FLASH作为程序的存储介质. QSPI和SPI flas ...
- MySQL1-基础知识点
目录 零.MySQL安装与配置 一.基本概念 二.基本语法 三.常用指令 四.四种SQL语句 零.MySQL安装与配置 http://www.cnblogs.com/hikarusun/a ...
- Raspberry Pi开发之旅-实现云平台监控
一.基本设置 1 sudo raspi-config 移动到第五项“Enable Camera”,回车进入,按tab键切换到“Enable”回车确认.回到主菜单,tab键切换到“Finish”回车确认 ...
- Windows 环境下 Docker 使用及配置
原文引用: https://www.cnblogs.com/moashen/p/8067612.html 我们可以使用以下两种方式在Windows环境下使用docker: 1. 直接安装: Docke ...
- answer
https://www.cnblogs.com/549294286/p/10451394.html 基于BIO实现的Server端,当建立了100个连接时,会有多少个线程?如果基于NIO,又会是多少个 ...
- 关于Win Re的故事
闲来无事,拿出来自己的小破笔记本瞎折腾,突然发现桌面上竟然还残留着上一个公司的内部vpn, 我是一个有着轻微洁癖强迫症的人,留着这么一个东西占据我本来就不是很大的固态硬盘,简直是罪过.于是我头脑一热, ...
- ubuntu安装discourse论坛----结合在apache服务上建立虚拟主机
指导操作:https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md 一.先安装 Docker / Git: wg ...
- 手把手0基础Centos下安装与部署paddleOcr 教程
!!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...
- FFmpeg学习5:多线程播放视音频
在前面的学习中,视频和音频的播放是分开进行的.这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习 ...
随机推荐
- 工作当中遇到的ssh错误
[root@1bcc1d3f9666 externalscripts]# /usr/sbin/sshd Could not load host key: /etc/ssh/ssh_host_rsa_k ...
- centos7-sar工具的安装过程及其简单应用
一.sar工具安装 1.进入yum配置文件目录: cd /etc/yum.repos.d/ 2.vi CentOS-Base.repo命令创建文件CentOS-Base.repo 文件内容见网页:ht ...
- 6.Python3标准库--数学运算
''' 作为一种通用的变成语言,Python经常用来解决数学问题.它包含一些用于管理整数和浮点数的内置类型,这很适合完成一般应用中可能出现的基本数学运算. 而标准库中包含一些用于满足更高级需求的模块. ...
- 使用ExtJS做一个用户的增删改查
extjs版本为4.2,用户数据放在静态list中存储 User.java package com.ext.demo.dao; public class User { private int id; ...
- C# 获取计算机cpu,硬盘,内存相关的信息
using System;using System.Management; namespace MmPS.Common.Helper{ /// <summary> /// 获取计算机相关的 ...
- python 爬图
利用bs库进行爬取,在下载html时,使用代理user_agent来下载,并且下载次数是2次,当第一次下载失败后,并且http状态码是500-600之间,然后会重新下载一次 soup = Beauti ...
- plsPlugin
init: 监控目录变化(增删) 监控jar变化,load
- int类中的方法(二)
25.__pos__(self,*args,**kwargs) def __pos__(self, *args, **kwargs): # real signature unknown &qu ...
- Js~对数组的操作
在工作中可能用的不多,但一些特殊的场合还是会用到,所以在这里,把JS的数组操作总结一下,分享给大家! Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: ...
- 【LOJ】 #2132. 「NOI2015」荷马史诗
题解 k叉哈夫曼树,但是没有了二叉那样的最后一定能合并成一个树根的优秀性质,我们就不断模拟操作看看到了哪一步能用的节点数< k,然后先拿这些节点数合并起来 然后就可以k个k个合并了,大小一样先拿 ...