MySQL關於InnoDB的幾個錯誤

阿里雲服務器上裝有MySQL 5.6,這幾天MySQL服務常常死掉,啓動MySQL服務(service mysql start),卻報以下錯誤html

Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).mysql

簡單的去搜索一下關於此錯誤的解決方法,找到一個說刪除InnoDB表的日誌文件便可,因而就嘗試了一下(刪除操做首先別忘了備份)sql

不知道mysql數據存放位置的能夠這樣子查看,找到my.cnf,裏面的datadir=/var/lib/mysql既是了數據庫

cat /etc/my.cnf 找到mysql數據存放位置安全

來到這裏面有三個文件ibdata1,ib_logfile0,ib_logfile1服務器

其中ibdata1是InnoDB表的共享表空間,切忌不能夠刪除這個文件,部分InnoDB表的數據就在裏面呢less

ib_logfile0,ib_logfile1,這兩個文件不一樣配置下名字會不一樣,是InnoDB表的日誌文件(別忘記了InnoDB表示事務安全的,當數據庫奔潰時,重啓數據庫服務,會根據這些日誌文件重作一些事務dom

刪除了這兩個日誌文件,而後啓動mysql(service mysql start)此次啓動成功了!測試

--------------------------------------------------------------------------------------------------------ui

但是過了不久,真的不久,才十幾分鍾,數據庫又掛了,啓動數據庫(service mysql start),又報下面這個錯誤

Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

而後再次刪除日誌文件,再啓動,能夠了,再過了不久……又掛了,因此明白,問題不出於這裏

這些問題,每一個人出錯的都不同,網上別人的出錯緣由也許和你不同呢,要不人家能夠解決,你怎麼就不能夠解決,故去查看msyql錯誤記錄文件本身瞧個明白

msyql錯誤記錄文件不知道在哪裏,能夠這樣子來找:一樣查看my.cnf文件,其中mysqld-safe下的log-error就是mysql錯誤日誌

[mysqld_safe]
log-error=/var/log/mysqld.log

打開它看看,發現一堆錯誤,用這個命令簡單看一下出錯重點

cat /var/log/mysqld.log | grep 'ERROR' | less

發現了服務啓動時,爲什麼會跑錯了

2013-08-04 13:48:22 760 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace em/temp uses space ID: 2 at filepath: .\em\temp.ibd. Cannot open tablespace mysql/innodb_index_stats which uses space ID: 2 at filepath: .\mysql\innodb_index_stats.ibd 

打開表空間出錯!!出這個錯的緣由是之前有次操做把ibdata1給刪除掉了!(ibdata1文件剛纔說了,共享表空間!!刪除掉了後mysql雖然會從新生成,可是已經損壞了全部的InnoDB數據庫了。ps:爲何會刪除掉這個文件,我也不知道是何時刪除了,是經過history看到的)

找到緣由了,可是ibdata1這個文件沒有備份,恢復不了,還在我這個服務上的數據庫都是測試數據,能夠drop掉從新導入之前備份的版本,故drop掉損壞的數據庫,在mysql命令中是drop不掉的,只能在文件系統裏直接刪除其文件(第一步已經知道了數據存儲位置了,直接刪(ps記得先備份))

而後再重建了數據庫,導入數據,重啓mysql,正常啓動,過了一天尚未掛掉!修復成功!次日再去看一下mysql錯誤日誌,又有了新發現

--------------------------------------------------------------------------------------------------------------

tail -n 200 /var/log/mysqld.log

 

文件裏都在報這樣的錯誤

Error: Table "mysql"."innodb_table_stats" not found.

2013-04-02 09:07:35 7fc53f5e4700 InnoDB: Recalculation of persistent statistics requested for table "mydatabase"."mytable" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.

可是目前有沒察覺到對項目和數據庫使用的明顯影響,可是還要解決的,這篇博客說的很明白,果斷推薦

http://hi.baidu.com/life_to_you/item/d35894c0058a993098b498ee

最後,都沒發現什麼問題了。MySQL遇到什麼問題,第一下仍是看下mysql的錯誤日誌比較好,裏面記錄的一清二楚,逐個排除就好啦

 

裝載註明出處:http://www.cnblogs.com/iamsupercp/p/3675108.html

相關文章
相關標籤/搜索