日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异地多活场景下的数据同步之道 | 珍藏版

發(fā)布時間:2025/3/21 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异地多活场景下的数据同步之道 | 珍藏版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在當今互聯(lián)網(wǎng)行業(yè),大多數(shù)互聯(lián)網(wǎng)從業(yè)者對"單元化"、"異地多活"這些詞匯已經(jīng)耳熟能詳。而數(shù)據(jù)同步是異地多活的基礎(chǔ),所有具備數(shù)據(jù)存儲能力的組件如:數(shù)據(jù)庫、緩存、MQ等,數(shù)據(jù)都可以進行同步,形成一個龐大而復雜的數(shù)據(jù)同步拓撲。

本文將先從概念上介紹單元化、異地多活、就近訪問等基本概念。之后,將以數(shù)據(jù)庫為例,講解在數(shù)據(jù)同步的情況下,如何解決數(shù)據(jù)回環(huán)、數(shù)據(jù)沖突、數(shù)據(jù)重復等典型問題。

1 什么是單元化

如果僅僅從"單元化”這個詞匯的角度來說,我們可以理解為將數(shù)據(jù)劃分到多個單元進行存儲。"單元"是一個抽象的概念,通常與數(shù)據(jù)中心(IDC)概念相關(guān),一個單元可以包含多個IDC,也可以只包含一個IDC。本文假設(shè)一個單元只對應(yīng)一個IDC。

考慮一開始只有一個IDC的情況,所有用戶的數(shù)據(jù)都會寫入同一份底層存儲中,如下圖所示:

?? ???這種架構(gòu)是大多數(shù)中小型互聯(lián)網(wǎng)公司采用的方案,存在以下幾個問題:

? ? ? 1 不同地區(qū)的用戶體驗不同。一個IDC必然只能部署在一個地區(qū),例如部署在北京,那么北京的用戶訪問將會得到快速響應(yīng);但是對于上海的用戶,訪問延遲一般就會大一點,上海到北京的一個RTT可能有20ms左右。

?? ?? 2 容災(zāi)問題。這里容災(zāi)不是單臺機器故障,而是指機房斷電,自然災(zāi)害,或者光纖被挖斷等重大災(zāi)害。一旦出現(xiàn)這種問題,將無法正常為用戶提供訪問,甚至出現(xiàn)數(shù)據(jù)丟失的情況。這并不是不可能,例如:2015年,支付寶杭州某數(shù)據(jù)中心的光纜就被挖斷過;2018年9月,云棲大會上,螞蟻金服當場把杭州兩個數(shù)據(jù)中心的網(wǎng)線剪斷。? ? ??

? ? ?為了解決這些問題,我們可以將服務(wù)部署到多個不同的IDC中,不同IDC之間的數(shù)據(jù)互相進行同步。如下圖:

?

? ? ?通過這種方式,我們可以解決單機房遇到的問題:

?? ?? 1 用戶體驗。不同的用戶可以選擇離自己最近的機房進行訪問。

?? ?? 2 容災(zāi)問題。當一個機房掛了之后,我們可以將這個機房用戶的流量調(diào)度到另外一個正常的機房,由于不同機房之間的數(shù)據(jù)是實時同步的,用戶流量調(diào)度過去后,也可以正常訪問數(shù)據(jù) (故障發(fā)生那一刻的少部分數(shù)據(jù)可能會丟失)。

? ? ? ? ?需要注意的是,關(guān)于容災(zāi),存在一個容災(zāi)級別的劃分,例如:單機故障,機架(rack)故障,機房故障,城市級故障等。我們這里只討論機房故障和城市故障。

  • 機房容災(zāi) :?上面的案例中,我們使用了2個IDC,但是2個IDC并不能具備機房容災(zāi)能力。至少需要3個IDC,例如,一些基于多數(shù)派協(xié)議的一致性組件,如zookeeper,redis、etcd、consul等,需要得到大部分節(jié)點的同意。例如我們部署了3個節(jié)點,在只有2個機房的情況下, 必然是一個機房部署2個節(jié)點,一個機房部署一個節(jié)點。當部署了2個節(jié)點的機房掛了之后,只剩下一個節(jié)點,無法形成多數(shù)派。在3機房的情況下,每個機房部署一個節(jié)點,任意一個機房掛了,還剩2個節(jié)點,還是可以形成多數(shù)派。這也就是我們常說的"兩地三中心”。

  • 城市級容災(zāi):在發(fā)生重大自然災(zāi)害的情況下,可能整個城市的機房都無法訪問。一些組件,例如螞蟻的ocean base,為了達到城市級容災(zāi)的能力,使用的是"三地五中心"的方案。這種情況下,3個城市分別擁有2、2、1個機房。當整個城市發(fā)生災(zāi)難時,其他兩個城市至少可以保證有3個機房依然是存活的,同樣可以形成多數(shù)派。

小結(jié):如果僅僅是考慮不同地區(qū)的用戶數(shù)據(jù)就近寫入距離最近的IDC,這是純粹意義上的”單元化”。不同單元之間的數(shù)據(jù)實時進行同步,相互備份對方的數(shù)據(jù),才能做到真正意義上"異地多活”。實現(xiàn)單元化,技術(shù)層面我們要解決的事情很多,例如:流量調(diào)度,即如何讓用戶就近訪問附近的IDC;數(shù)據(jù)互通,如何實現(xiàn)不同機房之間數(shù)據(jù)的相互同步。流量調(diào)度不在本文的討論范疇內(nèi),數(shù)據(jù)同步是本文講解的重點。

2 如何實現(xiàn)數(shù)據(jù)同步

需要同步的組件有很多,例如數(shù)據(jù)庫,緩存等,這里以多個Mysql集群之間的數(shù)據(jù)同步為例進行講解,實際上緩存的同步思路也是類似。

2.1 基礎(chǔ)知識

為了了解如何對不同mysql的數(shù)據(jù)相互進行同步,我們先了解一下mysql主從復制的基本架構(gòu),如下圖所示:

通常一個mysql集群有一主多從構(gòu)成。用戶的數(shù)據(jù)都是寫入主庫Master,Master將數(shù)據(jù)寫入到本地二進制日志binary log中。從庫Slave啟動一個IO線程(I/O Thread)從主從同步binlog,寫入到本地的relay log中,同時slave還會啟動一個SQL Thread,讀取本地的relay log,寫入到本地,從而實現(xiàn)數(shù)據(jù)同步。

基于這個背景知識,我們就可以考慮自己編寫一個組件,其作用類似與mysql slave,也是去主庫上拉取binlog,只不過binlog不是保存到本地,而是將binlog轉(zhuǎn)換成sql插入到目標mysql集群中,實現(xiàn)數(shù)據(jù)的同步。

?? ?? ? 這并非是一件不可能完成的事,MySQL官網(wǎng)上已經(jīng)提供好所有你自己編寫一個mysql slave 同步binlog所需的相關(guān)背景知識,訪問這個鏈接:https://dev.mysql.com/doc/internals/en/client-server-protocol.html,你將可以看到mysql 客戶端與服務(wù)端的通信協(xié)議。下圖紅色框中展示了Mysql主從復制的相關(guān)協(xié)議:

?? ??? ?

?? ?? ? 當然,筆者的目的并不是希望讀者真正的按照這里的介紹嘗試編寫一個mysql 的slave,只是想告訴讀者,模擬mysql slave拉取binlog并非是一件很神奇的事,只要你的網(wǎng)絡(luò)基礎(chǔ)知識夠扎實,完全可以做到。然而,這是一個龐大而復雜的工作。以一人之力,要完成這個工作,需要占用你大量的時間。好在,現(xiàn)在已經(jīng)有很多開源的組件,已經(jīng)實現(xiàn)了按照這個協(xié)議可以模擬成一個mysql的slave,拉取binlog。例如:

  • 阿里巴巴開源的canal

  • 美團開源的puma

  • linkedin開源的databus? ? ? ?...

