成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

mysqld實(shí)例服務(wù)hang住的檢測思路及方案

數(shù)據(jù)庫 MySQL 數(shù)據(jù)庫運(yùn)維
對(duì)于mysql數(shù)據(jù)庫架構(gòu)為雙主復(fù)制模式的不少技術(shù)朋友都非常困惑,如何準(zhǔn)確判斷mysqld服務(wù)是否能正常提供服務(wù),以及能否自動(dòng)判斷并且進(jìn)行主機(jī)的切換?同時(shí),對(duì)mysqld服務(wù)的檢測機(jī)制要求消耗資源少、判斷簡單且準(zhǔn)確、開發(fā)和維護(hù)成本低等。我們?cè)趯?shí)際的生產(chǎn)環(huán)境檢測過程中,也曾經(jīng)犯過錯(cuò)誤,為此寫一篇短小的文章,把相關(guān)經(jīng)驗(yàn)、思路、做法分享給大家,為更多的技術(shù)朋友起到答疑解惑。

對(duì)于mysql數(shù)據(jù)庫架構(gòu)為雙主復(fù)制模式的不少技術(shù)朋友都非常困惑,如何準(zhǔn)確判斷mysqld服務(wù)是否能正常提供服務(wù),以及能否自動(dòng)判斷并且進(jìn)行主機(jī)的切換?同時(shí),對(duì)mysqld服務(wù)的檢測機(jī)制要求消耗資源少、判斷簡單且準(zhǔn)確、開發(fā)和維護(hù)成本低等。我們?cè)趯?shí)際的生產(chǎn)環(huán)境檢測過程中,也曾經(jīng)犯過錯(cuò)誤,為此寫一篇短小的文章,把相關(guān)經(jīng)驗(yàn)、思路、做法分享給大家,為更多的技術(shù)朋友起到答疑解惑。

要想做到自動(dòng)切換提供數(shù)據(jù)庫服務(wù)請(qǐng)求的主備服務(wù)器關(guān)鍵,就是要確定雙主復(fù)制架構(gòu)中的mysql數(shù)據(jù)庫實(shí)例是否能正常提供服務(wù)請(qǐng)求,最讓人頭疼的就是mysqld服務(wù)出現(xiàn)hang住的情況。那么mysqld服務(wù)hang住的時(shí)候,會(huì)有哪些表象呢?先列出本人及圈內(nèi)朋友們出現(xiàn)過的情況:

● 不能對(duì)數(shù)據(jù)庫中的對(duì)象或數(shù)據(jù)執(zhí)行修改性操作,但能正常執(zhí)行查詢操作;

● 能對(duì)系統(tǒng)數(shù)據(jù)庫(備注:mysql、information_schema)的對(duì)象或數(shù)據(jù)進(jìn)行查詢操作,不能對(duì)非系統(tǒng)數(shù)據(jù)庫的對(duì)象和數(shù)據(jù);

● 只能對(duì)虛擬數(shù)據(jù)庫(備注: information_schema)的對(duì)象及數(shù)據(jù)進(jìn)行查詢操作,不能對(duì)其他數(shù)據(jù)庫的對(duì)象和數(shù)據(jù);

● 不能對(duì)對(duì)任何數(shù)據(jù)庫的對(duì)象或數(shù)據(jù)進(jìn)行查詢操作,但是能執(zhí)行SHOW PROCESSLIST;

● 不能對(duì)對(duì)任何數(shù)據(jù)庫的對(duì)象或數(shù)據(jù)進(jìn)行查詢操作,也不能執(zhí)行SHOW PROCESSLIST,但是可以執(zhí)行部分SHOW操作,例如:SHOW STATUS;

● 其他,還未發(fā)現(xiàn)的狀態(tài)信息;

針對(duì)上述mysqld服務(wù)hang住的情況做一個(gè)分析及匯總,可以發(fā)現(xiàn)其有一些共同特征,總結(jié)如下:

● mysqld服務(wù)存在,且能ping或telnet;

