溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql5.5以上實現(xiàn)半同步復(fù)制方法

發(fā)布時間:2020-06-01 15:28:09 來源:網(wǎng)絡(luò) 閱讀:271 作者:三月 欄目:MySQL數(shù)據(jù)庫

下文給大家?guī)黻P(guān)于mysql5.5以上實現(xiàn)半同步復(fù)制方法,感興趣的話就一起來看看這篇文章吧,相信看完mysql5.5以上實現(xiàn)半同步復(fù)制方法對大家多少有點幫助吧。

1.半同步
半同步復(fù)制是主庫將binlog日志發(fā)給從庫,并確認binlog寫入從庫的relay-log的日志中,這個時候才會返回給主庫
2.異步復(fù)制
異步復(fù)制就是咱們平時說的主從復(fù)制,主庫將binlog發(fā)給從庫這個時候就會結(jié)束,并不會確認從庫是否接收完畢

3.注意事項:
半同步如果出現(xiàn)超時,這個時候主從復(fù)制會暫時切換到異步復(fù)制的模式,直到一臺設(shè)置為半同步的數(shù)據(jù)庫能夠及時接受信息為止

實驗:
mysql主從復(fù)制已經(jīng)做好
主庫:
192.168.56.10  
從庫:
192.168.56.11

一.主庫:
1.查看半同步插件默認是否開啟自動加載,可以看出有自動加載功能
mysql> show  variables  like  '%dynamic%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
1 row in set (0.00 sec)

mysql>
2.安裝插件
mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql>show plugins;
mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1;  #開啟半同步復(fù)制,默認是關(guān)閉的

vim  /etc/my.cnf  #確保重啟配置文件能夠生效
[mysqld]
GLOBAL rpl_semi_sync_master_enabled = 1

二.從庫:
mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql>show plugins;   #查看是否加載成功
mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1;  #開啟半同步復(fù)制,默認是關(guān)閉的
mysql>stop slave;
mysql>start slave;

vim /etc/my.cnf
[mysqld]
rpl_semi_sync_slave_enabled=1

###########到此mysql半同步已經(jīng)做好#######################################
主庫:
mysql> show variables like '%semi%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |  ##半同步開啟的狀態(tài)
| rpl_semi_sync_master_timeout              | 10000      |  #半同步超時時間10s,超過10s切換為異步復(fù)制
| rpl_semi_sync_master_trace_level          | 32         | #半同步的調(diào)試級別
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         | #master的每個事務(wù)都要slave確認
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)

從庫:
mysql> show variables   like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |  #可以看出已經(jīng)打開半同步復(fù)制
| rpl_semi_sync_slave_trace_level | 32    | #半同步調(diào)試級別為
+---------------------------------+-------+
2 rows in set (0.00 sec)

mysql>

主庫:
mysql> show status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 2     |
| Rpl_semi_sync_master_no_times              | 1     |
| Rpl_semi_sync_master_no_tx                 | 1     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 611   |
| Rpl_semi_sync_master_tx_wait_time          | 611   |
| Rpl_semi_sync_master_tx_waits              | 1     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 1     |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)

mysql>

Rpl_semi_sync_master_status表示主云服務(wù)器使用是異步還是半同步復(fù)制

Rpl_semi_sync_master_client表示從云服務(wù)器有多少個配置成半同步復(fù)制

Rpl_semi_sync_master_yes_tx表示從云服務(wù)器確認成功提交的數(shù)量

Rpl_semi_sync_master_no_tx表示從云服務(wù)器確認失敗提交的數(shù)量

############################################################
測試
從庫 stop slave;
主庫創(chuàng)建一個庫
create  database te;   #創(chuàng)建的時候特別慢 需要超時 10s,但是能創(chuàng)建成功
show status like '%semi%';
Rpl_semi_sync_master_status                | OFF   ##半同步已經(jīng)轉(zhuǎn)換為異步復(fù)制
從庫 start slave;
主庫又切換為半同步復(fù)制,

反思:有半同步的原理可以知道 半同步在一定程度上確保了主從一致,但是效率確實別異步復(fù)制低,具體測試我沒測試

看了以上關(guān)于mysql5.5以上實現(xiàn)半同步復(fù)制方法詳細內(nèi)容,是否有所收獲。如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI