1. 程式人生 > >MySQL多執行緒複製

MySQL多執行緒複製

MySQL的多執行緒複製不是一個新的東西,在5,7之前就已經有了,在5.7上進行了增強;
多執行緒複製可以減輕主從複製的延遲;

一個執行緒只能針對一個數據庫進行復制,顯得有些雞肋;大部分操作有可能都是對一個庫的操作;

MySQL5.7的多執行緒複製可以看做是基於table的,這樣就可以提高效率;

第一步:在slave上停止複製鏈路;
第二步:

  • 設定多執行緒複製方式位邏輯時鐘,slave上相同的logic_clock可以併發複製;
set global slave_parallel_type='logic_clock'
  • 設定併發的工作執行緒數量
set global
slave_parallel_workers=CPU_NUM;

這裡寫圖片描述

實驗:

在slave端檢視併發方式:

mysql> show variables like 'slave_parallel%'
    -> ;
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| slave_parallel_type    | DATABASE |
| slave_parallel_workers | 0        |
+------------------------+----------+
2 rows in set (0.01 sec)

修改併發方式位邏輯時鐘的方式:

mysql> show variables like 'slave_parallel%';
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| slave_parallel_type    | DATABASE |
| slave_parallel_workers | 0        |
+------------------------+----------+
2 rows in set (0.00 sec) mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> set global slave_parallel_workers = 2; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> show processlist; mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.31.157