您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關生產數據庫因磁盤空間滿而引起的死鎖故障及解決方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
今天主要介紹一次因磁盤空間滿導致的事故及解決方法。
1. 查看死鎖
最近業務反饋無法登陸系統,需要我這邊配合檢查下,這里之所以先看死鎖是因為這系統一般出問題都是這原因..
select * from information_schema.INNODB_LOCKS;show processlist;
2. 查看阻塞鎖
看一下這里面是被什么語句所阻塞了
--查看哪個線程被哪個堵塞,waiting_thread_id代表等待線程,blocking_thread_id代表堵塞線程SELECTr.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread_id,r.trx_query waiting_query,b.trx_id blocking_trx_id,b.trx_mysql_thread_id blocking_thread_id,b.trx_query blocking_query,now( ) - r.TRX_STARTED blocking_time FROMinformation_schema.innodb_lock_waits wINNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_idINNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id; --查看源頭sqlSELECTa.sql_text,c.id,d.trx_started,b.processlist_user,b.processlist_host FROMPERFORMANCE_SCHEMA.events_statements_current aJOIN PERFORMANCE_SCHEMA.threads b ON a.thread_id = b.thread_idJOIN information_schema.PROCESSLIST c ON b.processlist_id = c.idJOIN information_schema.innodb_trx d ON c.id = d.trx_mysql_thread_id WHEREc.id = 73921 ORDER BYd.trx_started;
3. 查看死鎖日志
因為我配置文件是加了參數:
#打印deadlock日志innodb_print_all_deadlocks=1
所以這里直接看mysqld.log情況
可以發現日志提示磁盤滿了...
4. 檢查磁盤空間
檢查后發現果然是滿了,事后發現是備份策略每天備份一次,14天清理,但數據越來越大導致空間不夠用了,清理后調整備份策略即可。
5. 解決方案
(1)調整備份策略
修改為每兩天一次全備,14天自動清理
(2)清理數據庫
清理數據庫無用表及無用對象
(3)數據庫日志表清理
建立歸檔庫,定期挪走相關日志表,隔7天后drop掉
(4)建立監控告警體系
zabbix覆蓋監控,釘釘預警。
看完上述內容,你們對生產數據庫因磁盤空間滿而引起的死鎖故障及解決方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。