● 能接受客戶端發(fā)送過來的請(qǐng)求,但是不繼續(xù)處理,而是停留在其發(fā)生hang住的當(dāng)下SQL執(zhí)行的狀態(tài);

● 若能執(zhí)行SHOW PROCESSLIST的話,能看到所有的SQL執(zhí)行狀態(tài)停留不變;

● 數(shù)據(jù)庫服務(wù)器的LOAD會(huì)突然下降,甚至LOAD下降為0,CPU、IO等都會(huì)接近沒負(fù)荷狀態(tài);

● 若mysqld服務(wù)發(fā)生hang住的時(shí)候,一般都無法對(duì)數(shù)據(jù)庫的對(duì)象或數(shù)據(jù)執(zhí)行修改性質(zhì)的操作;

文章開篇描述了mysqld服務(wù)hang住的時(shí)候,mysqld接受、處理服務(wù)請(qǐng)求的情況,以及數(shù)據(jù)庫服務(wù)器的狀態(tài)信息,既然可以發(fā)現(xiàn)這些特征,那么對(duì)于常用檢測mysqld服務(wù)是否還活著或者網(wǎng)絡(luò)是否通的辦法:

● ping或telnet mysqld服務(wù)的端口;

● 通過執(zhí)行SHOW 命令;

● 通過執(zhí)行SELECT查詢操作;

上述三類檢測辦法是否能真正做到準(zhǔn)確檢測呢?答案是:NO,只能準(zhǔn)確監(jiān)測到mysqld進(jìn)程是否活著、程序與數(shù)據(jù)庫服務(wù)器之間的網(wǎng)絡(luò)是否暢通,對(duì)于mysqld服務(wù)能否正常接收和完成處理請(qǐng)求,就無法做到或者部分做到,綜合上述分析信息,以及從目前我們將近三年實(shí)施效果看,對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行修改操作,再配合程序?qū)?shù)據(jù)修改操作的判斷邏輯是最穩(wěn)妥的方法,詳細(xì)步驟:

● 檢測頻率為:每隔10S,對(duì)當(dāng)前提供服務(wù)的mysqld數(shù)據(jù)庫實(shí)例上的檢測表,做一次UPDATE操作,探測數(shù)據(jù)庫實(shí)例是否正常提供服務(wù);

● 若上一次數(shù)據(jù)庫實(shí)例服務(wù)檢測操作,沒有正常返回更新信息,則每隔1S做一次數(shù)據(jù)庫檢測表的UPDATE操作,總共做2次探測;

● 若前兩個(gè)步驟的數(shù)據(jù)庫實(shí)例服務(wù)探測結(jié)束,當(dāng)前提供服務(wù)的數(shù)據(jù)庫實(shí)例服務(wù)都沒恢復(fù)正常,則每隔5MS對(duì)數(shù)據(jù)庫檢測表再做一次UPDATE操作,總共檢測三次,若還是沒有正常返回信息,則認(rèn)定此數(shù)據(jù)庫實(shí)例服務(wù)不能正常接收服務(wù)請(qǐng)求;

用于執(zhí)行數(shù)據(jù)庫實(shí)例服務(wù)檢測的表結(jié)構(gòu)和UPDATE操作SQL為:

  1. CREATE TABLE monitor_db(  
  2.       ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMNET,  
  3.       CreateDate TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',  
  4.       PRIMARY KEY(ID)  
  5.       )ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';  
  6. INSERT INTO monitor_db VALUES(1,NOW()),(2,DATE_ADD(NOW(),INTERVAL -1 DAY)) 

 

 

● MySQL5.0及以下版本的UPDATE操作SQL

  1. UPDATE monitor_db SET CreateDate =NOW() WHERE ID=1; 

● MySQL5.1及以上版本的UPDATE操作SQL

  1. SET SESSION sql_log_bin=0;  
  2. UPDATE monitor_db SET CreateDate=NOW() WHERE ID=1; 

備注:

