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

溫馨提示×

溫馨提示×

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

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

MySQL的半同步復制

發布時間:2020-08-12 00:23:55 來源:ITPUB博客 閱讀:108 作者:orclwujian 欄目:MySQL數據庫

MySQL5.5 除了支持內置的異步復制機制,還提供了接口支持半同步復制的機制。

異步復制的缺點:

MySQL復制默認是異步復制,Master將事件寫入binlog,但并不知道Slave是否或何時已經接收且已處理。在異步復制的機制的情況下,如果Master宕機,事務在Master上已提交,但很可能這些事務沒有傳到任何的Slave上。假設有Master->Salve故障轉移的機制,此時Slave也可能會丟失事務。

半同步復制的概念:
i.
當Slave主機連接到Master時,能夠查看其是否處于半同步復制的機制。

ii.
當Master上開啟半同步復制的功能時,至少應該有一個Slave開啟其功能。此時,一個線程在Master上提交事務將受到阻塞,直到得知一個已開啟半同步復制功能的Slave已收到此事務的所有事件,或等待超時。

iii.
當一個事務的事件都已寫入其relay-log中且已刷新到磁盤上,Slave才會告知已收到。

iv.
如果等待超時,也就是Master沒被告知已收到,此時Master會自動轉換為異步復制的機制。當至少一個半同步的Slave趕上了,Master與其Slave自動轉換為半同步復制的機制。

v.
半同步復制的功能要在Master,Slave都開啟,半同步復制才會起作用;否則,只開啟一邊,它依然為異步復制。


同步,異步,半同步復制的比較:

同步復制:Master提交事務,直到事務在所有的Slave都已提交,此時才會返回客戶端,事務執行完畢。缺點:完成一個事務可能會有很大的延遲。

異步復制:當Slave準備好才會向Master請求binlog。缺點:不能保證一些事件都能夠被所有的Slave所接收。

半同步復制:半同步復制工作的機制處于同步和異步之間,Master的事務提交阻塞,只要一個Slave已收到該事務的事件且已記錄。它不會等待所有的Slave都告知已收到,且它只是接收,并不用等其完全執行且提交。

半同步復制的控制變量,狀態監控變量:

控制變量

Variable Name Variable Scope Dynamic Variable Type Default Effect Host
rpl_semi_sync_master_enabled Global Yes boolean OFF Master
rpl_semi_sync_slave_enabled Global Yes boolean OFF Slave
rpl_semi_sync_master_timeout Global Yes numeric 10000 Master


解釋:

rpl_semi_sync_master_enabled是控制Master是否開啟半同步,開啟或不開啟,將其設置為ON或OFF(1or0).

rpl_semi_sync_master_timeout是控制Master等待多長時間被告知Slave已收到,也就是所謂的超時時間。

rpl_semi_sync_slave_enabled是控制Slave是否開啟半同步,開啟或不開啟,將其設置為ON或OFF(1or0)。

監控半同步復制的狀態變量(幾個常用的)

Rpl_semi_sync_master_clients:查看有多少個開啟半同步復制的插件的Slave

Rpl_semi_sync_master_status:查看在Master上半同步復制是否正在運行,其值為ON時,說明Master已啟用半同步且已被告知有Slave收到;其值為OFF時,說明Master沒啟用半同步或是沒被告知,由于timeout等原因。

Rpl_semi_sync_master_no_tx:查看有多少事務沒有用半同步復制的機制進行復制。

Rpl_semi_sync_master_yes_tx:查看有多少事務是通過半同步復制機制成功復制。

Rpl_semi_sync_slave_status:查看Slave上半同步復制是否正常運行,其值為ON時,說明Slave正通過半同步復制且Slave I/O正在運行;為OFF時,反之。

說明關于其它的請參閱:http://dev.mysql.com/doc/refman/5.5/en/index.html

半同步復制的安裝,配置 http://www.linuxidc.com

環境要求:
i.
MySQL5.5或以上版本

ii.
在MySQL上安裝插件需要數據庫支持動態載入。檢查是否支持,用如下檢測:

mysql> show global variables like 'have_dynamic_loading';

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

| Variable_name        | Value |

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

| have_dynamic_loading | YES  |

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

1 row in set (0.00 sec)


iii.半同步復制是基于復制的環境。也就是說配置半同步復制前,已有復制的環境。

安裝:

在Master上執行:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';


各個Slave上執行:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';


如果不清楚Plugin的目錄,用如下查找:

mysql> show global variables like 'plugin_dir';

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

| Variable_name | Value                            |

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

| plugin_dir    | /opt/usr/local/mysql/lib/plugin/ |

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


檢查Plugin是否已正確安裝:

mysql> show plugins;

or

mysql> select * from information_schema.plugins;

配置:

在Master上執行:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SET GLOBAL rpl_semi_sync_master_timeout = N;


在Slave上執行:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

說明:http://www.linuxidc.com

如果在一個正在運行的Slave上開啟半同步復制的功能,必須先停止Slave I/O,將其啟用半同步后,再開啟Slave I/O.

mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;


如果不這樣做,Slave還是會以異步的方式進行復制。

正如大家所知,如果不將變量的設置寫到配置文件,下次重啟數據庫,將失效。寫入配置文件:

Master上:

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000 # 1 second


Slave上:

[mysqld]

rpl_semi_sync_slave_enabled=1

總結:半同步復制個人感覺是維持數據完整性,安全性的的一個策略,雖會損失一點性能,還是值得的。配置很簡單,關鍵是理解其工作機制。
mysql半同步復制機制和oracle DG的最大高可用模式有異曲同工之妙,mysql的同步機制則和 oracle DG的最大保護模式相似,mysql異步機制和oracle DG最大性能模式相似

向AI問一下細節

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

AI

吴堡县| 东方市| 拉萨市| 双柏县| 德州市| 五常市| 兴文县| 奈曼旗| 额尔古纳市| 正安县| 城市| 楚雄市| 太和县| 海林市| 青铜峡市| 顺昌县| 本溪| 那坡县| 肥东县| 迭部县| 新巴尔虎左旗| 南京市| 诸城市| 金坛市| 寻乌县| 兰州市| 嘉荫县| 平潭县| 夏邑县| 凤冈县| 隆子县| 东乡族自治县| 宁国市| 开平市| 崇阳县| 峨眉山市| 城固县| 扎囊县| 赫章县| 沂水县| 杭州市|