MySQL生产环境突发故障处理手册
MySQL生产环境突发故障处理,自己博客里的机票文章,具体作者不记得了(感谢原作者),好东西和大家分享,1. LOAD飙高<br>
一般导致MySQL服务器LOAD突然飙高,可能的五种情况:<br>
1>.全表扫描的SQL语句;<br>
2>.SELECT操作语句的执行计划走错;<br>
3>.存在UPDATE/DELETE 语句没有索引可选择,而导致堵塞其他SQL语句的执行;<br>
4>.存在修改表结构或OPTIMIZE 语句执行;<br>
5>.大数据量的导入 或 导出,尤其数据库的逻辑备份操作;<br>
6>.业务量大到超过服务器处理能力(我们大家都高度关注业务发展,以及公司业务特点,<br>
还有与开发和运营保持良好联系,很难出现未知的业务突然爆发性增长);<br>
要解决LOAD飙高,必须先找到造成飙高的真实原因,请登陆数据库服务器后,执行命令:<br>
SHOW PROCESSLIST;(适合MySQL各种版本)<br>
或<br>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND ‘sleep’ AND TIME>100;(5.1.x系列及以上版本)<br>
若一直处在执行状态,且执行时间比较久,可以分析下SQL语句执行计划:<br>
EXPLAIN SQL-statement;<br>
若执行计划不合理,则可以根据SQL类型选择是否与应用负责人联系。首先,查找造成服务器LOAD飙高的PID,特别是DELETE 或UPDATE等会堵住其他SQL语句的PID,然后进入MySQL命令行工具中,对一些SQL先记录下来,再适情考虑执行:kill sql_pid;<br>
1.1 统计信息更新<br>
单表索引统计信息查看命令:SHOW INDEXES FROM tablename;<br>
若发现其统计信息存在偏差,则可以执行:ANALYZE LOCAL TABLE tablename;<br>
备注:请加上LOCAL 参数,从而使此语句执行时不需要登记到二进制文件中。<br>
1.2 碎片整理和统计信息更新<br>
OPTIMIZE 操作等于recreate + analyze 的组合操作,所以会堵塞更新类型SQL语句。对于备机上跑只读类型操作的业务,可以考虑使用此操作命令,对于主服务器不建议使用此命令,为此备机上执行OPTIMIZE 语句,必须这样写:<br>
OPTIMIZE LOCAL TABLE tablename;<br>
备注:这样执行将不会记录到二进制日志文件中,从而不会复制到对其有复制关系的主机上。<br>
2. HA切换<br>
2.1 启动备机Heartbeat<br>
若要启动备机上的Heartbeat进程,则必须先保证备机上的mysqld服务已经停止掉,然后再启动备机上的Heartbeat服务,最后再启动mysqld服务。<br>
2.2 VIP服务快速漂移<br>
直接关闭掉VIP所挂载的主服务器上的Heartbeat服务:service heartbeat stop,待切换之前的备机VIP服务挂载成功,再启动被关掉机器的Heartbeat服务,且确保mysqld服务已经处于停止状态,最后再启动mysqld服务。<br>
另外一种强制VIP飘移办法:<br>
crm_resource -M -r resource_name -H nodename<br>
其中: resource_name 可以通过命令crm_resource –L<br>
进行强制VIP漂移后,还需要检查 failcount值,命令与设置值,如下:<br>
crm_failcount –U nodename -r resource_name –G<br>
如果failcount大于0,则进行下面的操作:crm_resource -r resource_name -p is_managed -v false (设置资源为非受控)crm_failcount -U nodename -r resource_name -G –D (重新设置 failcount值)<br>
crm_resource -H nodename -r resource_name –C<br>
crm_resource -r resource_name -d is_managed (设置为受控)<br>
3.复制中断<br>
复制突然中断的可能原因:<br>
1>. 备机无法连接到主服务器,可能是网络问题,也可能是主服务器的mysqld已停止;<br>
2>. 主键冲突;<br>
3>. 主从服务器数据不一致;<br>
4>. 其他原因;<br>
为使复制继续,我们可以进行如下处理:<br>
1>. Stop slave ;<br>
2> start slave;<br>
3> 检查服务是否正常:show slave status\G<br>
若是主健冲突或数据不一致的情况,则需要额外处理:<br>
1>.stop slave;<br>
2> start slave;<br>
3> show slave status\G记录错误的信息,一般会有详细的SQL保存起来<br>
4> stop slave;<br>
5> SET GLOBAL sql_slave_skip_counter=1;<br>
6> start slave ;<br>
7> show slave status\G<br>
8> 检查复制是否恢复正常,若没有循环1>…7>步骤(备注:有些场景,也可以考虑借助脚<br>
本循环的方式解决)<br>
<br>
4.MySQL假死<br>
4.1 假死状态判断<br>
MySQL假死状态一般只会响应对内存表、服务器状态和变量的操作,而且SHOW PROCESSLIST;可以看到很多连接线程处于命令解析或处理的各种状态,且SQL语句执行时间较长。此时,为校验是否真处于MysQL假死状态,那么可以到库test中任意执行创建表或更新数据的语句,若回车键后没有响应,则一般可以断定MySQL 是否已经处于假死状态。<br>
4.2 假死状态处理<br>
若使用Heartbeat + Dual Master的数据库架构,VIP所在的数据库服务器出现假死状态,则应该直接关闭service heartbeat stop,从而迫使VIP服务转移到另外一台数据库服务器上。<br>
其次,根据处理MySQL 假死状态的经验,使用mysqladmin –uroot –p shutdown命令关闭mysqld服务也是无法处理的,最快的办法是直接Kill进程:<br>
ps -ef | grep mysql | grep -v grep | awk ‘{ print $2 }’| xargs kill -9<br>
然后,把Heartbeat启动成功之后,再启动mysqld服务;对于没有Heartbeat服务的数据库服务器,则直接启动mysqld 服务即可。<br>
5.紧急事件处理的流程<br>
1>.突发紧急事情:<br>
首先,要保持头脑清醒,心态要放平,建议先深呼吸;<br>
其次,仔细检查相关状态、日志等信息,并且保存现场的状态信息,以便后续分析;<br>
最后,确认解决此问题的可行方案,以及判断此方案是否会引入新风险,是否需要其他同事协助;<br>
2>.处理步骤复杂或命令语句多的情况,必须先把相关命令,分步骤在文档中写好;<br>
3>.突发紧急事情的处理,会影响到前端应用服务的事情,应先跟团队领导沟通和确认处理方法,以及影响范围有多大,<br>
影响程度有多严重;<br>
4>.确定紧急处理过程或完毕后,需要那些应用方负责人检查应用是否正常,则应该先联系相关同事;<br>
5>.处理完毕且业务正常之后,优先分析问题和查找是否还有隐患;<br>
6>.发邮件描述整个故障发生、影响范围和程度 、处理过程,以及补填写紧急处理的 ITIL流程单;<br>
7>.回复报警邮件;<br>
备注:<br>
突发事情的解决过程中,无关同事不得围观,需要配合的同事要迅速提供帮助和协调起来,对突发事情解决无帮助的主管及以上级别的人员,一律不得围观,否则以罚款方式处理。<br>
【编注】<br>
突然发现邮箱中竟然还有一份2年前写的东西,应该不是最新的版本,稍作整理分享出来,虽然内容不太丰富,也许对一些技术朋友有借鉴意义,大家也可以互相交换下意见和提供行业案例而逐渐把此主题相关的内容丰富起来。
AD:真正免费,域名+虚机+企业邮箱=0元

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