對(duì)于支持MIXED、ROW復(fù)制模式的版本,必須規(guī)避MySQL雙主復(fù)制過程中,可能出現(xiàn)主從執(zhí)行更新操作SQL語句的被修改數(shù)據(jù)不一致的問題,從而導(dǎo)致復(fù)制中斷,為此我們對(duì)數(shù)據(jù)庫實(shí)例服務(wù)檢測的更新操作不記錄到二進(jìn)制日志文件中,也即不會(huì)復(fù)制到其各自的從服務(wù)器。

另外,建議大家把monitor_db表創(chuàng)建到test數(shù)據(jù)庫,或者類似test功能的數(shù)據(jù)庫中,存儲(chǔ)引擎建議一定要是:InnoDB,對(duì)于檢測頻率可以根據(jù)自己對(duì)數(shù)據(jù)安全性要求,而調(diào)整為自己能接受的。

若mysqld服務(wù)出現(xiàn)hang住的時(shí)候,正常關(guān)閉mysqld服務(wù)的辦法都無效,只有對(duì)mysqld服務(wù)進(jìn)程進(jìn)行操作系統(tǒng)級(jí)別的kill -9 操作,然后再啟動(dòng)mysqld服務(wù)實(shí)例,等待其自動(dòng)進(jìn)行回滾操作結(jié)束,才算啟動(dòng)成功,建議大家別用mysql5.0.82及前后版本,存在一些BUG,很容易導(dǎo)致出現(xiàn)hang的情況。

 

【編輯推薦】

  1. SQL與NoSQL——MySQL與NoSQL的融合
  2. MySQL中的NoSQL插件
  3. HandlerSocket是神馬
  4. 主流NoSQL數(shù)據(jù)庫評(píng)測之HandlerSocket
  5. 如何抓住蝴蝶效應(yīng)中的那只蝴蝶

 

責(zé)任編輯:艾婧 來源: it168
相關(guān)推薦

2009-05-18 10:23:43

文件上傳PHPFILE函數(shù)

2010-09-26 15:38:33

JVM內(nèi)存泄漏

2011-03-16 08:59:29

.NET強(qiáng)名稱

2009-09-02 18:44:19

C#遞歸

2014-09-25 13:14:53

2009-12-29 16:25:51

VPN服務(wù)器配置

2011-07-14 15:28:11

服務(wù)器

2013-08-20 16:16:19

2014-03-28 09:35:11

MongoDBSharding

2020-04-09 10:43:12

長事務(wù)P0故障

2009-08-14 16:32:50

C#啟動(dòng)Windows

2010-01-07 11:12:50

華為交換機(jī)vlan

2020-04-08 11:12:37

Linux開發(fā)工具

2021-07-14 23:38:02

PostgreSQLOracle模式

2018-12-18 08:53:47

2018-02-05 09:30:23

高性能高并發(fā)服務(wù)

2012-08-16 10:43:10

GC

2021-12-15 09:32:41

Linux系統(tǒng)負(fù)載

2022-04-03 19:51:38

linux服務(wù)性能

2010-04-20 16:34:31

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久妇女国产精品影视 | 久久伊人一区 | 久久久蜜桃 | 91精品国产综合久久久久 | 国产高清在线精品 | 国产一区二区不卡 | 日本一区二区三区精品视频 | 久久成人高清视频 | 国产一区二区 | 国产精品中文字幕在线 | 波多野结衣中文视频 | 一区二区手机在线 | 高清视频一区二区三区 | 久久大陆 | 亚洲精品久久久 | 国产欧美日韩一区二区三区在线观看 | 成人福利网站 | 日中文字幕在线 | 久久免费精品视频 | 欧美vide| 手机看黄av免费网址 | 男女国产网站 | 中文字幕日韩一区 | 日日干日日射 | 免费一级黄色 | 欧美视频免费在线观看 | 国产午夜三级一区二区三 | 亚洲欧美中文日韩在线v日本 | 中文字幕在线播放第一页 | 亚洲区在线 | 精品视频久久久久久 | 亚洲视频免费 | 国产精品久久久久影院色老大 | 日韩成人 | 亚洲情综合五月天 | 天天操夜夜艹 | 精精精精xxxx免费视频 | 国产日韩一区二区三区 | 天天爱爱网 | 黄色片av | 成人免费一区二区 |