?? ?? 你可以利用這些組件來完成數(shù)據(jù)同步,而不必重復造輪子。 假設(shè)你采用了上面某個開源組件進行同步,需要明白的是這個組件都要完成最基本的2件事:從源庫拉取binlog并進行解析,筆者把這部分功能稱之為binlog syncer;將獲取到的binlog轉(zhuǎn)換成SQL插入目標庫,這個功能稱之為sql writer。

?? ?? 為什么劃分成兩塊獨立的功能?因為binlog訂閱解析的實際應(yīng)用場景并不僅僅是數(shù)據(jù)同步,如下圖:

? ? ?? ?如圖所示,我們可以通過binlog來做很多事,如:

  • 實時更新搜索引擎,如es中的索引信息

  • 實時更新redis中的緩存

  • 發(fā)送到kafka供下游消費,由業(yè)務(wù)方自定義業(yè)務(wù)邏輯處理等

  • ...

? ? ?? ?因此,通常我們把binlog syncer單獨作為一個模塊,其只負責解析從數(shù)據(jù)庫中拉取并解析binlog,并在內(nèi)存中緩存(或持久化存儲)。另外,binlog syncer另外提一個sdk,業(yè)務(wù)方通過這個sdk從binlog syncer中獲取解析后的binlog信息,然后完成自己的特定業(yè)務(wù)邏輯處理。

?? ?? ? 顯然,在數(shù)據(jù)同步的場景下,我們可以基于這個sdk,編寫一個組件專門用于將binlog轉(zhuǎn)換為sql,插入目標庫,實現(xiàn)數(shù)據(jù)同步,如下圖所示:

?? ??? ?北京用戶的數(shù)據(jù)不斷寫入離自己最近的機房的DB,通過binlog syncer訂閱這個庫binlog,然后下游的binlog writer將binlog轉(zhuǎn)換成SQL,插入到目標庫。上海用戶類似,只不過方向相反,不再贅述。通過這種方式,我們可以實時的將兩個庫的數(shù)據(jù)同步到對端。當然事情并非這么簡單,我們有一些重要的事情需要考慮。

2.2 如何獲取全量+增量數(shù)據(jù)?

? ? ?? ?通常,mysql不會保存所有的歷史binlog。原因在于,對于一條記錄,可能我們會更新多次,這依然是一條記錄,但是針對每一次更新操作,都會產(chǎn)生一條binlog記錄,這樣就會存在大量的binlog,很快會將磁盤占滿。因此DBA通常會通過一些配置項,來定時清理binlog,只保留最近一段時間內(nèi)的binlog。

? ? ? ?例如,官方版的mysql提供了expire_logs_days配置項,可以設(shè)置保存binlog的天數(shù),筆者這里設(shè)置為0,表示默認不清空,如果將這個值設(shè)置大于0,則只會保存指定的天數(shù)。

? ? ? 另外一些mysql 的分支,如percona server,還可以指定保留binlog文件的個數(shù)。我們可以通過show binary logs來查看當前mysql存在多少個binlog文件,如下圖:

?

? ? ?? ?通常,如果binlog如果從來沒被清理過,那么binlog文件名字后綴通常是000001,如果不是這個值,則說明可能已經(jīng)被清理過。當然,這也不是絕對,例如執(zhí)行"reset master”命令,可以將所有的binlog清空,然后從000001重新開始計數(shù)。

? ? ? ?Whatever! 我們知道了,binlog可能不會一直保留,所以直接同步binlog,可能只能獲取到部分數(shù)據(jù)。因此,通常的策略是,由DBA先dump一份源庫的完整數(shù)據(jù)快照,增量部分,再通過binlog訂閱解析進行同步。

2.3?如何解決重復插入

考慮以下情況下,源庫中的一條記錄沒有唯一索引。對于這個記錄的binlog,通過sql writer將binlog轉(zhuǎn)換成sql插入目標庫時,拋出了異常,此時我們并不知道知道是否插入成功了,則需要進行重試。如果之前已經(jīng)是插入目標庫成功,只是目標庫響應(yīng)時網(wǎng)絡(luò)超時(socket timeout)了,導致的異常,這個時候重試插入,就會存在多條記錄,造成數(shù)據(jù)不一致。

因此,通常,在數(shù)據(jù)同步時,通常會限制記錄必須有要有主鍵或者唯一索引。

2.4?如何解決唯一索引沖突

?由于兩邊的庫都存在數(shù)據(jù)插入,如果都使用了同一個唯一索引,那么在同步到對端時,將會產(chǎn)生唯一索引沖突。對于這種情況,通常建議是使用一個全局唯一的分布式ID生成器來生成唯一索引,保證不會產(chǎn)生沖突。

另外,如果真的產(chǎn)生沖突了,同步組件應(yīng)該將沖突的記錄保存下來,以便之后的問題排查。

2.5?對于DDL語句如何處理

如果數(shù)據(jù)庫表中已經(jīng)有大量數(shù)據(jù),例如千萬級別、或者上億,這個時候?qū)τ谶@個表的DDL變更,將會變得非常慢,可能會需要幾分鐘甚至更長時間,而DDL操作是會鎖表的,這必然會對業(yè)務(wù)造成極大的影響。

因此,同步組件通常會對DDL語句進行過濾,不進行同步。DBA在不同的數(shù)據(jù)庫集群上,通過一些在線DDL工具(如gh-ost),進行表結(jié)構(gòu)變更。

2.6?如何解決數(shù)據(jù)回環(huán)問題

數(shù)據(jù)回環(huán)問題,是數(shù)據(jù)同步過程中,最重要的問題。我們針對INSERT、UPDATE、DELETE三個操作來分別進行說明:

INSERT操作

假設(shè)在A庫插入數(shù)據(jù),A庫產(chǎn)生binlog,之后同步到B庫,B庫同樣也會產(chǎn)生binlog。由于是雙向同步,這條記錄,又會被重新同步回A庫。由于A庫應(yīng)存在這條記錄了,產(chǎn)生沖突。

UPDATE操作

先考慮針對A庫某條記錄R只有一次更新的情況,將R更新成R1,之后R1這個binlog會被同步到B庫,B庫又將R1同步會A庫。對于這種情況下,A庫將不會產(chǎn)生binlog。因為A庫記錄當前是R1,B庫同步回來的還是R1,意味著值沒有變。

在一個更新操作并沒有改變某條記錄值的情況下,mysql是不會產(chǎn)生binlog,相當于同步終止。下圖演示了當更新的值沒有變時,mysql實際上不會做任何操作:

? ??

