Mysql問題排查文檔 - thomas0yang的專欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/thomas0yang/article/details/8175339
1. Mysql問題歸類1.1 SQL類問題這類問題通常是由用戶習(xí)慣不好導(dǎo)致的問題,比如大表沒有索引,SQL語句不規(guī)范等夹厌。查找到錯誤的sql止潘,修改處理。1.2 配置類問題這類問題屬于mysql數(shù)據(jù)庫的配置不合理的問題幌甘,導(dǎo)致數(shù)據(jù)庫操作較慢。需要修改響應(yīng)配置。1.3 BUG類問題這類問題比較少見吃谣,碰到了MySQL的bug,需要根據(jù)錯誤日志或者網(wǎng)絡(luò)查詢解決做裙。
2. Mysql問題排查流程2.1 Mysql慢1岗憋、 進入mysql,執(zhí)行命令show processlist或者105上使用navicat工具锚贱,工具->服務(wù)器監(jiān)控仔戈,查看正在運行的sql;2、 如果有運行時間較長的sql拧廊,需要關(guān)注分析杂穷。如果有問題,修改卦绣。3耐量、 查看慢查詢?nèi)罩荆话阍?var/lib/mysql/下滤港,slow.log是文本文件廊蜒,可以直接查看執(zhí)行慢的sql,分析處理溅漾。2.2 Mysql宕掉1山叮、 查看錯誤日志。tail –f /var/log/mysql/mysqld.err添履。根據(jù)錯誤日志進行分析處理屁倔。2、 重啟mysql暮胧。如果還有問題在根據(jù)運行的錯誤日志在進行處理锐借。
3. Mysql問題提前預(yù)防最關(guān)鍵的還是在mysql平時的維護问麸,減少問題情況的發(fā)生。3.1 建表核查建表有一套基本的需要遵守的規(guī)則钞翔,參照:
l 必須指定主鍵严卖。
若不指定主鍵,InnoDB會用唯一且非空值索引代替布轿。
l 盡量不用外鍵哮笆。
由程序端保證約束。
l 保持表身段苗條汰扭。建議單表字段數(shù)上限控制在20~50個稠肘。
l 合理選擇字段類型。
l 避免使用NULL字段萝毛。
很難進行查詢優(yōu)化启具,NULL列加索引需要額外空間,含NULL復(fù)合索引無效。
l 少用并拆分TEXT/BLOB珊泳。
l 分析正式表的數(shù)據(jù)量鲁冯。
如果數(shù)據(jù)量只增不減,盡量避免使用mysql色查。建議數(shù)據(jù)量不超過千萬薯演,否則會影響性能。
l 收集經(jīng)常操作表的sql語句秧了。
1跨扮、經(jīng)常用的字段增加索引
2、避免一個語句操作過多數(shù)據(jù)行验毡。如:update 衡创。。晶通。 where N_GROUP=1璃氢,發(fā)現(xiàn)需要更改的數(shù)據(jù)行超過100;需要分頁操作狮辽。
3.2 日常檢查如果有專職DBA一也,每天檢查數(shù)據(jù)庫運行狀況;如果無專職喉脖,可以每周檢查運行狀況椰苟。檢查文檔:http://blog.csdn.net/thomas0yang/article/details/81753613.3 基礎(chǔ)普及需要對開發(fā)人員進行基本的數(shù)據(jù)庫使用操作知識普及,減少不規(guī)范的問題的出現(xiàn)树叽。如:
http://blog.csdn.net/thomas0yang/article/details/8153507
http://blog.csdn.net/thomas0yang/article/details/8112257
4. 極端問題處理經(jīng)驗1舆蝴、 重裝數(shù)據(jù)庫a) 備份數(shù)據(jù)庫 mysqldump -uusername -ppassword databasename tablename > /home/db/db_TQ_1103.sqlb) 停止數(shù)據(jù)庫 /etc/init.d/mysql stopc) 卸載數(shù)據(jù)庫 emerge --unmerge mysqld) 安裝數(shù)據(jù)庫 參照http://wiki.uuwatch.com:8081/display/dev/Gentoo+MySQLe) 進入mysql,創(chuàng)建數(shù)據(jù)庫,導(dǎo)入數(shù)據(jù)source /home/db/db_TQ_1103.sql2洁仗、 重建數(shù)據(jù)庫a) 備份數(shù)據(jù)庫层皱,如果不能正常啟動,在/etc/my.cnf中寫入innodb_force_recovery = 4b) Mysql啟動下刪除數(shù)據(jù)庫或者關(guān)閉情況下備份數(shù)據(jù)庫路徑下的數(shù)據(jù)庫名字的文件夾京痢,之后刪除c) 重命名ibdata1表空間文件和ib_logfile0、ib_logfile1重做日志文件篷店。d) 恢復(fù)參數(shù)祭椰,啟動數(shù)據(jù)庫,新建數(shù)據(jù)庫疲陕,導(dǎo)入數(shù)據(jù)http://blog.csdn.NET/thomas0yang/article/details/8112257