亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

MySQL半同步復制 - 優點、缺點、配置

發布時間:2020-06-25 18:10:36 來源:網絡 閱讀:729 作者:insist_way 欄目:MySQL數據庫

說到半同步復制,就得先說說復制的三種方法:

異步復制:

對于異步復制而言,Master主機將事件寫入到binlog日志后,并不保證所有的事件都已經復制到slave主機,因此如果Master和Slave之間有網絡延遲,就會造成暫時的數據不一致的現象;如果Master出故障,而數據還沒有復制過去,則會造成數據丟失;但也有好處,效率較其他兩種復制方式高


半同步復制:

對于半同步復制而言,Master主機將事件發送給Slave主機后會觸發一個等待,直到其中一個Slave節點(如果有多個Slave)返回數據復制成功的信息給Master,由此增強了數據的一致性,但是因為Master主機的確認開銷,會損耗一部分的性能;另外,半同步復制除了不需要等待所有Slave主機確認事件的接收外,半同步數據復制并不要求那些事件完全地執行,因此,仍有可能看到在Slave主機上數據復制延遲的發生,如果因為網絡延遲等原因造成Slave遲遲沒有返回復制成功的信息,超過了Master設置的超時時長(rpl_semi_sync_master_timeout),半同步復制就降級為異步復制方式,而后繼續數據復制


同步復制:

對于同步復制而言,Master主機將事件發送給Slave主機后會觸發一個等待,直到所有Slave節點(如果有多個Slave)返回數據復制成功的信息給Master。這種復制方式最安全,但是同時,效率也是最差的


小結:

以上三種復制方法,沒有絕對的優劣之分,根據自己的業務效率需求和對數據一致性、安全性的要求,自行選擇


半同步復制插件的安裝:(筆者線上MySQL使用的是5.6.16-log版本)


1、首先確認是否支持動態加載插件:(半同步復制是通過MySQL提供的插件來實現的)

Master、Slave主機主機都要確認

mysql> show variables like 'have_dynamic_loading';

+----------------------+-------+
| Variable_name??????? | Value |
+----------------------+-------+
| have_dynamic_loading | YES?? |
+----------------------+-------+


2、安裝插件:

Master主機:

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

Query OK, 0 rows affected (0.08 sec)


查看插件列表時,最后一個就是剛安裝的半同步復制插件:

mysql> show plugins;
+----------------------------+----------+--------------------+--------------------+---------+
| Name?????????????????????? | Status?? | Type?????????????? | Library??????????? | License |
+----------------------------+----------+--------------------+--------------------+---------+
| rpl_semi_sync_master?????? | ACTIVE?? | REPLICATION??????? | semisync_master.so | GPL???? |

+----------------------------+----------+--------------------+--------------------+---------+


Slave主機:

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

Query OK, 0 rows affected (0.07 sec)


mysql> show plugins;

+----------------------------+----------+--------------------+--------------------+---------+
| Name?????????????????????? | Status?? | Type?????????????? | Library??????????? | License |
+----------------------------+----------+--------------------+--------------------+---------+
| rpl_semi_sync_slave?????? | ACTIVE?? | REPLICATION??????? | semisync_slave.so | GPL???? |

+----------------------------+----------+--------------------+--------------------+---------+


注意:如果安裝插件時,不能安裝成功,先檢查下MySQL插件目錄下,是否有對應的插件存在

mysql> show variables like '%plugin%';
+---------------+-------------------------------+
| Variable_name | Value???????????????????????? |
+---------------+-------------------------------+
| plugin_dir??? | /usr/local/mysql//lib/plugin/ |
+---------------+-------------------------------+
1 row in set (0.00 sec)


3、開啟半同步復制功能

Master主機:

mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like 'rpl_semi_sync_master_enabled';
+------------------------------+-------+
| Variable_name??????????????? | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON??? |
+------------------------------+-------+
1 row in set (0.00 sec)


查看Master錯誤日志顯示半同步復制信息:

cat master.err

2019-05-14 15:50:50 1465 [Note] Semi-sync replication initialized for transactions.
2019-05-14 15:50:50 1465 [Note] Semi-sync replication enabled on the master.


