天天看點

MySQL主從延遲案例分析

同步延遲告警

【*****************】主從同步延遲過高,告警門檻值300,目前為1973】,請及時處理!,産生時間2022-09-30 06:51:27

ERRO日志

2022-09-30T06:50:16.110234+08:00 32196300
[Note] Multi-threaded slave statistics for channel '': seconds elapsed = 121; events assigned = 454740993; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 19460575157300 waited (count) when Workers occupied = 152376 waited when Workers occupied = 1026653718600      

日志解析

2022-09-30T06:50:16.110234+08:00 32196300
[Note] Multi-threaded slave statistics for channel '': 
seconds elapsed = 121; 每隔121s輸出 
events assigned = 454740993; 總共有多少event被配置設定執行; 
worker queues filled over overrun level = 0;多線程同步中,worker 的私有隊列長度超長的次數
waited due a Worker queue full = 0;  因為worker的隊列超長而産生等待的次數
waited due the total size = 0; 超過最大size的次數
waited at clock conflicts = 19460575157300 在事務之間存在依賴的情況下,該參數顯示等待時間相當于沖突檢測和解決方案的邏輯時間。 
waited (count) when Workers occupied = 152376  因為workder被占用而出現等待的次數。(總計值) 
waited when Workers occupied = 1026653718600  因為workder被占用而出現等待的總時間,總計值,機關是納秒      

解決方式

1、調大slave_pending_jobs_size_max 
如果slave_pending_jobs_size_max的大小小于目前需要執行事件所需的記憶體大小
2、臨時調整sync_binlog大小
當每進行n次事務送出之後,MySQL将進行一次fsync之類的磁盤同步指令來将binlog_cache中的資料強制寫入磁盤
3、slave_parallel_workers  
調整并行複制的參數,建議修改為cpu的核數
4、innodb_io_capacity
sas硬碟建議200,如果是固态盤,建議調整為1500      
上一篇: RPC詳解