例項解讀:MySQL並行複製如何解決特定的主從問題?
並行複製存世已多年,但是在實際應用場景中的使用並不常見。這次很幸運,我們剛好遇到一個客戶,主的寫入工作量非常大,但是從難以跟上,在這種情況下,我建議它使用並行從屬執行緒。
那麼,如何衡量並行複製是否在客戶的場景中發揮了作用?對於客戶業務能夠帶來多大的幫助?下面我們就一起來看看吧!
在客戶業務場景中, slave_parallel_workers 是0,很明顯我應該去增大,但增大的幅度是多少呢?1還是10,這個問題我們會在另一篇文章中解釋,先說一下本文的場景中,我們將slave_parallel_workers 調整到了40。
同時,我們對slave還做了以下更改:
slave_parallel_type = LOGICAL_CLOCK; slave_parallel_workers = 40; slave_preserve_commit_order = ON;
40個執行緒聽起來是很多,但是這是取決於特定的工作負載的,如果事務是獨立的,那麼它就可能派上用場。
接下來,我們再來看看哪些執行緒在工作:
mysql> SELECT performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID AS THREAD_ID , performance_schema.events_transactions_summary_by_thread_by_event_name.COUNT_STAR AS COUNT_STAR FROM performance_schema.events_transactions_summary_by_thread_by_event_name WHERE performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID IN (SELECT performance_schema.replication_applier_status_by_worker.THREAD_ID FROM performance_schema.replication_applier_status_by_worker); +-----------+------------+ | THREAD_ID | COUNT_STAR | +-----------+------------+ | 25882 | 442481 | | 25883 | 433200 | | 25884 | 426460 | | 25885 | 419772 | | 25886 | 413751 | | 25887 | 407511 | | 25888 | 401592 | | 25889 | 395169 | | 25890 | 388861 | | 25891 | 380657 | | 25892 | 371923 | | 25893 | 362482 | | 25894 | 351601 | | 25895 | 339282 | | 25896 | 325148 | | 25897 | 310051 | | 25898 | 292187 | | 25899 | 272990 | | 25900 | 252843 | | 25901 | 232424 | +-----------+------------+
從上述程式碼中,我們可以看到哪些執行緒是在工作,但是這些執行緒真的加速複製了嗎?Slave能在同一時間內寫出更多的東西嗎?
先來看一下 replication lag:
我們可以看大lag很快就降下來了,這是因為執行緒數增加了嗎?還是因為生成多個外掛的作業完成了,沒有更多的寫入了?(複製延遲沒有達到0,因為這個Slave故意拖延了一個小時。)
幸運的是,在PMM中我們還有其他圖表可以看,例如顯示InnoDB Row操作:
Slave插入了比之前更多的行,那實際插入了多少行呢?下面我們建立一個新的圖表來檢視
每小時插入了多少行。在PMM中,我們已經擁有了所有這些資訊,只需要使用下面的查詢建立一個新的圖表:
increase(mysql_global_status_innodb_row_ops_total{instance="$host",operation!="read"}[1h])
結果顯示:
從圖中我們可以看到每小時插入行數大幅增加,從每小時約50Mil到200-400Mil。我們可以得出結論,增加slave_parallel_workers數量確實有幫助。
來自 “ https://www.percona.com/blog/2018/10/17/can-mysql- ”,原文連結:http://blog.itpub.net/31545814/viewspace-2218262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL主從複製問題解決一例MySql
- 如何解決MySQL主從複製太慢的問題MySql
- mysql主從複製配置與問題解決MySql
- 高頻面試:如何解決MySQL主從複製延時問題面試MySql
- 如何解決MySQL 主從複製資料不一致問題MySql
- MySQL主從複製延遲解決方案MySql
- 如何解決 MySQL 主從延時問題?MySql
- 專題《一》mysql優化 ---------主從複製,讀寫MySql優化
- MySQL 主從複製之多執行緒複製MySql執行緒
- MySQL 主從複製的執行流程MySql
- MySQL主從複製讀寫分離MySql
- mysql的主從複製 原理講解MySql
- MySQL的主從複製MySql
- mysql5.7主從複製,主主複製MySql
- mysql複製--主從複製配置MySql
- MySQL主從複製MySql
- [Mysql]主從複製和讀寫分離MySql
- 深入瞭解MySQL主從複製的原理MySql
- Redis 主從複製詳細解讀Redis
- MySQL主從複製之GTID複製MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- MySQL主從複製原理MySql
- mysql--主從複製MySql
- mysql 8.4 主從複製MySql
- mysql主從複製搭建MySql
- MySQL 主從複製,常見的binlog錯誤及解決方法MySql
- Mysql-主從複製與讀寫分離MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL 的主從複製實踐MySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- 聊聊MySQL主從複製的幾種複製方式MySql
- MySQL++:Liunx - MySQL 主從複製MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql主從複製(一):一主多從MySql
- MySQL 5.7 並行複製MySql並行
- mysql 並行複製原理MySql並行