Slave主機:

mysql> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.01 sec)

mysql>? show global variables like 'rpl_semi_sync_slave_enabled';
+-----------------------------+-------+
| Variable_name?????????????? | Value |
+-----------------------------+-------+
| rpl_semi_sync_slave_enabled | ON??? |
+-----------------------------+-------+
1 row in set (0.00 sec)


注意:

為了防止這些動態的半同步復制參數在服務器重啟后失效,需要寫入到配置文件中,使其永久生效:

Master主機配置:

[mysqld]

rpl_semi_sync_master_enabled = 1

rpl_semi_sync_master_timeout = 1000


Slave主機配置:

[mysqld]

rpl_semi_sync_slave_enabled = 1


4、在Master主機通過MySQL狀態變量來監控半同步復制情況

mysql> show global status like 'rpl%';
+--------------------------------------------+-------+
| Variable_name????????????????????????????? | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients?????????????? | 0???? |
| Rpl_semi_sync_master_net_avg_wait_time???? | 4803? |
| Rpl_semi_sync_master_net_wait_time???????? | 4803? |
| Rpl_semi_sync_master_net_waits???????????? | 1???? |
| 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????? | 1975? |
| Rpl_semi_sync_master_tx_wait_time????????? | 1975? |
| 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官網


注意:

如果你配置好了半同步,在Master變更了數據,Slave也能夠正常的同步數據,但是在監控半同步復制情況時,發現Rpl_semi_sync_master_status值為OFF,但rpl_semi_sync_master_enabled為ON,說明之前依然是采用的異步復制方式,此時需要重啟Slave,才能使用半同步復制方式生效


查看半同步復制相關的系統變量:

mysql> show global variables like 'rpl_semi%';
+------------------------------------+-------+
| Variable_name????????????????????? | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled?????? | ON??? |
| rpl_semi_sync_master_timeout?????? | 10000 |? Master提交事件后,等待Slave的確認信息超時后,切換到異步復制模式的時間

| rpl_semi_sync_master_trace_level?? | 32??? |
| rpl_semi_sync_master_wait_no_slave | ON??? |
+------------------------------------+-------+
4 rows in set (0.00 sec)

參數含義,具體參考MySQL官網


半同步數據復制可以在等待確認超時發生的時候降級為異步復制:

1、在Slave上模擬網絡出現了問題

ifdown eth0(網絡關掉后,第三方客戶端,如:Xshell等會斷)


2.1在Maser上更新一條數據:

mysql> update edusoho_e.t1 set xname='MySQL' where id=39;
Query OK, 1 row affected (10.04 sec)?? 因為Master需要等待Slave的確認信息,所以需要10s,這也說明半同步復制是成功的
Rows matched: 1? Changed: 1? Warnings: 0


2.2查看Master錯誤日志,可以看到半同步復制已經降級了(不過數據還是能夠復制到Slave的)

cat master.err

2019-05-14 15:59:39 1465 [Warning] Timeout waiting for reply of binlog (file: mysql-bin.000004, pos: 2860), semi-sync up to file mysql-bin.000004, position 2606.
2019-05-14 15:59:39 1465 [Note] Semi-sync replication switched OFF


記得將Slave的網卡開啟

ifup eth0


卸載半同步復制插件:

如果不再需要半同步復制方式,可以將半同步復制插件卸載掉:

mysql> uninstall plugin rpl_semi_sync_master; (Slave主機是rpl_semi_sync_slave




向AI問一下細節

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

AI

长岛县| 平谷区| 来安县| 常德市| 新民市| 安新县| 德保县| 张家川| 尖扎县| 金寨县| 库车县| 芜湖县| 蕉岭县| 泰和县| 长寿区| 普定县| 赤峰市| 平远县| 盐源县| 峨山| 疏勒县| 安图县| 桃源县| 河池市| 璧山县| 内乡县| 枞阳县| 廊坊市| 庆阳市| 肇庆市| 霍山县| 龙陵县| 蛟河市| 玉田县| 巫溪县| 黄浦区| 罗城| 宁阳县| 崇文区| 大田县| 巩留县|