概述
MySQL是一個強大的開源資料庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這裡提供一些關於MySQL伺服器硬體和OS(作業系統)調優的建議。
優化建議
1、足夠的內存
有足夠的物理內存,能將整個InnoDB文件加載到內存里 —— 如果訪問的文件在內存里,而不是在磁碟上,InnoDB會快很多。
2、避免swap
要盡力避免 Swap 操作 — 交換(swapping)是從磁碟讀取數據,所以會很慢。
3、使用電池供電的RAM(Battery-Backed RAM)
4、使用一個高級磁碟陣列
最好是 RAID10 或者更高。
5、避免使用RAID5
和校驗需要確保完整性,開銷很高。
6、分離作業系統和數據
將你的作業系統和數據分開,不僅僅是邏輯上要分開,物理上也要分開。作業系統的讀寫開銷會影響資料庫的性能。
7、日誌與數據分開
將臨時文件和複製日誌與數據文件分開,後台的寫操作影響資料庫從磁碟文件的讀寫操作。
8、更多的磁碟空間等於更高的速度。
9、磁碟速度越快越好。
10、SAS優於SATA。
11、小磁碟的速度比大磁碟的更快,尤其是在 RAID 中。
12、使用電池供電的緩存 RAID(Battery-Backed Cache RAID)控制器。
13、避免使用軟磁碟陣列。
14. 考慮用固態IO卡做數據分區
建議使用固態IO卡(不是磁碟)來作為數據分區 — 幾乎對所有量級數據,這種卡能夠支持 2 GBps 的寫操作。
15、設置 swappiness 的值為0
在 Linux 系統上,設置 swappiness 的值為0,沒有理由在資料庫伺服器上緩存文件,這種方式在Web伺服器或桌面應用中用的更多。
16、儘可能使用 noatime 和 nodirtime 來掛載文件系統
沒有必要為每次訪問來更新文件的修改時間。
17、使用 XFS 文件系統
一個比ext3更快的、更小的文件系統,擁有更多的日誌選項,同時,MySQL在ext3上存在雙緩衝區的問題。
18、優化你的 XFS 文件系統日誌和緩衝區參數
這是為了獲取最大的性能基準。
19、使用合適的IO調度
在Linux系統中,建議使用 NOOP 或 DEADLINE IO 調度器 — CFQ 和 ANTICIPATORY 調度器已經被證明比 NOOP 和 DEADLINE 慢。
20、使用 64 位作業系統
這樣就有更多的內存能用於尋址和 MySQL 使用。
21、將不用的包和後台程序從伺服器上刪除
主要是減少資源占用。
22、將使用 MySQL 的 host 和 MySQL自身的 host 都配置在一個 host 文件中
目的是沒有 DNS 查找。
23、永遠不要強制殺死一個MySQL進程
因為這樣你將損壞資料庫,並運行備份。
24、讓你的伺服器只服務於MySQL
後台處理程序和其他服務會占用資料庫的 CPU 時間。
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~