소개 코드 예제를 통해 Python 프로그래밍에 대해 알아보세요. Python은 배우기 쉽지만 강력한 프로그래밍 언어입니다. 초보자의 경우 Python 프로그래밍의 입문 코드 예제를 이해하는 것이 매우 중요합니다. 이 문서에서는 빠르게 시작하는 데 도움이 되는 몇 가지 구체적인 코드 예제를 제공합니다. Print HelloWorldprint("HelloWorld") 이것은 Python에서 가장 간단한 코드 예제입니다. print() 함수는 지정된 내용을 출력하는 데 사용됩니다.

PHP 변수는 프로그램 런타임 중에 값을 저장하며 동적 및 대화형 웹 애플리케이션을 구축하는 데 중요합니다. 이 기사에서는 PHP 변수를 심층적으로 살펴보고 10가지 실제 예제를 통해 실제로 작동하는 모습을 보여줍니다. 1. 사용자 입력 저장 $username=$_POST["username"];$passWord=$_POST["password"] 이 예에서는 양식 제출에서 사용자 이름과 비밀번호를 추출하여 추가 처리를 위해 변수에 저장합니다. 2. 구성 값 $database_host="localhost";$database_username="username";$database_pa를 설정합니다.

제목: 초보자에서 숙달까지: Go 언어에서 일반적으로 사용되는 데이터 구조의 코드 구현 데이터 구조는 프로그래밍에서 중요한 역할을 하며 프로그래밍의 기초입니다. Go 언어에는 일반적으로 사용되는 데이터 구조가 많이 있으며 이러한 데이터 구조의 구현을 마스터하는 것은 좋은 프로그래머가 되는 데 중요합니다. 이 기사에서는 Go 언어에서 일반적으로 사용되는 데이터 구조를 소개하고 독자가 이러한 데이터 구조에 익숙해지는 데 도움이 되는 해당 코드 예제를 제공합니다. 1. 배열(Array) 배열은 기본 자료구조로, 같은 형태의 그룹