?? ??? ?上圖演示了,數(shù)據(jù)中原本有一條記錄(1,"tianshouzhi”),之后執(zhí)行一個update語句,將id=1的記錄的name值再次更新為”tianshouzhi”,意味著值并沒有變更。這個時候,我們看到mysql 返回的影響的記錄函數(shù)為0,也就是說,并不會產(chǎn)生真是的更新操作。

?? ???? ?然而,這并不意味UPDATE 操作沒有問題,事實上,其比INSERT更加危險。考慮A庫的記錄R被連續(xù)更新了2次,第一次更新成R1,第二次被更新成R2;這兩條記錄變更信息都被同步到B庫,B也產(chǎn)生了R1和R2。由于B的數(shù)據(jù)也在往A同步,B的R1會被先同步到A,而A現(xiàn)在的值是R2,由于值不一樣,將會被更新成R1,并產(chǎn)生新的binlog;此時B的R2再同步會A,發(fā)現(xiàn)A的值是R1,又更新成R2,也產(chǎn)生binlog。由于B同步回A的操作,讓A又產(chǎn)生了新的binlog,A又要同步到B,如此反復,陷入無限循環(huán)中。

DELETE操作

?? ??? ?同樣存在先后順序問題。例如先插入一條記錄,再刪除。B在A刪除后,又將插入的數(shù)據(jù)同步回A,接著再將A的刪除操作也同步回A,每次都會產(chǎn)生binlog,陷入無限回環(huán)。

?? ??? ?關(guān)于數(shù)據(jù)回環(huán)問題,筆者有著血的教訓,曾經(jīng)因為筆者的誤操作,將一個庫的數(shù)據(jù)同步到了自身,最終也導致無限循環(huán),原因分析與上述提到的UPDATE、DELETE操作類似,讀者可自行思考。

?? ??? ?針對上述數(shù)據(jù)同步到過程中可能會存在的數(shù)據(jù)回環(huán)問題,最終會導致數(shù)據(jù)無限循環(huán),因此我們必須要解決這個問題。由于存在多種解決方案,我們將在稍后統(tǒng)一進行講解。

?2.7 數(shù)據(jù)同步架構(gòu)設(shè)計

?? ?? ? 現(xiàn)在,讓我們先把思路先從解決數(shù)據(jù)同步的具體細節(jié)問題轉(zhuǎn)回來,從更高的層面講解數(shù)據(jù)同步的架構(gòu)應(yīng)該如何設(shè)計。稍后的內(nèi)容中,我們將講解各種避免數(shù)據(jù)回環(huán)的各種解決方案。

?? ??? ?前面的架構(gòu)中,只涉及到2個DB的數(shù)據(jù)同步,如果有多個DB數(shù)據(jù)需要相互同步的情況下,架構(gòu)將會變得非常復雜。例如:

? ? ?這個圖演示的是四個DB之間數(shù)據(jù)需要相互同步,這種拓撲結(jié)構(gòu)非常復雜。為了解決這種問題,我們可以將數(shù)據(jù)寫入到一個數(shù)據(jù)中轉(zhuǎn)站,例如MQ中進行保存,如下:

我們在不同的機房各部署一套MQ集群,這個機房的binlog syncer將需要同步的DB binlog數(shù)據(jù)寫入MQ對應(yīng)的Topic中。對端機房如果需要同步這個數(shù)據(jù),只需要通過binlog writer訂閱這個topic,消費topic中的binlog數(shù)據(jù),插入到目標庫中即可。一些MQ支持consumer group的概念,不同的consumer group的消費位置offset相互隔離,從而達到一份數(shù)據(jù),同時供多個消費者進行訂閱的能力。

當然,一些binlog訂閱解析組件,可能實現(xiàn)了類似于MQ的功能,此時,則不需要獨立部署MQ。

那么MQ應(yīng)該選擇什么呢?別問,問就是Kafka,具體原因問廝大。

????

3 數(shù)據(jù)據(jù)回環(huán)問題解決方案

?? ??? ?數(shù)據(jù)回環(huán)問題有多種解決方案,通過排除法,一一進行講解。

?3.1 同步操作不生成binlog

? ? ?? ?在mysql中,我們可以設(shè)置session變量,來控制當前會話上的更新操作,不產(chǎn)生binlog。這樣當往目標庫插入數(shù)據(jù)時,由于不產(chǎn)生binlog,也就不會被同步會源庫了。為了演示這個效果,筆者清空了本機上的所有binlog(執(zhí)行reset master),現(xiàn)在如下圖所示:

?? ?忽略這兩個binlog event,binlog文件格式最開始就是這兩個event。

????接著,筆者執(zhí)行set sql_log_bin=0,然后插入一條語句,最后可以看到的確沒有產(chǎn)生新的binlog事件:

?? ??? ?通過這種方式,貌似可以解決數(shù)據(jù)回環(huán)問題。目標庫不產(chǎn)生binlog,就不會被同步會源庫。但是,答案是否定的。我們是往目標庫的master插入數(shù)據(jù),如果不產(chǎn)生binlog,目標庫的slave也無法同步數(shù)據(jù),主從數(shù)據(jù)不一致。所以,需要排除這種方案。

?? ?? ? 提示:如果恢復set sql_log_bin=1,插入語句是會產(chǎn)生binlog,讀者可以自行模擬。

?3.2 控制binlog同步方向

?? ?? ? 既然不產(chǎn)生binlog不能解決問題。那么換一種思路,可以產(chǎn)生binlog。當把一個binlog轉(zhuǎn)換成sql時,插入某個庫之前,我們先判斷這條記錄是不是原本就是這個庫產(chǎn)生的,如果是,那么就拋棄,也可以避免回環(huán)問題。

?? ?? ? 現(xiàn)在問題就變?yōu)?#xff0c;如何給binlog加個標記,表示其實那個mysql集群產(chǎn)生的。這也有幾種方案,下面一一講述。

?3.2.1 ROW模式下的SQL

?? ?? ? mysql主從同步,binlog復制一般有3種模式。STATEMENT,ROW,MIXED。默認情況下,STATEMENT模式只記錄SQL語句,ROW模式只記錄字段變更前后的值,MIXED模式是二者混合。?binlog同步一般使用的都是ROW模式,高版本Mysql主從同步默認也是ROW模式。

我們想采取的方案是,在執(zhí)行的SQL之前加上一段特殊標記,表示這個SQL的來源。例如

/*IDC1:DB1*/insert into users(name) values("tianbowen")

?? ?? ? 其中/*IDC1:DB1*/是一個注釋,表示這個SQL原始在是IDC1的DB1中產(chǎn)生的。之后,在同步的時候,解析出SQL中的IDC信息,就能判斷出是不是自己產(chǎn)生的數(shù)據(jù)。

?? ?? ? 然而,ROW模式下,默認只記錄變更前后的值,不記錄SQL。所以,我們要通過一個開關(guān),讓Mysql在ROW模式下也記錄INSERT、UPDATE、DELETE的SQL語句。具體做法是,在mysql的配置文件中,添加以下配置:

binlog_rows_query_log_events =1

?? ?? ? 這個配置可以讓mysql在binlog中產(chǎn)生ROWS_QUERY_LOG_EVENT類型的binlog事件,其記錄的就是執(zhí)行的SQL。

? ? ? ? 通過這種方式,我們就記錄下的一個binlog最初是由哪一個集群產(chǎn)生的,之后在同步的時候,sql writer判斷目標機房和當前binlog中包含的機房相同,則拋棄這條數(shù)據(jù),從而避免回環(huán)。

?? ?? ? 這種思路,功能上沒問題,但是在實踐中,確非常麻煩。首先,讓業(yè)務(wù)對執(zhí)行的每條sql都加上一個這樣的標識,幾乎不可能。另外,如果忘記加了,就不知道數(shù)據(jù)的來源了。如果采用這種方案,可以考慮在數(shù)據(jù)庫訪問層中間件層面添加支持在sql之前增加/*..*/的功能,統(tǒng)一對業(yè)務(wù)屏蔽。即使這樣,也不完美,不能保證所有的sql都通過中間件來來寫入,例如DBA的一些日常運維操作,或者手工通過mysql命令行來操作數(shù)據(jù)庫時,肯定會存在沒有添加機房信息的情況。

?? ??? ?總的來說,這個方案不是那么完美。

?3.2.2 通過附加表

