今天把生產機搞宕機了,緊張了好一會兒。
事情是這樣的:我這幾天發現一**生產機資料庫有死鎖的現象,今天查到了原因,原來是有一種交易的事務執行時間太長(幾十分鐘,最後交易是成功的),導致其他事務無法拿到鎖而失敗。
我在測試環境上測試這種交易,沒有問題;在生產環境的測試庫上測試,可以重現,說明是生產的資料庫問題(生產環境的mysql建了兩個庫,乙個用於測試,乙個用於生產)。但是重現了以後發現生產庫也開始死鎖了,難道是整個庫的鎖?為了讓生產庫不影響交易,我決定重啟mysql(大錯特錯呀,後來發現生產庫的死鎖跟測試庫木有關係,而是恰巧當時生產環境也有一筆死鎖交易),先把資料庫停掉:
/etc/init.d/mysql stop
再啟動/usr/bin/mysqld_safe &
媽媽呀,起不來了!!!
檢視系統日誌 /var/log/messages,有這樣的記錄:
問了好多人,知道是系統selinux的限制(以後再研究)。
解決辦法:
修改/etc/selinux/config配置檔案,設定 selinux=disabled
然後重啟selinux:
重啟生效,如果不想重啟,用命令
[root@mail topic]# setenforce
usage: setenforce [ enforcing | permissive | 1 | 0 ]
[root@mail topic]# setenforce 0
setenforce: selinux is permissive
檢視selinux狀態:
[root@mail topic]# getenforce
permissive
再重啟mysql就正常了。
此時服務已經停了2個小時!
為了不影響正常交易,將出現死鎖的訪問資料庫的部分注釋掉。
然後慢慢解決死鎖的問題,還要研究一段時間。
死鎖解決後還有把注釋掉的**恢復,然後將這段時間的異常交易處理掉。加油!
mysql重啟報錯 mysql 重啟報錯問題處理
停止服務報錯 命令 etc init.d mysqld stop error mysql server pid file could not be found 1.在進行了刪除mysqlbinlog二進位制日誌 操作為 purge binary logs to mysql bin.000002 2....
關於MySQL不斷重啟的問題
前幾日,公司來一新人,不小心把電源踢斷了。當時我的機器上還跑著伺服器程式。以上是背景,然後等我開機重啟服務的時候,發現連線資料庫總是失敗。最常見的就是 cannot connect to mysql by var lib mysql mysql.sock 提示大概就是這樣吧,記不清了。當時使用mys...
關於MySQL不斷重啟的問題
前幾日,公司來一新人,不小心把電源踢斷了。當時我的機器上還跑著伺服器程式。以上是背景,然後等我開機重啟服務的時候,發現連線資料庫總是失敗。最常見的就是 cannot connect to mysql by var lib mysql mysql.sock 提示大概就是這樣吧,記不清了。當時使用mys...