並行複製(MTS:enhanced Multi-threaded slave)

5.7.2 支持單庫加強型多線程slave(多個sql work線程),mariadb 10.0.5支持html

  • 原理mysql

    • slave利用事務組提交的特性(To provide parallel execution of transactions in the same schema, MariaDB 10.0 and MySQL 5.7 take advantage of the binary log group commit optimization),在slave 多個sql worker線程進行並行回放
    • master依據group commit的並行性,在binary log進行標記,slave使用master提供的信息並行執行事務
  • 注意事項sql

    • 級聯複製場景,其餘slave將會出現並行性更小(並行度不同),使用binlog server作替代方案
  • 配置多線程

    • mysql 5.7
      • slave_parallel_type=logical_clock 默認爲database,使用db並行方式,logical_clock使用邏輯時鐘的並行模式
      • slave_parallel_workers=16 設置worker線程數
      • binlog_group_commit_sync_delaybinlog_group_commit_sync_no_delay_count 在master延時事務提交,增長group commit事務數
    • mariadb參數
      • slave_parallel_threads=16 也支持多源複製
      • slave_parallel_mode=conservative 10.1.3開始支持optimistic模式,經過啓發性方式減小衝突,若是發生衝突,將事務進行回滾 ;Conservative默認值,使用group commit發現潛在的並行事件,在一個group commit中的事務寫到binlog時擁有相同的commit id(cid);minimal僅僅commit階段是並行,其餘事務應用發生是串行的,同時也關閉out-of-order(使用不一樣domain id)並行複製
      • binlog_commit_wait_countbinlog_commit_wait_usec 調整master進行group commit的事務數
      • slave_parallel_max_queued 限制每一個線程的隊列事件數,提升worker線程處理能力
      • slave_domain_parallel_threads worker線程由全部多源master鏈接共享,建議大於slave_parallel_threads
  • 查看狀態app

    • show processlist 檢查worker線程的狀態
    • mariadb的狀態變量BINLOG_COMMITSBINLOG_GROUP_COMMITS
  • 性能測試dom

輸入圖片說明

相關文章
相關標籤/搜索