今天遇到一個問題,因為mysql所在機器的磁盤滿了導致mysql死鎖,連查詢select都不行,要不是看mysql日志,還真找不到原因。
通過show processlist能看到第一條是個update語句,需要寫入數據,因為磁盤滿了,寫入不了,導致mysql死鎖。
查看mysql日志可以發現有告警日志:“[Warning] Disk is full writing './mysql-bin.000123' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)”
說的很明白,是因為磁盤滿了導致的,釋放磁盤空間就可以解決。
我是之前kill掉了mysql的進程,然後start後才釋放磁盤空間的,不知道直接釋放磁盤空間能否解決此問題(估計過1分鐘後mysql會恢復回來)。
今天發生問題時,也試著kill -3想dump出進程的線程信息查看是否程序有問題,結果也沒有dump出來,估計也是因為磁盤滿了,dump出的信息無磁盤空間存放。
以後要是發生奇怪現象,先看看磁盤空間是否滿了。