999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

處理MySQL 訪問異常故障

2019-12-16 02:54:30河南劉建臣
網絡安全和信息化 2019年12期
關鍵詞:引擎數據庫故障

河南 劉建臣

某單位使用Java 開發的數據分析系統,后臺使用的是MySQL 數據庫,最近出現了無法查詢和寫入數據的情況,MySQL 服務器使用的是CentOS 6.X 系統,使用了八核的CPU,內存為64GB,按照這樣的配置,運行MySQL 是沒有任何問題的。筆者進入MySQL 安裝路徑,發現似乎缺少了某些文件,果然其中的“ibdata1”“ib_logfile0”“ib_logfile1”等文件“不翼而飛”了。

故障分析

MySQL 默認采用InnoDB引擎,上述文件是MySQL 的表空間文件和日志文件,Innodb 存儲類型的表的數據都放在該共享表空間中。看來是有人誤刪除了這些文件,是不是這些文件丟失的原因呢?因為MySQL服務并沒有重啟,是可以從內存文件系統中找回這些文件的。執行“netstat-nltp|grep mysqld”命令,可以查到MySQL 的進程號,這里為“6831”。執行“ll/proc/6831/fd|grep -e ibdata -e ib_”命令,果然在內存文件系統中找到了這些文件,狀態為“deleted”,說明實際文件已被刪除。因為數據庫處于運行狀態,在InnoDB 引擎緩存池中有很多數據已發生變動,但沒有寫入到磁盤文件中,如果直接恢復肯定會造成數據丟失。

在MySQL 中執行“flush tables with read lock;”命令,禁止針對數據庫的修改操作。執行“show engine innodb statusG;”命令,在返回信息中的“Pages flushed up to”行顯示當前最舊的臟頁數據對應的位置,在“Log sequence number”行中顯示當前最新數據產生的日志序列號信息。這里兩者數據一致,說明內存中的Dirty Page 數據已寫入磁盤。在“Modified db pages”欄中顯示臟數據庫頁數,該值應為0,說明Dirty Page 已刷新到磁盤。

否則,執行“set global innodb_max_dirty_pages_pct=0;”命令,設置Dirty Page 刷新比例。當確定Dirty Page 已全部寫入磁盤后,執行:

執行文件復制操作,之后執行“chown mysql:mysql/data1/mysql/ib*”命令,為上述文件指定用戶權限,因為運行MySQL 的用戶名為“mysql”。執行“/etc/init.d/mysqld restart”命令,重啟MySQL 服務。

進入MySQL 運行路徑,發現上述文件已找回,原本以為問題解決了,但在對某個數據表進行查詢和寫入操作時,依然出現失敗。

在MySQL 中執行“show processlist;”命令,發現有線程正對“tb_anlydat”的表進行檢測操作,而其他線程在進行插入等操作時,出現“Waiting for table level lock”提示,說明MySQL 正在對該表進行檢查,因此其他的寫入操作處于阻塞狀態。

執行“show create table tb_anlydat;”命令,發現該表使用的是MyISAM引擎,因為同InnoDB 引擎相比,MyISAM 引擎具有較快的查詢速度,在實際中經常會出現混合使用上述引擎的現象,即大部分表使用InnoDB引擎,少量對查詢性能要求較高的表使用MyISAM 引擎。MyISAM 引擎只支持表級鎖,如果當數據庫出現執行時間較長的查詢或檢測時,對目標數據表進行更新操作,就很容易出現“Waiting for table level lock”之類的錯誤提示,造成無法插入數據的問題。

前端程序就會因連接失效造成訪問請求失敗,連續執 行“show processlist;”命令,可以發現相關線程正在對該表進行修復,說明MySQL 已發現該表存在問題,在進行修復操作。

根據以上分析,可以發現上述問題的原因,就在于某些數據表存儲問題。既然數據表無法插入數據,那么就需要進行修復。在修復之前需要將內容導出來。例如執行“select * into outfile '/tmp/export.txt' from tb_anlydat;”命令,將該表中數據導出,在備用MySQL服務器上執行“LOAD DATA local INFILE '/tmp/export.txt' IGNORE INTO TABLE tb_anlydat;”之類的命令,將數據導入進來,便于對該數據表進行修復。

