為了讓MySQL崩潰時生成正確的coredump,除了要按前一篇中講到的那樣配置好系統(tǒng)環(huán)境,還需要在啟動mysqld時指定--core-file參數(shù)。這一配置非常重要,若不指定這一參數(shù),則MySQL崩潰時有時能生成coredump,有時不能生成,而且最要命的是生成的coredump內(nèi)容經(jīng)常完全不能反映崩潰的原因,具有很強的誤導性。

創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都網(wǎng)站建設、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元泰和做網(wǎng)站,已為上家服務,為泰和各地企業(yè)和個人服務,聯(lián)系電話:18980820575
一般在Linux系統(tǒng)中都是通過mysqld_safe腳本來啟動MySQL(通過/etc/init.d/mysqld start啟動時也是調(diào)用mysqld_safe),這時指定這一配置最簡單的方法是在my.cnf中的[mysqld]節(jié)中加入這樣一行:
core-file
mysqld_safe會自動將這一參數(shù)傳遞給mysqld。若直接啟動mysqld,則在命令行中加上這一參數(shù)。
另外core文件的大小限制也可在my.cnf中指定。只要將如下行加入到my.cnf中的[mysqld_safe]節(jié)中
core-file-size = unlimited
通過mysqld_safe腳本啟動mysqld時就會自動調(diào)用"ulimit -c unlimited"。
MySQL 隨著版本不停迭代,崩潰的現(xiàn)象越來越少,也越來越隱蔽。
一旦遇到生產(chǎn)環(huán)境上的 MySQL 崩潰,就需要保留現(xiàn)場信息,供分析用。雖然 MySQL 的 error log 中會打印部分信息,但對于比較隱蔽的崩潰,往往顯得力不從心。
通過開啟操作系統(tǒng)級別、放開用戶限制、啟用 MySQL 參數(shù)三個步驟,我們啟用了 MySQL 的 coredump 功能,使得 MySQL 崩潰時留下了足夠的線索。
對于復雜崩潰的分析,還是需要將 coredump 交給專業(yè)的研發(fā)工程師手里,或者提交給 MySQL 開發(fā)團隊。
不過不管是什么場景,能提供一份 coredump,所有技術(shù)人員都會感謝你的。
Windows上安裝了XMAPP-controller之后間歇性出現(xiàn)MySQL無法啟動,查看日之后發(fā)現(xiàn)是innodb的報錯,報錯信息如下:
度娘上各種答案無法解決,后來直接看官方文檔,直接上解決方案:
踩坑指南 - - 操作配置前需要做這些操作:
1、配置my.cnf 配置innodb_force_recovery = 1 到 6 試到正確為止,重啟MySQL
2、導出數(shù)據(jù)腳本 mysqldump -uroot -p123456 test test.sql 導出SQL腳本。或者用Navicat將所有數(shù)據(jù)庫/表導入到其他服務器的數(shù)據(jù)庫中。 注意:這里的數(shù)據(jù)一定要備份成功。然后刪除原數(shù)據(jù)庫中的數(shù)據(jù)。
3、刪除ib_logfile0、ib_logfile1、ibdata1 備份MySQL數(shù)據(jù)目錄下的ib_logfile0、ib_logfile1、ibdata1三個文件,然后將這三個文件刪除
4、配置my.cnf 將my.cnf中innodb_force_recovery 這行配置刪除或者配置為innodb_force_recovery = 0,重啟MySQL服務
5、將數(shù)據(jù)導入MySQL數(shù)據(jù)庫 mysql -uroot -p123456 test test.sql;
或者用Navicat將備份的數(shù)據(jù)導入到數(shù)據(jù)庫中。 如果在導入數(shù)據(jù)過程中發(fā)生tablespace不存在的問題,請刪除data目錄相應database下的文件。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。當發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細參數(shù)說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數(shù)據(jù)庫(表)
你用sql語句查,那是自家查自家。
應用程序需要1.連接2.命令3.接收結(jié)果,不考慮數(shù)據(jù)處理其他打開關(guān)閉什么的,就比sql語句多了2步。
如舉例,你要有個朋友(有錢的情況),然后借錢,結(jié)果還不一定能接到。
而老婆,她又沒有錢你知道,她不可能不給你錢而餓著你,結(jié)果是一定借到還不用還。
sql語句就像是原配的老婆,繼承在數(shù)據(jù)庫操作平臺中,不快還得了啊。
應用程序:
萬一連接寫錯了,報錯,命令寫錯了報錯,結(jié)果接收不不如意,這都要考慮(簡單的try catch 也影響性能)。
還有一個最致命的問題,你連的未必是本地數(shù)據(jù)庫,這又牽扯到網(wǎng)速問題。
綜上所述,慢是必然的,尤其是mysql,在配置優(yōu)化和存儲過程上多下點功夫,會提高點查詢速度。
masql沒升級吧? 要是沒升級這樣出錯了就你COPY文件的錯誤 一般數(shù)據(jù)庫的文件都是自動生成 默認的 COPY是無效的
當前文章:怎么讓mysql崩潰,如何讓數(shù)據(jù)庫崩潰
本文鏈接:http://chinadenli.net/article9/dsgedoh.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設計公司、網(wǎng)頁設計公司、響應式網(wǎng)站、網(wǎng)站設計、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)