MY SQL 知識

LINUX配置優化

  • 診斷命令
  • 硬件優化
    • raid 10
    • ssd
    • Fusion-io
    • 大內存
    • 電池後備SCSI磁盤緩存
  • 系統優化
    • 日誌,數據分盤
    • IO調度算法 deadline適用於磁盤 noop適用於ssd
    • XFS文件系統
    • 避免使用swap 分區
    • fd限制 ulimit

MySQL參數配置

  • 基礎配置
    • 字符集
    • 數據目錄,日誌目錄,臨時目錄
    • sql_mode
  • 緩存設置
    • 線程緩存
    • 表緩存
    • 排序緩存
    • join緩存
    • 查詢緩存
    • binlog緩存
    • ......
  • 閾值設置
    • max connection
    • timeout
    • slow query time
    • ......
  • innodb 設置
    • instances
    • size
    • io_capacity
    • innodb_flush_method=O_DIRECT 數據直接寫盤,避過OS cache 日誌仍是OS flush
    • 雙一設置
    • ......

MySQL開發規範

  • DDL
    • 類型使用要精確
    • not null
    • 避免text/blob
    • 避免外鍵
    • 自增主鍵
    • 避免冗餘索引
    • 索引數量控制
    • 索引字段過濾度
  • DML
    • 避免使用觸發器,存儲過程
    • 存儲使用Mysql,不要有運算邏輯
    • 更新操做禁用limit
    • select * 禁用
    • in 優先 or
    • 同表alter操做合併

BIG SQL

  • 索引優化
    • WHERE 條件索引使用率,符合最左原則
    • 聯合索引,注意索引過濾度
    • 表join操做,注意加索引,且join字段類型必須一致
  • SQL優化
    • 子查詢變成鏈接操做,優先使用獨立子查詢
    • 利用覆蓋索引,分頁操做
    • 拆分SQL,加緩存表或者彙總表
    • 外在條件下推,減小中間結果集
    • 重寫SQL,利用過濾性更好的索引

主從延遲

  • 避免
    • 避免3B
    • 較少從庫壓力,包括服務器和數據庫自己的
    • 從庫上有觸發操做,控制更新量
  • 改善
    • 升級從庫機器硬件ssd
    • 升級數據庫版本,5.6的庫併發 5.7的binlog線程併發
    • 第三方工具,丁奇的transfer插件
    • inset...select rbr模式,能夠先select 緩存結果,後insert

排查方法

  • 服務器
    • top
      • 查看負載
      • 查看CPU耗時
    • iostat
    • free
    • ps aux | grep pid
      • 查看具體進程信息
  • MySQL
    • SHOW FULL PROCESSLIST / dbaslowing
      • 數據庫目前運行SQL,鏈接數
      • 慢查詢實時採集,格式話輸出
    • SHOW ENGINE INNODB STATUS
      • 運行事務信息
      • 死鎖信息 / pt-deadlock-logger 週期採集死鎖信息
      • buffer pool 信息查看
    • dbaprocess.sh
      • 查看鏈接數排序,顯示鏈接服務

緊急恢復

  • 切換
    • 主從切換
      • 雙主模式,設置自增間隔,不停服
      • read_only 切換,保留靜態老主
  • 鏈接數打滿
    • pt-kill
    • mysqladmin kill

平常指標

  • zabbix
    • 歷史狀態查詢
    • 報警監控
    • 組合定製腳本監控
  • 運維腳本
    • 慢查詢腳本每日郵件
    • 數據庫周健康度郵件
    • 核心表每日備份
    • 擴容從庫腳本
    • 搭建級聯腳本
    • 測試庫同步腳本
    • 試運行環境對比腳本
  • 備份
    • hotbak,dump
    • nfs掛載磁盤
    • hdfs數據冗餘

自動化運維

  • 自動審覈inception
  • 自動受權系統

MySQL HA

  • 中間件html

    • dbproxy
      • 讀寫分離
      • 從庫HA,負載均衡
    • mycat
      • 讀寫分離
      • 從庫負載均衡
      • 分庫分表&全局表
      • HA
      • 不支持分佈式事務
      • 業務SQL限制,須要有路由key
      • 性能有所損耗
  • MHAmysql

  • PXC

經常使用PT

  • pt-config 數據庫替換時,驗證參數一致性
  • pt-deadlock-logger 記錄歷史死鎖信息
  • pt-duplicate-key-checker 冗餘索引檢測
  • pt-ioprofile IO調試
  • pt-kill 定製kill鏈接線程
  • pt-online-schema-change OSC
  • pt-query-digest 狀態輸出慢查詢
  • pt-table-checksum 主從一致性驗證
  • pt-slave-find 主從拓撲結構
  • pt-fifo-split 大文件導入
相關文章
相關標籤/搜索