MySQL主從延遲如何解決?
阿新 • • 發佈:2019-01-03
我們知道生產環境中經常會遇到MySQL主從延遲問題,從原理上也能看出主庫的事務提交是併發模式,而從庫只有一個SQL執行緒負責解析,所以本身上就可能存在延遲。
延遲的主要原因在於:
1、從庫的配置往往沒有主庫的配置高
2、主庫支援併發寫入,而5.7之前的版本上從庫只有單執行緒SQL來完成任務。
3、MySQL主從之間的同步,並不是完全的實時同步,而是主庫提交事務之後,從庫才再來執行一遍
4、主庫上的表的某個列沒有索引,然後對這個列進行delete或update操作
5、網路問題,往返時延RTT較大。
解決方案如下:
1、使用MySQL5.7版本,MySQL5.7版本後引入新的機制,即基於組提交的並行複製,設定引數slave_parallel_workers的值大於0,還有一個引數slave_parallel_type='LOGICAL_CLOCK'。
。MySQL [fruit]> show variables like '%parallel%'; +------------------------+----------+ | Variable_name | Value | +------------------------+----------+ | slave_parallel_type | DATABASE | | slave_parallel_workers | 0 | +------------------------+----------+ 2 rows in set (0.00sec)
上面這個是沒有修改的例子而已。僅僅是為了展示
2、可以採用percona公司的PXC架構,實現多借點寫入,達到時時同步
3、在業務初期就選擇合適的分庫、分表策略,避免單表單庫過大帶來額外的複製壓力。
4、避免一些無用的I/O消耗,使用PCIE-SSD硬碟
5、磁碟陣列選擇RAID10架構,raid cache策略使用WB而非WT
6、適當調整buffer pool的大小
7、避免資料庫進行各種大量的運算。