本篇內(nèi)容主要講解“MySQL主從同步機(jī)制原理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“mysql主從同步機(jī)制原理”吧!
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
1、binlog+pos同步(默認(rèn)為異步)
從服務(wù)器通過IO進(jìn)程讀取主庫的binlog,寫入到relay_log中,
從服務(wù)器通過sql running進(jìn)程讀取從庫的relay_log,并寫入到從庫的bin_Log實現(xiàn)同步
我們生產(chǎn)一般使用row模式,因為有些函數(shù)在使用mix和state模式可能會報錯。
2、半同步(5.5開始)
半同步就是就是用戶向mysql寫入數(shù)據(jù),先寫入到主庫,然后生成binlog日志。主庫等待從庫來取binlog日志,如果從庫超過10秒沒有來獲取binlog日志。主庫自動轉(zhuǎn)換為異步,以后用戶寫入數(shù)據(jù)生成binlog日志,等待用戶自己來取,沒有取到主庫也不在管理。
介于異步復(fù)制和全同步復(fù)制之間,主庫在執(zhí)行完客戶端提交的事務(wù)后不是立刻返回給客戶端,而是等待至少一個從庫接收到并寫到relay log中才返回給客戶端。相對于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時它也造成了一定程度的延遲,這個延遲最少是一個TCP/IP往返的時間。所以,半同步復(fù)制最好在低延時的網(wǎng)絡(luò)中使用。
在沒有指明的情況下,默認(rèn)都是異步復(fù)制。
3、GTID同步(5.6.10開始)
使用UUID+事務(wù)ID作為全局事物標(biāo)識,UUID為每臺機(jī)器的標(biāo)識符,事務(wù)ID記錄最新的事務(wù),不在使用binlog+pos開啟復(fù)制。而是使用master_auto_postion=1的方式自動匹配GTID斷點進(jìn)行復(fù)制。
4、group replication(5.7.17開始)
基于傳統(tǒng)異步復(fù)制和半同步復(fù)制的缺陷——數(shù)據(jù)的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復(fù)制,也就是MGR。
由若干個節(jié)點共同組成一個復(fù)制組,一個事務(wù)的提交,必須經(jīng)過組內(nèi)大多數(shù)節(jié)點(N / 2 + 1)決議并通過,才能得以提交。由3個節(jié)點組成一個復(fù)制組,Consensus層為一致性協(xié)議層,在事務(wù)提交過程中,發(fā)生組間通訊,由2個節(jié)點決議(certify)通過這個事務(wù),事務(wù)才能夠最終得以提交并響應(yīng)。
半同步的開啟方法和前提條件:
要想使用半同步復(fù)制,必須滿足以下幾個條件:
1. MySQL 5.5及以上版本
2. 變量have_dynamic_loading為YES
3. 異步復(fù)制已經(jīng)存在
1、首先加載插件,主從分別安裝插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
2、查看插件是否安裝成功。
1、show plugins;
rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL
2、mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
3、啟動半同步復(fù)制(也可以寫在配置文件中)
SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
4、重啟從上的IO線程
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
5、檢查半同步是否正確運(yùn)行
mysql> show status like 'Rpl_semi_sync_master_status';
mysql> show status like 'Rpl_semi_sync_slave_status';
均顯示為ON則正常啟動。
到此,相信大家對“mysql主從同步機(jī)制原理”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站標(biāo)題:mysql主從同步機(jī)制原理
本文鏈接:http://chinadenli.net/article4/gdeeoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站收錄、品牌網(wǎng)站設(shè)計、全網(wǎng)營銷推廣、搜索引擎優(yōu)化、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)