"Go 언어 프로그래밍 예제: 웹 개발의 코드 예제" 인터넷의 급속한 발전과 함께 웹 개발은 다양한 산업에서 없어서는 안 될 부분이 되었습니다. 강력한 기능과 뛰어난 성능을 갖춘 프로그래밍 언어인 Go 언어는 웹 개발 개발자들의 선호도가 점점 높아지고 있습니다. 이 기사에서는 특정 코드 예제를 통해 웹 개발에 Go 언어를 사용하는 방법을 소개하므로 독자는 Go 언어를 더 잘 이해하고 사용하여 자신의 웹 애플리케이션을 구축할 수 있습니다. 1. 간단한 HTTP 서버 먼저 시작해 보겠습니다.

Java 버블 정렬의 가장 간단한 코드 예제 버블 정렬은 인접한 요소의 비교와 교환을 통해 순서가 지정된 순서로 정렬되는 순서를 점진적으로 조정하는 일반적인 정렬 알고리즘입니다. 다음은 버블 정렬을 구현하는 방법을 보여주는 간단한 Java 코드 예제입니다. publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

PHP를 사용하여 재고 관리 시스템에서 재고 관리 기능 코드를 작성하는 방법 재고 관리는 많은 기업에서 없어서는 안될 부분입니다. 창고가 여러 개인 회사의 경우 재고 관리 기능이 특히 중요합니다. 재고를 적절하게 관리하고 추적함으로써 회사는 서로 다른 창고 간에 재고를 할당하고, 운영 비용을 최적화하며, 협업 효율성을 향상시킬 수 있습니다. 이 기사에서는 PHP를 사용하여 재고 창고 관리 기능을 위한 코드를 작성하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. 재고 창고 관리 기능에 대한 코드 작성을 시작하기 전에 데이터베이스를 구축하십시오.

Java 선택 정렬 방법 코드 작성 가이드 및 예제 선택 정렬은 정렬되지 않은 요소 중에서 가장 작은(또는 가장 큰) 요소를 매번 선택하고 모든 요소가 정렬될 때까지 교환하는 간단하고 직관적인 정렬 알고리즘입니다. 이 기사에서는 선택 정렬을 위한 코드 작성 가이드를 제공하고 특정 Java 샘플 코드를 첨부합니다. 알고리즘 원리 선택 정렬의 기본 원리는 정렬할 배열을 정렬된 부분과 정렬되지 않은 부분의 두 부분으로 나누는 것입니다. 매번 정렬되지 않은 부분에서 가장 작은(또는 가장 큰) 요소가 선택되어 정렬된 부분의 끝에 배치됩니다. 위의 내용을 반복하세요.

Huawei 클라우드 엣지 컴퓨팅 상호 연결 가이드: 인터페이스를 신속하게 구현하기 위한 Java 코드 샘플 IoT 기술의 급속한 발전과 엣지 컴퓨팅의 부상으로 점점 더 많은 기업이 엣지 컴퓨팅 애플리케이션에 관심을 갖기 시작했습니다. Huawei Cloud는 엣지 컴퓨팅 서비스를 제공하여 기업에 매우 안정적인 컴퓨팅 리소스와 편리한 개발 환경을 제공하여 엣지 컴퓨팅 애플리케이션을 보다 쉽게 구현할 수 있도록 합니다. 이 기사에서는 Java 코드를 통해 Huawei Cloud 엣지 컴퓨팅 인터페이스를 빠르게 구현하는 방법을 소개합니다. 먼저 개발 환경을 준비해야 합니다. Java Development Kit가 설치되어 있는지 확인하십시오(
