1. 程式人生 > >MySQL主從延遲如何解決?

MySQL主從延遲如何解決?

我們知道生產環境中經常會遇到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.00
sec)

上面這個是沒有修改的例子而已。僅僅是為了展示

2、可以採用percona公司的PXC架構,實現多借點寫入,達到時時同步

3、在業務初期就選擇合適的分庫、分表策略,避免單表單庫過大帶來額外的複製壓力。

4、避免一些無用的I/O消耗,使用PCIE-SSD硬碟

5、磁碟陣列選擇RAID10架構,raid cache策略使用WB而非WT

6、適當調整buffer pool的大小

7、避免資料庫進行各種大量的運算。