1. 程式人生 > >【高效能MySQL】讀書筆記

【高效能MySQL】讀書筆記

第9章:

MySQL需要的四種基本資源:cpu、記憶體、硬碟以及網路資源,傾向於很多快速的cpu

合理做法:不要超過兩個插槽;記憶體方面 經濟的伺服器記憶體:18個DIMM槽,單條8GB(會變)

持久化儲存選擇:SAN、傳統硬碟、固態儲存裝置(以提供效能的次序排序)

  • 需要功能和純粹容量時,SAN;昂貴、小的隨機I/O很大延遲(慢的互聯方式、工作集太大)
  • 傳統硬碟很大、便宜,隨機讀慢,best 伺服器硬碟組成RAID 10卷,帶有電池保護單元的RAID控制器,設定寫快取未writeBack
  • 固態小且昂貴,隨機I/O快 ;SSD便宜更慢缺可靠性驗證:做RAID提升;PCIe昂貴容量有限,非常快且可靠不需要RAID

作業系統:儲存、網路、虛擬記憶體管理

   使用GNU/Linux,採用XFS檔案系統,且為伺服器頁面交換傾向率 硬碟佇列排程器設定恰當的值

10、複製

2種方式:通主庫記錄二進位制日誌,備庫重放日誌來非同步複製

推薦配置:


1、明確指定二進位制日誌名字:保證二進位制日誌名在all伺服器上一致 log_bin

2、備庫:為中繼日誌指定絕對路徑

11章

構建高可擴充套件性系統原則:

1、在系統內儘量避免序列化和互動

2、避免不同節點間的互動

2、助規劃可擴充套件性:

      應用的功能完成了多少?預期的最大負載是?某個系統失效會發生什麼

資料分片最大挑戰:查詢和獲取資料:如何查詢資料取決於如何分片

負載均衡:伺服器前端設定一個負載均衡器,將請求路由至最空閒的可用伺服器

實現應用所明確需要的,為可能的快速增長做好預先規劃

12高可用性

在宕機造成的損失與降低宕機時間所花費的成本間取一個平衡

宕機:

執行環境:裁判空間耗盡

效能:執行糟糕的SQL,伺服器bug、錯誤行為,糟糕的schema 索引設計

複製:主備資料不一致

資料丟失或損壞:DROP TABLE誤操作,缺少可用備份

其他:……

實現高可用性:

1、適當配置、監控、規範或安全保障措施避免人為失誤

2、系統中造冗餘,且具備故障轉移能力

提升平均失效時間MTBF

使用innodb並進行適當配置、skip_name_resolve禁止DNS

備庫只讀,不讓複製自啟動、定期審查查詢語句、歸檔清理不需要的資料

禁用查詢快取(除非能證明有效)、避免使用複雜特性(複製過濾 觸發器)

監控重要元件和功能,儘量記錄伺服器狀態和效能指數、定期檢查複製完整性

為檔案系統保留一些空間,養成習慣、評估管理系統的改變、狀態及效能資訊

測試恢復工具和流程(含從備份中恢復資料)、最小許可權原則、系統乾淨 整潔

好的命名和組織約定、謹慎安排升級資料庫伺服器、升級前使用諸如Percona Toolkit的pt-upgrade類工具檢查系統

降低平局恢復時間MTTR

一個能夠提供冗餘和故障轉移能力的系統架構

團隊成員是最重要的高可用性資產

14 應用層優化

快取:

找到正確的粒度和快取過期策略組合

決定哪些內容適合快取,快取在哪裡

被動快取:除了儲存和返回資料不做其他事情 memcached

主動快取:快取未命中做額外工作,將請求轉發給應用的其他辦部分生成請求結果,儲存並返回 squid

測量:剖析每一層問題;檢查web伺服器配置和快取

15備份與恢復

還原:從備份檔案獲取資料

恢復:當異常發生後對一個系統或其部分的拯救

邏輯備份:匯出;物理備份:複製原始檔案

  先使用物理複製,以此資料啟動MySQL伺服器例項執行mysqlcheck,週期性使用mysqldump執行邏輯備份

1、備份二進位制日誌:備份後使用flush logs開始新的二進位制日誌(只需備份新的二進位制日誌)

2、不備份沒有改變的表,MyISAM記錄每個表的最後修改時間,通過檢視磁碟上的檔案執行show table status檢視時間,使用innodb 利用觸發器記錄最後修改時間

3、不備份無改變的行,某些資料不需要備份,至少一週一次全備份

資料一致性:資料指定時間點一致;檔案一致性

innodb每次啟動檢測資料和日誌檔案,是否需要恢復過程:據日誌檔案將事務應用到資料檔案,回滾未提交變更

恢復損壞的InnoDB資料:

optimize table修復損壞的二級索引;聚簇索引:innodb_force_recovery匯出表;

小結:

無侵入式二進位制原始資料備份:

   從檔案系統或SAN快照中直接複製資料檔案;使用percona xtraBackup熱備份

備份二進位制日誌,儘可能久地儲存多份備份的資料和二進位制檔案

16、MySQL使用者工具

介面工具

幫助執行查詢,建立表和使用者,執行其他日常任務等

命令列工具集

Percona Toolkit:日誌分析、複製完整性檢測、資料同步、模式和索引分析、查詢建議和資料歸檔目的

SQL實用集

common_schema:針對伺服器指令碼化和管理的程式碼和檢視

開源監控工具

nagios:問題檢測和告警系統,檔案:週期性檢測伺服器,將結果與預設 自定義閾值比較 發給聯絡人  難維護

zabbix:同時支援監控和指標收集的完整系統,資料庫;配置簡單、靈活、可擴充套件,圖形