MyISAM 引擎提供了Check Table、Repair Table和Myisanchk 等工具,可以對數據表進行檢測和修復操作。例如在MySQL 中執行“check table tb_anlydat;”和“repair table tb_anlydat;”命令,對該表進行修復操作,但很花時間卻沒有什么效果。打開MySQL 配置文件“my.cnf”,發現其中存在“myisamrecover=BACKUP,FORCE”行,這表明如果重啟MySQL,就會自動針對使用MyISAM 的表進行備份和檢測修復操作。因為該表體積達到幾百兆,讀寫比較頻繁,往往會因為各種原因(例如斷電、硬件故障等),造成使用MyISAM 引擎的數據表出現故障。

故障排查

筆者注意到該MySQL 數據庫使用了獨立的磁盤來存儲數據,執行“df -lh”命令,顯示還有約30%的可用空間,不存在磁盤空間不足問題。執行“dmesg”命令,在返回信息中發現和MySQL 對應的磁盤出現“Medium Error”、“uncovered read erroe”、“critical medium error”等錯誤信息,表明該硬盤分區出現了壞道等才引發了以上問題。

表面看來,可以在硬盤上進行讀寫操作,似乎硬盤沒有問題,其實該盤的某些扇區已經損壞,且該數據表恰恰使用了這些問題扇區。問題找到了,只能更換新的硬盤,當然,需要將所有MySQL數據導出保存到備用機。因為MyISAM 引擎容易出問題,最好還是使用InnoDB 引擎操作數據表。

猜你喜歡
引擎數據庫故障
故障一點通
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
奔馳R320車ABS、ESP故障燈異常點亮
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
故障一點通
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 国产av无码日韩av无码网站| 国产精品亚洲а∨天堂免下载| 亚洲国产看片基地久久1024| 园内精品自拍视频在线播放| 久久狠狠色噜噜狠狠狠狠97视色| 精品99在线观看| 免费看av在线网站网址| 欧美另类精品一区二区三区| 国产成人高清精品免费5388| 美女啪啪无遮挡| 亚洲欧美一级一级a| 亚洲欧美激情小说另类| 大香伊人久久| 亚洲av无码成人专区| 免费看久久精品99| 精品少妇人妻一区二区| 国产性爱网站| 国产91成人| 高清久久精品亚洲日韩Av| 一级片一区| 激情爆乳一区二区| 乱色熟女综合一区二区| 呦女精品网站| 波多野结衣无码视频在线观看| 国产导航在线| 国产伦片中文免费观看| 国产精品成人一区二区| 国产亚洲一区二区三区在线| 久久无码高潮喷水| 午夜成人在线视频| 国产精品夜夜嗨视频免费视频| 71pao成人国产永久免费视频| 国产一区免费在线观看| 国产精品青青| 99爱视频精品免视看| 99热这里只有精品免费国产| 青青热久麻豆精品视频在线观看| 在线观看视频99| 国产精品密蕾丝视频| 波多野结衣的av一区二区三区| 青青草原国产免费av观看| 精品91自产拍在线| 香蕉色综合| 免费在线观看av| 午夜无码一区二区三区在线app| 免费国产无遮挡又黄又爽| 国产乱子伦精品视频| 黄色不卡视频| 亚洲视频免费播放| av大片在线无码免费| 日本精品视频| 精品久久高清| 91在线精品麻豆欧美在线| 国产色偷丝袜婷婷无码麻豆制服| 国产浮力第一页永久地址| 亚洲美女视频一区| 亚洲无线观看| 91热爆在线| 成人另类稀缺在线观看| 亚洲成a人在线播放www| 国产欧美在线视频免费| 午夜人性色福利无码视频在线观看| 在线观看免费AV网| 午夜视频免费试看| 国产91导航| 91精品在线视频观看| 尤物亚洲最大AV无码网站| 亚洲中文字幕手机在线第一页| 免费国产一级 片内射老| 米奇精品一区二区三区| 日本人真淫视频一区二区三区| 色老头综合网| 日本不卡在线视频| 亚洲免费福利视频| 制服丝袜在线视频香蕉| 国产chinese男男gay视频网| 99精品这里只有精品高清视频| 亚洲中文精品人人永久免费| 狠狠色综合网| 亚洲大尺度在线| 亚洲毛片网站| 久久人人爽人人爽人人片aV东京热|