?? ??? ?這種方案目前很多知名互聯(lián)網(wǎng)公司在使用。大致思路是,在db中都加一張額外的表,例如叫direction,記錄一個binlog產(chǎn)生的源集群的信息。例如

CREATE?TABLE?`direction`?(`idc`?varchar(255)?not?null,`db_cluster`?varchar(255)?not?null, ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

idc字段用于記錄某條記錄原始產(chǎn)生的IDC,db_cluster用于記錄原始產(chǎn)生的數(shù)據(jù)庫集群(注意這里要使用集群的名稱,不能是server_id,因為可能會發(fā)生主從切換)。

??? ??假設(shè)用戶在IDC1的庫A插入的一條記錄(也可以在事務(wù)中插入多條記錄,單條記錄,即使不開啟事務(wù),mysql默認也會開啟事務(wù)):

BEGIN; insert?into?users(name)?values("tianshouzhi”); COMMIT;

那么A庫數(shù)據(jù)binlog通過sql writer同步到目標庫B時,sql writer可以提前對事務(wù)中的信息可以進行一些修改,,如下所示:

BEGIN; #往目標庫同步時,首先額外插入一條記錄,表示這個事務(wù)中的數(shù)據(jù)都是A產(chǎn)生的。 insert?into?direction(idc,db_cluster)?values("IDC1”,"DB_A”) #插入原來的記錄信息 insert?into?users(name)?values("tianshouzhi”); COMMIT;

之后B庫的數(shù)據(jù)往A同步時,就可以根據(jù)binlog中的第一條記錄的信息,判斷這個記錄原本就是A產(chǎn)生的,進行拋棄,通過這種方式來避免回環(huán)。這種方案已經(jīng)已經(jīng)過很多的公司的實際驗證。

3.2.3 通過GTID

Mysql 5.6引入了GTID(全局事務(wù)id)的概念,極大的簡化的DBA的運維。在數(shù)據(jù)同步的場景下,GTID依然也可以發(fā)揮極大的威力。

GTID 由2個部分組成:

server_uuid:transaction_id

其中server_uuid是mysql隨機生成的,全局唯一。transaction_id事務(wù)id,默認情況下每次插入一個事務(wù),transaction_id自增1。注意,這里并不會對GTID進行全面的介紹,僅說明其在數(shù)據(jù)同步的場景下,如何避免回環(huán)、數(shù)據(jù)重復插入的問題。

GTID提供了一個會話級變量gtid_next,指示如何產(chǎn)生下一個GTID。可能的取值如下:

  • AUTOMATIC: 自動生成下一個GTID,實現(xiàn)上是分配一個當前實例上尚未執(zhí)行過的序號最小的GTID。

  • ANONYMOUS: 設(shè)置后執(zhí)行事務(wù)不會產(chǎn)生GTID,顯式指定的GTID。

?? ?默認情況下,是AUTOMATIC,也就是自動生成的,例如我們執(zhí)行sql:

insert?into?users(name)?values("tianbowen”);

?? ?產(chǎn)生的binlog信息如下:

可以看到,GTID會在每個事務(wù)(Query->...->Xid)之前,設(shè)置這個事務(wù)下一次要使用到的GTID。

從源庫訂閱binlog的時候,由于這個GTID也可以被解析到,之后在往目標庫同步數(shù)據(jù)的時候,我們可以顯示的的指定這個GTID,不讓目標自動生成。也就是說,往目標庫,同步數(shù)據(jù)時,變成了2條SQL:

SET?GTID_NEXT=?'09530823-4f7d-11e9-b569-00163e121964:1’ insert into users(name) values("tianbowen")

???????由于我們顯示指定了GTID,目標庫就會使用這個GTID當做當前事務(wù)ID,不會自動生成。同樣,這個操作也會在目標庫產(chǎn)生binlog信息,需要同步回源庫。再往源庫同步時,我們按照相同的方式,先設(shè)置GTID,在執(zhí)行解析binlog后得到的SQL,還是上面的內(nèi)容

SET GTID_NEXT= '09530823-4f7d-11e9-b569-00163e121964:1'insert into users(name) values("tianbowen")

???????? ? ? ? 由于這個GTID在源庫中已經(jīng)存在了,插入記錄將會被忽略,演示如下:

mysql>?SET?GTID_NEXT=?'09530823-4f7d-11e9-b569-00163e121964:1'; Query?OK,?0?rows?affected?(0.00?sec) mysql>?insert?into?users(name)?values("tianbowen"); Query OK, 0 rows affected (0.01 sec) #注意這里,影響的記錄行數(shù)為0

???????注意這里,對于一條insert語句,其影響的記錄函數(shù)居然為0,也就會插入并沒有產(chǎn)生記錄,也就不會產(chǎn)生binlog,避免了循環(huán)問題。

如何做到的呢?mysql會記錄自己執(zhí)行過的所有GTID,當判斷一個GTID已經(jīng)執(zhí)行過,就會忽略。通過如下sql查看:

mysql>?show?global?variables?like?"gtid_executed";+---------------+------------------------------------------+|?Variable_name?|?Value????????????????????????????????????|+---------------+------------------------------------------+|?gtid_executed?|?09530823-4f7d-11e9-b569-00163e121964:1-5?|+---------------+------------------------------------------+

?? ?? ? 上述value部分,冒號":"前面的是server_uuid,冒號后面的1-5,是一個范圍,表示已經(jīng)執(zhí)行過1,2,3,4,5這個幾個transaction_id。這里就能解釋了,在GTID模式的情況下,為什么前面的插入語句影響的記錄函數(shù)為0了。

?? ?? ? 顯然,GTID除了可以幫助我們避免數(shù)據(jù)回環(huán)問題,還可以幫助我們解決數(shù)據(jù)重復插入的問題,對于一條沒有主鍵或者唯一索引的記錄,即使重復插入也沒有,只要GTID已經(jīng)執(zhí)行過,之后的重復插入都會忽略。

?? ?? ? 當然,我們還可以做得更加細致,不需要每次都往目標庫設(shè)置GTID_NEXT,這畢竟是一次網(wǎng)絡(luò)通信。sql writer在往目標庫插入數(shù)據(jù)之前,先判斷目標庫的server_uuid是不是和當前binlog事務(wù)信息攜帶的server_uuid相同,如果相同,則可以直接丟棄。查看目標庫的gtid,可以通過以下sql執(zhí)行:

mysql>?show?variables?like?"server_uuid";+---------------+--------------------------------------+|?Variable_name?|?Value????????????????????????????????|+---------------+--------------------------------------+|?server_uuid???|?09530823-4f7d-11e9-b569-00163e121964?|+---------------+--------------------------------------+

?? ?? ? GTID應(yīng)該算是一個終極的數(shù)據(jù)回環(huán)解決方案,mysql原生自帶,比添加一個輔助表的方式更輕量,開銷也更低。需要注意的是,這倒并不是一定說GTID的方案就比輔助表好,因為輔助表可以添加機房等額外信息。在一些場景下,如果下游需要知道這條記錄原始產(chǎn)生的機房,還是需要使用輔助表。

4 開源組件介紹canal/otter

前面深入講解了單元化場景下數(shù)據(jù)同步的基礎(chǔ)知識。讀者可能比較感興趣的是,哪些開源組件在這些方面做的比較好。筆者建議的首選,是canal/otter組合。

canal的作用就是類似于前面所述的binlog syncer,拉取解析binlog。otter是canal的客戶端,專門用于進行數(shù)據(jù)同步,類似于前文所講解的sql writer。并且,canal的最新版本已經(jīng)實現(xiàn)了GTID。

總結(jié)

以上是生活随笔為你收集整理的异地多活场景下的数据同步之道 | 珍藏版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产麻豆精品一区 | 热re99久久精品国产99热 | 区一区二区三区中文字幕 | 超碰精品在线 | 99精品久久久久久久久久综合 | 天海翼一区二区三区免费 | 免费看日韩 | 国产精品黄网站在线观看 | 亚洲欧美成人 | 黄色天堂在线观看 | 久草久草视频 | 国产精品久久久久免费 | 日韩在线视频在线观看 | 鲁一鲁影院 | 国内成人av| 免费网站黄色 | 天天躁日日躁狠狠躁av中文 | 亚洲日韩欧美一区二区在线 | 免费日韩在线 | 中文字幕色在线视频 | 精品久久久久一区二区国产 | 久久无码av一区二区三区电影网 | 一级免费黄视频 | 亚洲免费小视频 | 国产欧美在线一区 | 黄色一级片视频 | 亚洲年轻女教师毛茸茸 | 久久精品视频在线 | 探花视频网站 | 国产美女无遮挡永久免费 | 97精品国产一二三产区 | 操综合| 色婷婷色 | 韩国在线一区二区 | 日韩av一区在线观看 | 一区二区精品视频 | 色妞色视频一区二区三区四区 | 亚洲一级影院 | 婷婷综合电影 | 手机av资源| 99精品久久久久久久 | 天天色天天综合 | 成年人视频免费在线播放 | 国产成人中文字幕 | 五月色综合 | 成人网中文字幕 | 欧美另类成人 | 午夜色性片 | 久久精品视频网站 | 搡bbbb搡bbb视频 | 免费观看9x视频网站在线观看 | 在线观看www91 | 亚洲精品国偷拍自产在线观看 | 91在线免费公开视频 | av在线收看| 久久不卡视频 | 精品一二三四在线 | 五月天综合色 | 99在线精品免费视频九九视 | 狠狠狠狠狠狠天天爱 | 五月婷香蕉久色在线看 | 99精品视频中文字幕 | 欧美激情精品久久久久 | 在线观看香蕉视频 | 激情久久综合 | www.夜夜干.com| 91污视频在线观看 | 国产精品密入口果冻 | 99精品国产在热久久下载 | 欧美激情xxxx | a成人在线| 一区二区三区中文字幕在线观看 | 免费看成人a | 狠狠久久综合 | 天天天在线综合网 | 久久视频在线观看免费 | 亚洲一区二区视频在线 | 国产看片免费 | 欧美va天堂va视频va在线 | 成人午夜剧场在线观看 | 成人黄色片免费看 | 国产99亚洲| 天堂va欧美va亚洲va老司机 | 精品在线视频一区 | 国产麻豆视频在线观看 | 91av播放| av黄色在线| 五月天九九 | 六月天综合网 | 日韩av视屏 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 日本精品一区二区在线观看 | 亚洲精品在线观看av | 亚洲狠狠婷婷 | 欧美日韩在线观看一区二区三区 | va视频在线观看 | 国产福利精品一区二区 | 亚洲aⅴ在线 | 国产精品一区二区三区久久 | 三级在线国产 | 高清色免费 | 你操综合 | 人人澡人人草 | 特级免费毛片 | 激情影音先锋 | 久久免费视频在线观看30 | 国产不卡免费av | 丝袜+亚洲+另类+欧美+变态 | 久要激情网 | 米奇狠狠狠888 | 看片网站黄| 免费亚洲片 | 午夜精品久久久久久久爽 | 在线视频app | 一区二区三区四区精品 | 天天干天天干天天干天天干天天干天天干 | 免费成人结看片 | 99视频在线播放 | 日韩精品久久久久久久电影99爱 | 亚洲另类视频在线观看 | 日韩精品中文字幕在线观看 | 国产伦精品一区二区三区照片91 | 久久久久久久久综合 | 国色天香在线观看 | 人人澡人人爽 | 日韩精品视频在线免费观看 | 国产尤物一区二区三区 | 国产原创中文在线 | 国产视频二区三区 | 日韩专区av | 亚洲精品免费观看视频 | 婷婷激情5月天 | 91精品在线播放 | 久草资源在线观看 | 国产91电影在线观看 | 日韩极品在线 | 精品国产一区二区三区久久久蜜臀 | 成人小视频在线 | 国产黄色电影 | 91视频三区 | 超碰在线网 | 免费看国产a | 欧美日韩亚洲第一 | 久久精品这里精品 | 人人草在线观看 | 婷婷av网 | 国产精品黄网站在线观看 | 日韩av黄| 91精品成人久久 | 午夜色大片在线观看 | 五月婷婷丁香六月 | 天天色宗合 | 国产精品久久久777 成人手机在线视频 | 亚洲一区av | 狠狠做深爱婷婷综合一区 | 最近中文字幕大全中文字幕免费 | 精品国产伦一区二区三区观看方式 | 91色吧| 美女在线免费观看视频 | 国产一区二区在线免费播放 | 欧美日韩亚洲精品在线 | 亚洲国产精品久久久 | 亚洲香蕉视频 | 黄色美女免费网站 | 精品国产乱码久久久久久1区2匹 | 天天综合导航 | 精品一区二区在线看 | 久久av福利 | 国产二区视频在线 | 正在播放国产一区二区 | 国产剧情一区 | www最近高清中文国语在线观看 | 国产午夜精品理论片在线 | 久久不卡日韩美女 | 99热高清 | 国产成人久久精品 | 香蕉在线影院 | 精品一区二区在线看 | 中文字幕在线观看资源 | 日韩一区二区三区免费电影 | 欧美另类调教 | 超碰在线人人 | 人人干人人做 | 免费高清国产 | 亚洲伦理电影在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美一级视频一区 | 国产精品久久久久四虎 | 国产精品久久久久久电影 | 狠狠狠狠狠操 | 激情久久久久 | 国产69久久 | 色婷婷欧美 | 天天拍天天干 | 成人h在线 | 激情网站五月天 | 精品毛片久久久久久 | 麻豆传媒视频在线播放 | 久久一区91 | 亚洲激精日韩激精欧美精品 | 亚洲成人av影片 | 久久精品综合 | 伊人色综合久久天天 | 一区在线观看 | 国产成人久久久久 | 国产一区二区在线观看视频 | 午夜视频福利 | 在线观看黄色av | 13日本xxxxxⅹxxx20 | 狂野欧美激情性xxxx | 亚洲成年片 | 91精品久久久久久久久久久久久 | 亚洲五月婷婷 | 久久午夜国产 | 国产尤物视频在线 | 色久av| 99色国产 | 日本一区二区免费在线观看 | 免费观看www小视频的软件 | 欧美久久久一区二区三区 | 一本一道久久a久久精品 | 字幕网资源站中文字幕 | av网站免费在线 | 看片的网址 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 在线中文字幕观看 | 99热最新网址 | 国产一线在线 | 国产视频中文字幕在线观看 | 日夜夜精品视频 | 91av电影在线观看 | 中文字幕一区av | 久草在线电影网 | 国产在线观看高清视频 | 欧美日韩一区三区 | v片在线播放| 日本中文一区二区 | 国产啊v在线观看 | 日日爱网站 | 波多野结衣电影一区 | 日韩精品中文字幕在线不卡尤物 | 午夜精品福利在线 | 欧美a在线免费观看 | 免费日韩一区二区三区 | 91精品中文字幕 | 天天色视频 | 国产成人精品久久久 | 日韩系列在线 | 国产一区免费在线观看 | 国产精品一区二区在线观看免费 | 在线有码中文 | 香蕉视频网址 | 日韩黄色软件 | 久久在现视频 | 久久精品成人欧美大片古装 | 国产在线观看你懂得 | 97超碰色| 久久99在线视频 | 成人一级在线观看 | 免费看的毛片 | 免费看片网页 | 国产成人a亚洲精品v | 国产香蕉97碰碰久久人人 | 在线成人国产 | 亚洲精品在线观看网站 | 午夜精品久久久久久久99 | 91视频在线 | 成年人免费电影在线观看 | 国产91亚洲 | 欧美亚洲免费在线一区 | 国产精品入口麻豆 | 亚洲人成在线观看 | 狠狠躁日日躁狂躁夜夜躁av | 久久免费在线观看视频 | 亚洲一区日韩在线 | 亚洲永久精品在线观看 | www.少妇| 深爱五月激情五月 | 四虎在线观看精品视频 | 婷婷开心久久网 | 五月婷婷六月丁香 | 96久久 | 香蕉视频国产在线 | 欧美成人h版在线观看 | 丝袜精品视频 | 在线观看av中文字幕 | 中文字幕日韩有码 | 国产精品 9999 | 久久久久女人精品毛片 | 日韩av不卡播放 | 成人av电影免费在线播放 | 免费看黄色大全 | 成人a级免费视频 | 青春草视频在线播放 | 在线日韩视频 | 国产精品久久久久久久久久久免费看 | 永久免费视频国产 | 日本三级国产 | 天堂在线v| 久久激情视频 | 亚洲在线视频免费观看 | 精品国产乱码久久久久久浪潮 | www.天天色.com | 日本成址在线观看 | 亚洲视频 一区 | 青草草在线 | 在线探花 | 91看片淫黄大片在线播放 | 免费亚洲精品 | 国产精品精品国产 | 日韩av手机在线观看 | 伊人国产在线观看 | 久久久久久久久久久久久9999 | 欧美性色xo影院 | 最新亚洲视频 | 热re99久久精品国产66热 | 日韩午夜精品 | 色www永久免费 | 天天色天天射天天综合网 | 亚洲电影图片小说 | 西西www4444大胆在线 | 亚州精品天堂中文字幕 | 国产精品美女久久久久久 | 色婷婷在线观看视频 | 精品国产一区二区在线 | 国产又粗又猛又黄 | 麻豆视频免费在线观看 | 精品一区二区免费在线观看 | 在线视频 日韩 | 日韩欧美高清 | 玖玖爱在线观看 | 中文视频在线看 | 精品国产1区2区3区 国产欧美精品在线观看 | 午夜免费电影院 | av在线成人 | 中午字幕在线 | 国产精品久久久久一区二区三区 | 亚洲精品视频在线免费 | 久久午夜剧场 | 日本久久精品 | 99九九免费视频 | 日韩视频中文 | 日本黄色免费在线观看 | 欧美91视频 | 2019国产精品 | 国产一区在线播放 | 久久国产一区 | 久久国产精品久久w女人spa | 黄色软件大全网站 | 日本婷婷色| 国产乱码精品一区二区三区介绍 | 久久伊人国产精品 | 国产视频在线免费 | 精品久久久久久久久久久久久久久久久久 | 国产高清精品在线 | 欧美午夜精品久久久久久孕妇 | 久久免费视频精品 | 伊人午夜视频 | 最新午夜电影 | 一级做a爱片性色毛片www | 国产一级电影网 | 日韩av影视在线观看 | 菠萝菠萝在线精品视频 | 日本xxxx.com | 免费h视频| 欧美色图p| 91视频在线观看下载 | 国产情侣一区 | 丁香在线视频 | 97碰在线视频| 日韩免费在线一区 | 成人97人人超碰人人99 | 色综合www| 欧美99精品 | 免费av影视 | 不卡av电影在线观看 | 六月婷操 | 999在线视频 | 久久国产精品电影 | 又黄又爽又色无遮挡免费 | 一本一道波多野毛片中文在线 | 一区二区三区在线观看免费视频 | 久久久免费观看 | 一区二区精品视频 | 青春草免费在线视频 | 日韩精品中文字幕在线不卡尤物 | 国产91精品欧美 | 嫩草伊人久久精品少妇av | 在线观看深夜福利 | 久久久久久久久久久影院 | 色综合网| 四虎国产精品免费观看视频优播 | www视频在线播放 | 日韩三级免费观看 | 久青草视频| 日韩av有码在线 | 国产亚洲观看 | 激情文学综合丁香 | 天天摸天天舔 | 久久久男人的天堂 | 国产精品一区久久久久 | 嫩嫩影院理论片 | 天天射天天射天天 | 久久美女精品 | 免费观看一级 | 激情自拍av| 国产精品日韩精品 | www178ccom视频在线 | 日本黄网站 | 成人一级片视频 | 九九九热精品 | 久久色网站| 国产一级片免费播放 | 天天干夜夜爱 | 黄色毛片在线看 | 在线成人国产 | 日本精品免费看 | 在线观看完整版免费 | 免费观看国产精品视频 | 麻花豆传媒mv在线观看网站 | 免费高清看电视网站 | 香蕉视频一级 | 又黄又爽的视频在线观看网站 | 一级免费黄视频 | av福利在线| 毛片在线播放网址 | 日韩色综合网 | 久久久久久久久电影 | 99亚洲精品 | 在线精品播放 | 国产精品va在线播放 | 最近高清中文字幕 | 久草视频免费 | 婷婷精品进入 | 国内久久看 | 麻豆精品在线 | 亚洲狠狠 | 精品久久99| 美女性爽视频国产免费app | 91成人在线观看高潮 | 色播六月天 | 国产高清日韩 | 九九免费精品视频在线观看 | 最新国产在线观看 | 黄色影院在线观看 | 日日碰狠狠添天天爽超碰97久久 | 九九免费在线视频 | 狠狠操夜夜 | 四虎成人网 | 人人爱爱人人 | 91亚洲狠狠婷婷综合久久久 | 人人澡av| 国产精品av一区二区 | 一级片观看 | 天天摸天天干天天操天天射 | 国产免费高清 | 天天操天天操天天操 | 久久久国产精品久久久 | 日本中文字幕在线 | 精品久久一级片 | 日韩高清不卡一区二区三区 | 国产精品99精品 | 狠狠狠狠狠狠狠 | 蜜臀av麻豆 | 久久久久久久av | 91手机视频 | 在线国产精品视频 | 丝袜+亚洲+另类+欧美+变态 | 国产在线精品视频 | 国产一级电影网 | 六月丁香激情综合色啪小说 | 黄色大片中国 | 日本一区二区三区免费观看 | 成人九九视频 | 五月天丁香亚洲 | 中文字幕在线电影 | 久久天堂网站 | 99久久er热在这里只有精品66 | 欧美日韩国产免费视频 | 精品美女久久久久久免费 | 亚洲国产精品久久 | 521色香蕉网站在线观看 | 久久久麻豆精品一区二区 | 国产午夜在线观看视频 | 色99在线 | 99精品视频网站 | 久久免费毛片 | av理论电影| 97操碰 | 91精品天码美女少妇 | 99久久精品久久久久久动态片 | .国产精品成人自产拍在线观看6 | 久草在线最新视频 | 玖玖精品在线 | 国产黄色在线 | 久久久久成人精品免费播放动漫 | 国产免费影院 | 欧美日韩三区二区 | 手机看片久久 | 成人久久久久 | 久久免费视频播放 | 女人高潮一级片 | 黄色大全视频 | 国产录像在线观看 | 中文字幕免费观看视频 | 日本h在线播放 | 亚洲精品乱码久久久久久久久久 | 精品a级片| 天天爱天天操天天干 | 91九色视频在线 | 精品国产一区二区三区av性色 | 久久曰视频 | 免费在线观看日韩 | av免费在线观看网站 | 国产精品美女久久久 | 啪嗒啪嗒免费观看完整版 | 亚洲精品日韩在线观看 | 蜜桃av综合网| 奇米影视777影音先锋 | 成人高清在线观看 | 久久高清国产视频 | 免费视频三区 | 日韩高清观看 | 亚洲美女精品 | 久久精品99久久久久久2456 | 精品网站999www | 久保带人 | 色婷婷电影网 | 日韩一区二区免费播放 | 热久久国产精品 | 久久99视频精品 | av中文在线 | 久久亚洲人 | 亚洲免费在线视频 | 国产一区在线看 | 日韩精品免费一线在线观看 | 91色在线观看视频 | 久久99久久久久 | 日韩亚洲国产中文字幕 | 色狠狠狠 | 美女一区网站 | 国产午夜精品av一区二区 | 亚洲在线成人精品 | 99精品99| 日本视频高清 | 美女视频黄免费 | 久精品视频 | 精品久久久久久综合 | 久久成人国产 | 手机在线观看国产精品 | 69国产成人综合久久精品欧美 | 国产精品免费大片视频 | 久久成人国产精品入口 | 精品欧美日韩 | 99热这里只有精品国产首页 | 丁香花中文在线免费观看 | 99成人精品 | 精品一区二区免费视频 | 在线视频18在线视频4k | 五月天com | 色综合久久久久综合99 | 免费色网| 97人人模人人爽人人少妇 | 不卡国产视频 | 麻豆国产网站 | 亚洲最大激情中文字幕 | 久久久久免费观看 | 精品欧美一区二区三区久久久 | 中文字幕免费久久 | 91丝袜美腿 | 国产资源在线播放 | av综合网址 | 久热免费 | 欧美激情在线网站 | 日韩免费播放 | 伊人色综合网 | 国产在线小视频 | 欧美激情视频一区二区三区免费 | 波多野结衣久久资源 | 免费成人在线观看 | 欧美在线一二区 | 欧美一进一出抽搐大尺度视频 | 亚洲在线看 | 九九久久影院 | 最新的av网站| 蜜桃视频在线视频 | 色综合久久88色综合天天免费 | 在线观看视频在线 | 91大神精品视频在线观看 | 国产91综合一区在线观看 | 久久久久久久99精品免费观看 | 九色91福利| 成片免费观看视频 | 亚洲黄色网络 | 亚洲精品88欧美一区二区 | 成人久久毛片 | 91热| 国产一在线精品一区在线观看 | 色婷婷综合视频在线观看 | 国产中文欧美日韩在线 | 在线国产中文字幕 | 久久久精品电影 | 成人亚洲精品久久久久 | 免费电影一区二区三区 | 日韩欧美在线观看一区 | 中文字幕成人在线 | 天天色天天射天天综合网 | 成人在线免费观看网站 | 久久97久久97精品免视看 | 成人在线观看av | 亚洲一区二区三区在线看 | 久久8精品| 丁香婷婷深情五月亚洲 | 看毛片的网址 | 最新av电影网址 | 一本大道久久精品懂色aⅴ 五月婷社区 | 国产在线不卡精品 | 美女视频永久黄网站免费观看国产 | 日韩网站在线免费观看 | www黄com| 狠狠狠色丁香综合久久天下网 | 精品一区精品二区 | 在线观看中文字幕网站 | 亚洲h视频在线 | 中文字幕中文字幕中文字幕 | 亚洲精品 在线视频 | 久久久久久久久久久久国产精品 | 狠狠色丁香婷婷综合橹88 | 亚洲国产综合在线 | 久久av免费 | 天天操天天色综合 | 日韩精品第1页 | 亚洲九九 | 夜夜干天天操 | 欧美一级视频免费 | 国内精品久久久久影院日本资源 | 97电影网手机版 | 婷婷黄色片 | 久草在在线视频 | 精品视频在线观看 | 午夜久久久久久久久久影院 | 丰满少妇一级片 | 黄色免费网站大全 | 久久色在线观看 | 久久精品香蕉 | 久久免费成人网 | 亚洲区二区 | 精品久久网 | 狂野欧美激情性xxxx欧美 | 久久久久9999亚洲精品 | 日韩在线视频播放 | 国产91精品看黄网站 | 国产婷婷色 | 天天干天天操天天搞 | 国产v在线观看 | 久久免费国产 | 丁香婷婷色综合亚洲电影 | 久久99国产精品久久99 | 国产精品观看在线亚洲人成网 | 婷香五月 | 久久久久久免费网 | 欧美一级免费片 | 五月视频 | 人人操日日干 | 色偷偷中文字幕 | 精品视频在线免费 | 国产一区在线精品 | 欧美韩日视频 | 国内久久精品视频 | 亚洲区视频在线观看 | av福利在线免费观看 | 99超碰在线观看 | 十八岁以下禁止观看的1000个网站 | 国产日本在线播放 | 婷婷在线免费观看 | 免费观看的黄色片 | av在线超碰| 欧美日韩免费网站 | 亚洲精品久 | 久草在线这里只有精品 | 麻豆成人在线观看 | 亚洲国产精品久久久 | 91传媒91久久久 | 日韩av电影免费在线观看 | 成人黄在线 | 久久久黄视频 | 182午夜在线观看 | 27xxoo无遮挡动态视频 | 久草a在线| 激情av综合 | 超碰久热 | 久久久99久久 | 黄色av影视 | 在线午夜电影神马影院 | 国产又粗又猛又黄又爽 | 欧美亚洲另类在线视频 | 日韩激情中文字幕 | 91免费的视频在线播放 | 九九日韩 | 亚洲视频999 | 四虎永久免费网站 | 国产亚洲午夜高清国产拍精品 | 欧美激情操 | 日韩在线网址 | 99爱精品视频 | 久久精品免费播放 | 高清av在线 | 麻豆传媒视频在线播放 | 中文字幕亚洲国产 | 麻花豆传媒mv在线观看 | 日日干日日 | 免费在线播放视频 | 91在线成人 | 久艹视频免费观看 | 久久曰视频 | 国产一级做a爱片久久毛片a | 96久久欧美麻豆网站 | av电影免费观看 | 992tv人人网tv亚洲精品 | 欧美一区二区三区在线看 | 中文字幕电影高清在线观看 | 一本一本久久aa综合精品 | 中文字幕第一页在线播放 | 激情网五月婷婷 | 最近中文字幕大全中文字幕免费 | 狠狠插狠狠操 | 久久免费视频在线观看6 | 香蕉成人在线视频 | av成人免费在线 | 久久人人爽人人爽人人片av软件 | 91av片 | 在线精品在线 | 特黄特黄的视频 | 成人小视频在线观看免费 | 亚洲天天看 | av电影中文 | 久久国产精品久久国产精品 | 免费精品在线观看 | 国产精品久久片 | 国产无区一区二区三麻豆 | 欧美一级免费 | 久久久麻豆视频 | 亚洲精品国偷拍自产在线观看 | 成年人av在线播放 | 久久精品国产第一区二区三区 | 中文字幕电影高清在线观看 | 五月天国产精品 | 亚洲成人999 | 色婷婷天天干 | 日韩理论片在线 | 精品国产伦一区二区三区观看说明 | 日韩精品最新在线观看 | 国内精品久久久久久久影视简单 | 亚洲 欧美变态 另类 综合 | 欧美日韩国产在线观看 | 国产精品综合久久久久久 | 蜜桃视频在线观看一区 | 久久精品香蕉视频 | 国产婷婷一区二区 | a在线v| 天天综合91 | 久久激情五月激情 | 亚洲精品久久久蜜桃直播 | 97免费在线观看 | 国产精品区在线观看 | 日韩免费高清在线 | 91丨九色丨91啦蝌蚪老版 | 国产亚洲精品无 | 午夜av影院 | 国产99久久久精品 | 亚洲精品久久久久58 | 色婷婷国产在线 | 91一区二区三区在线观看 | 成片免费观看视频大全 | 久久天天躁狠狠躁夜夜不卡公司 | 欧美性黄网官网 | 久操视频在线免费看 | 亚洲成人黄色在线观看 | 亚洲精品三级 | 精品1区2区3区 | 丁香婷婷在线观看 | 97在线观看免费高清完整版在线观看 | 亚洲欧美成人在线 | 国产乱码精品一区二区三区介绍 | 免费一级特黄毛大片 | 欧美午夜久久久 | 亚洲免费色 | 久久视频二区 | 成人毛片100免费观看 | av在线网站免费观看 | 欧美精品小视频 | 欧美做受高潮 | 欧美91视频 | 日韩在线观看三区 | 国产一级精品视频 | 欧美日韩一区久久 | 中文字幕av一区二区三区四区 | 在线播放 日韩专区 | 伊人六月| 国产精品成人免费 | 欧美日韩国产一二三区 | 欧美成年黄网站色视频 | 97免费视频在线 | 成年人视频在线免费播放 | 色婷婷成人网 | 99热官网 | 深爱激情久久 | av在线在线| 亚洲最新av在线网站 | 久久91网 | 欧美日韩视频在线播放 | 在线观看韩日电影免费 | 久久高清片 | 国产美女视频网站 | 欧美成人影音 | 久草视频网 | 日韩电影在线观看一区二区三区 | 日韩欧美综合精品 | 欧美大荫蒂xxx | 午夜精品一二区 | 久久久99精品免费观看 | 国产精品黄网站在线观看 | 国产精品久久久久久久久久久久久久 | 午夜电影久久久 | 粉嫩av一区二区三区四区五区 | 欧美极品一区二区三区 | 日日干日日色 | 探花视频在线版播放免费观看 | 午夜免费福利视频 | 天天色天天色天天色 | 激情伊人五月天久久综合 | 婷婷丁香导航 | 免费成人黄色片 | 一本到视频在线观看 | 久久色在线播放 | 丁香狠狠 | 亚洲免费精品视频 | 国产毛片久久 | 欧产日产国产69 | 午夜av免费在线观看 | 久久久久综合网 | 欧美国产日韩在线观看 | 国产在线污 | 在线婷婷| 成 人 黄 色 片 在线播放 | 日韩.com | 天天干天天想 | 超碰av在线 | 99久久精品免费看国产四区 | 亚洲综合激情小说 | 国产一级黄色片免费看 | av.com在线| 久久久精品国产一区二区电影四季 | 九九视频这里只有精品 | 国产黄a三级三级 | 国产视频首页 | 开心色停停 | 8x成人在线 | 成人av在线资源 | 成人h电影在线观看 | 天天色综合三 | 九九九九精品九九九九 | 在线亚洲人成电影网站色www | 久久激情精品 | 欧美一区二区三区免费看 | 国产日韩欧美在线一区 | 国产精品综合久久 | 丁香5月婷婷久久 | 日日日视频| 高清一区二区三区av | 五月激情姐姐 | 久久久久久久久久久黄色 | 久草在线视频国产 | 黄色一级大片在线免费看产 | 中文字幕在线免费观看 | 91麻豆精品国产91久久久无限制版 | 国产福利中文字幕 | 国产 日韩 欧美 在线 | 亚洲精选在线观看 | 国产精品成人在线观看 | 亚洲第一伊人 | 在线a亚洲视频播放在线观看 | 精品视频在线免费观看 | 欧美一级黄色片 | 欧美整片sss | 免费看一级黄色大全 | 亚洲免费视频观看 | 一区二区三区免费网站 | 丁香五月缴情综合网 | 国产精品18久久久久久首页狼 | 最近中文字幕第一页 | 国产一卡在线 | 天天玩天天干 | 亚洲天天在线日亚洲洲精 | 日韩精品高清视频 | 欧美精品一区二区性色 | 国产在线观看xxx | 99视频网站| 黄色亚洲免费 | 成人av播放 | 亚洲国产美女久久久久 | 久久久国产视频 | 一级片免费在线 | 国产在线一区二区 | 免费看一级黄色 | 日韩伦理片hd | 大型av综合网站 | 精品福利在线观看 | 免费男女羞羞的视频网站中文字幕 | 91在线中文 | 五月婷婷在线观看视频 | 国产成人福利在线 | 久久在线免费视频 | 国产最新视频在线观看 | 欧美一区二区视频97 | 波多野结衣在线中文字幕 | 成 人 黄 色 免费播放 | 操操操夜夜操 | 九九热精品在线 | 亚洲美女精品视频 | 久久免费在线观看 | 成年人在线免费看视频 | 久久看片网站 | 91在线中字 | 天天草天天干天天 | 国产伦理一区二区 | 亚洲精品一区二区三区四区高清 | 亚洲va欧美va人人爽春色影视 | 91禁在线看 | 狠狠躁天天躁综合网 | 久久九九影视 | 999久久久免费精品国产 | 97人人模人人爽人人喊中文字 | 亚洲最大激情中文字幕 | 久热超碰| www黄免费 | 欧美成年人在线观看 | 国产一区二区在线播放视频 | 国内外成人在线 | 高清视频一区 | 久久的色 | 在线观看亚洲 | 日韩av一区二区在线影视 | 国产精品免费视频久久久 | 九九久久在线看 | 日本精品一区二区三区在线观看 | 在线视频 一区二区 | 久久国产精品99国产 | 色中色亚洲 | 国产精品久久久久一区二区 | 日韩av片无码一区二区不卡电影 | 四虎影视成人精品国库在线观看 | 西西www444 | 成年人在线电影 | 91亚洲国产成人久久精品网站 | 国产视频2区 | 国产成人三级一区二区在线观看一 | 日韩啪啪小视频 | 婷婷99| 久久久久在线视频 | 超碰在线观看99 | 女女av在线 | 97夜夜澡人人双人人人喊 | 99国产精品久久久久老师 | 我要色综合天天 | 亚洲国产日韩一区 | 国产成人一级 | 8x成人免费视频 | 手机成人在线电影 | 美女黄色网在线播放 | 高清免费在线视频 | 美女久久视频 | 国产尤物在线视频 | 亚洲精品白浆高清久久久久久 | 欧美日韩一区二区免费在线观看 | 黄色性av | 日韩在线视频一区二区三区 | 久草视频中文在线 | 免费看av片网站 | 久久午夜国产 | 成人欧美在线 | 成人久久久精品国产乱码一区二区 | 久久999精品 | 国产精品1区2区3区在线观看 | 最新日韩精品 | 久久国产精品免费一区二区三区 | 欧美精品免费一区二区 | 亚洲精品mv在线观看 | 啪啪午夜免费 | 人人澡人人澡人人 | 国产一级二级在线 | 国产精品一级视频 | 久久少妇免费视频 | 91丨精品丨蝌蚪丨白丝jk | 免费高清在线观看电视网站 | 国产精品青草综合久久久久99 | 视频一区二区免费 | 国产精品久久久久毛片大屁完整版 |