Rumah php教程 php手册 MySQL生产环境突发故障处理手册

MySQL生产环境突发故障处理手册

Jun 07, 2016 am 11:43 AM

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元

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Jan 04, 2024 am 10:50 AM

Ketahui tentang pengaturcaraan Python dengan contoh kod pengenalan Python ialah bahasa pengaturcaraan yang mudah dipelajari tetapi berkuasa. Bagi pemula, adalah sangat penting untuk memahami contoh kod pengenalan pengaturcaraan Python. Artikel ini akan memberikan anda beberapa contoh kod konkrit untuk membantu anda bermula dengan cepat. Cetak HelloWorldprint("HelloWorld") Ini ialah contoh kod paling mudah dalam Python. Fungsi print() digunakan untuk mengeluarkan kandungan yang ditentukan

Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Feb 19, 2024 pm 03:00 PM

Pembolehubah PHP menyimpan nilai semasa runtime program dan sangat penting untuk membina aplikasi WEB yang dinamik dan interaktif. Artikel ini melihat secara mendalam pembolehubah PHP dan menunjukkannya dalam tindakan dengan 10 contoh kehidupan sebenar. 1. Simpan input pengguna $nama pengguna=$_POST["nama pengguna"];$passWord=$_POST["kata laluan"] Contoh ini mengekstrak nama pengguna dan kata laluan daripada penyerahan borang dan menyimpannya dalam pembolehubah untuk pemprosesan selanjutnya. 2. Tetapkan nilai konfigurasi $database_host="localhost";$database_username="username";$database_pa

Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Mar 04, 2024 pm 03:09 PM

Tajuk: Dari Permulaan hingga Penguasaan: Pelaksanaan Kod Struktur Data Yang Biasa Digunakan dalam Bahasa Go Struktur data memainkan peranan penting dalam pengaturcaraan dan merupakan asas pengaturcaraan. Dalam bahasa Go, terdapat banyak struktur data yang biasa digunakan, dan menguasai pelaksanaan struktur data ini adalah penting untuk menjadi seorang pengaturcara yang baik. Artikel ini akan memperkenalkan struktur data yang biasa digunakan dalam bahasa Go dan memberikan contoh kod yang sepadan untuk membantu pembaca daripada mula menjadi mahir dalam struktur data ini. 1. Array Array ialah struktur data asas, kumpulan daripada jenis yang sama

Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Mar 04, 2024 pm 04:54 PM

"Contoh Pengaturcaraan Bahasa Pergi: Contoh Kod dalam Pembangunan Web" Dengan perkembangan pesat Internet, pembangunan Web telah menjadi bahagian yang amat diperlukan dalam pelbagai industri. Sebagai bahasa pengaturcaraan dengan fungsi berkuasa dan prestasi unggul, bahasa Go semakin digemari oleh pembangun dalam pembangunan web. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk pembangunan Web melalui contoh kod tertentu, supaya pembaca boleh memahami dengan lebih baik dan menggunakan bahasa Go untuk membina aplikasi Web mereka sendiri. 1. Pelayan HTTP Mudah Mula-mula, mari kita mulakan dengan a

Java melaksanakan kod isihan gelembung mudah Java melaksanakan kod isihan gelembung mudah Jan 30, 2024 am 09:34 AM

Contoh kod paling ringkas bagi jenis gelembung Java ialah algoritma pengisihan biasa. Idea asasnya ialah melaraskan urutan secara beransur-ansur ke dalam urutan tersusun melalui perbandingan dan pertukaran elemen bersebelahan. Berikut ialah contoh kod Java ringkas yang menunjukkan cara melaksanakan isihan gelembung: publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Aug 06, 2023 pm 04:49 PM

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori adalah bahagian yang amat diperlukan dalam banyak perusahaan. Bagi syarikat yang mempunyai berbilang gudang, fungsi pengurusan inventori amat penting. Dengan mengurus dan menjejak inventori dengan betul, syarikat boleh memperuntukkan inventori antara gudang yang berbeza, mengoptimumkan kos operasi dan meningkatkan kecekapan kerjasama. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis kod bagi fungsi pengurusan gudang inventori dan memberikan anda contoh kod yang berkaitan. 1. Wujudkan pangkalan data sebelum mula menulis kod untuk fungsi pengurusan gudang inventori.

Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Feb 18, 2024 am 10:52 AM

Panduan Menulis Kod Kaedah Isih Pemilihan Java dan Contoh Isihan pemilihan ialah algoritma pengisihan yang mudah dan intuitif Ideanya adalah untuk memilih elemen terkecil (atau terbesar) daripada elemen yang tidak diisih setiap kali dan menukarnya sehingga semua elemen diisih. Artikel ini akan menyediakan panduan menulis kod untuk pengisihan pemilihan dan melampirkan kod sampel Java tertentu. Prinsip Algoritma Prinsip asas isihan pemilihan ialah membahagikan tatasusunan yang hendak diisih kepada dua bahagian, diisih dan tidak diisih Setiap kali, elemen terkecil (atau terbesar) dipilih daripada bahagian yang tidak diisih dan diletakkan di hujung bahagian yang diisih. Ulang perkara di atas

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Jul 05, 2023 pm 09:57 PM

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh Kod Java untuk Melaksanakan Antara Muka Dengan Pantas Dengan perkembangan pesat teknologi IoT dan peningkatan pengkomputeran tepi, semakin banyak perusahaan mula memberi perhatian kepada aplikasi pengkomputeran tepi. Huawei Cloud menyediakan perkhidmatan pengkomputeran edge, menyediakan perusahaan dengan sumber pengkomputeran yang sangat boleh dipercayai dan persekitaran pembangunan yang mudah, menjadikan aplikasi pengkomputeran tepi lebih mudah untuk dilaksanakan. Artikel ini akan memperkenalkan cara untuk melaksanakan antara muka pengkomputeran tepi Awan Huawei dengan cepat melalui kod Java. Pertama, kita perlu menyediakan persekitaran pembangunan. Pastikan anda memasang Java Development Kit (

See all articles