国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

TiDB 應用 | TiDB Online DDL 在 TiCDC 中的應用

共 9213字,需瀏覽 19分鐘

 ·

2022-07-16 19:02

TiCDC 作為 TiDB 的數(shù)據(jù)同步組件,負責直接從 TiKV 獲取數(shù)據(jù)變更信息并同步到下游。其中比較核心的問題是數(shù)據(jù)解析正確性問題,具體而言就是如何使用正確的 schema 解析 TiKV 傳遞過來的 Key-Value 數(shù)據(jù),從而還原成正確的 SQL 或者其他下游支持的形式。本文主要通過對 TiDB Online DDL 機制原理和實現(xiàn)的分析,引出對當前 TiCDC 數(shù)據(jù)解析實現(xiàn)的討論。


背景和問題

數(shù)據(jù)同步組件是數(shù)據(jù)庫生態(tài)中不可或缺的生態(tài)工具,比較知名的開源單機數(shù)據(jù)庫 MySQL 就將數(shù)據(jù)同步作為 Server 能力的一部分,并基于 MySQL binlog 實現(xiàn)異步/半同步/同步的主從復制。由于 MySQL 悲觀事務模型和表元數(shù)據(jù)鎖的存在,我們總是可以認為 MySQL binlog 中存在因果關系的 data 和 schema 符合時間先后順序的,即:
New data commitTs > New schema commitTs
但是對于 TiDB 這種存儲計算分離的架構(gòu)而言,schema 的變更在存儲層持久化,服務層節(jié)點作為多緩存節(jié)點,總是存在一個 schema 狀態(tài)不一致的時間段。為了保證數(shù)據(jù)一致性和實現(xiàn)在線 DDL 變更,現(xiàn)有的分布式數(shù)據(jù)庫大都采用或者借鑒了Online, Asynchronous Schema Change in F1 機制。所以我們要回答的問題變成了,在 TiDB Online DDL 機制下,TiCDC 如何正確處理 data 和 schema 的對應關系,存在因果關系的 data 和 schema 是否仍然滿足:
New data commitTs > New schema commitTs
為了回答這個問題,我們首先需要先闡述原始的 F1 Online Schema Change 機制的核心原理,然后描述當前 TiDB Online DDL 實現(xiàn),最后我們討論在當前 TiCDC 實現(xiàn)下,data 和 schema 的處理關系和可能出現(xiàn)的不同的異常場景。

F1 Online Schema Change 機制

F1 Online Schema Change 機制要解決的核心問題是,在單存儲多緩存節(jié)點的架構(gòu)下,如何實現(xiàn)滿足數(shù)據(jù)一致性的 Online Schema 變更,如圖 1 所示:
圖 1: 單存儲多緩存節(jié)點的架構(gòu)下的 schema 變更

這里我們定義數(shù)據(jù)不一致問題為數(shù)據(jù)多余(orphan data anomaly)和數(shù)據(jù)缺失(integrity anomaly),Schema 變更結(jié)束后出現(xiàn)數(shù)據(jù)多余和數(shù)據(jù)缺失我們就認為數(shù)據(jù)不一致了。這類系統(tǒng)的 schema 變更問題特點可以總結(jié)成以下 3 點:

1. 一份 schema 存儲,多份 schema 緩存
2. 部分 new schema 和 old schema 無法共存
3. 直接從 old schema 變更到 new schema 時,總是存在一個時間區(qū)間兩者同時存在
特點 1 和特點 3 是系統(tǒng)架構(gòu)導致的,比較容易理解。特點 2 的一個典型例子是 add index,加載了 new schema 的服務層節(jié)點插入數(shù)據(jù)時會同時插入索引,而加載了 old schema 的服務層節(jié)點執(zhí)行刪除操作只會刪除數(shù)據(jù),導致出現(xiàn)了沒有指向的索引, 出現(xiàn)數(shù)據(jù)多余。
Schema 變更問題的特點 2 和特點 3 看起來是互相矛盾的死結(jié),new schema 和 old schema 無法共存,但又必然共存。而 F1 Online Schema 機制提供的解決方案也很巧妙,改變不了結(jié)果就改變條件。所以該論文的解決思路上主要有 2 點,如圖 2 所示:
圖 2: F1 Online DDL 解決方案
1. 引入共存的中間 schema 狀態(tài),比如 S1->S2’->S2, S1 和 S2’ 可以共存,S2’ 和 S2 可以共存;

2. 引入確定的隔離時間區(qū)間,保證無法共存的 schema 不會同時出現(xiàn);

具體來講:

  • 引入共存的中間 schema 狀態(tài)

因為直接從 schema S1 變更到 schema S2 會導致數(shù)據(jù)不一致的問題,所以引入了 delete-only 和 write-only 中間狀態(tài),從 S1 -> S2 過程變成 S1 -> S2+delete-only -> S2+write-only -> S2 過程,同時使用 lease 機制保證同時最多有 2 個狀態(tài)共存。這時只需要證明每相臨的兩個狀態(tài)都是可以共存的,保證數(shù)據(jù)一致性,就能推導出 S1 到 S2 變更過程中數(shù)據(jù)是一致的。

  • 引入確定的隔離時間區(qū)間

定義 schema lease,超過 lease 時長后節(jié)點需要重新加載 schema,加載時超過 lease 之后沒法獲取 new schema 的節(jié)點直接下線,不提供服務。所以可以明確定義 2 倍 lease 時間之后,所有節(jié)點都會更新到下一個的 schema。

引入共存的中間狀態(tài)

我們需要引入什么樣的中間狀態(tài)呢?那要看我們需要解決什么問題。這里我們?nèi)匀皇褂?add index 這個 DDL 作為例子,其他 DDL 細節(jié)可以查閱 Online, Asynchronous Schema Change in F1。

Delete-only 狀態(tài)

我們可以看到 old schema 是無法看到索引信息的,所以會導致出現(xiàn)刪除數(shù)據(jù),遺留沒有指向的索引這種數(shù)據(jù)多余的異常場景,所以我們要引入的第一個中間狀態(tài)是 delete-only 狀態(tài),賦予 schema 刪除索引的能力。在 delete-only 狀態(tài)下,schema 只能在 delete 操作的時候?qū)λ饕M行刪除,在 insert/select 操作的時候無法操作索引,如圖 3 所示:
圖 3: 引入 delete-only 中間狀態(tài)

原始論文對于 delete-only 的定義如下:

假設我們已經(jīng)引入了明確的隔離時間區(qū)間(下一個小節(jié)會細講),能保證同一時刻最多只出現(xiàn) 2 個 schema 狀態(tài)。所以當我們引入 delete-only 狀態(tài)之后,需要考慮的場景就變成:

        1. old schema + new schema(delete-only)

        2. new schema(delete-only) + new schema

  • 對于場景 1,所有的服務層節(jié)點要么處于 old schema 狀態(tài),要么處于 new schema(delete-only) 狀態(tài)。由于 index 只能在 delete 的時候被操作,所以根本沒有 index 生成,就不會出現(xiàn)前面說的遺留沒有指向的索引問題,也不會有數(shù)據(jù)缺失問題,此時數(shù)據(jù)是一致的。我們可以說 old schema 和 new schema(delete-only) 是可以共存的。

  • 對于場景 2,所有的服務層節(jié)點要么處于 new schema(delete-only) 狀態(tài),要么處于 new schema 狀態(tài)。處于 new schema 狀態(tài)的節(jié)點可以正常插入刪除數(shù)據(jù)和索引,處于 new schema( delete-only) 狀態(tài)的節(jié)點只能插入數(shù)據(jù),但是可以刪除數(shù)據(jù)和索引,此時存在部分數(shù)據(jù)缺少索引問題,數(shù)據(jù)是不一致的。

引入 delete-only 狀態(tài)之后,已經(jīng)解決了之前提到的索引多余的問題,但是可以發(fā)現(xiàn),處于 new schema( delete-only) 狀態(tài)的節(jié)點只能插入數(shù)據(jù),導致新插入的數(shù)據(jù)和存量歷史數(shù)據(jù)都缺少索引信息,仍然存在數(shù)據(jù)缺失的數(shù)據(jù)不一致問題。

Write-only 狀態(tài)

在場景 2 中我們可以看到,對于 add index 這種場景,處于 new schema( delete-only) 狀態(tài)節(jié)點插入的數(shù)據(jù)和存量數(shù)據(jù)都存在索引缺失的問題。而存量數(shù)據(jù)本身數(shù)量是確定且有限的,總可以在有限的時間內(nèi)根據(jù)數(shù)據(jù)生成索引,但是 new insert 的數(shù)據(jù)卻可能隨時間不斷增加。為了解決這個數(shù)據(jù)缺失的問題,我們還需要引入第二個中間狀態(tài) write-only 狀態(tài),賦予 schema insert/delete 索引的能力。處于 write-only 狀態(tài)的節(jié)點可以 insert/delete/update 索引,但是 select 無法看到索引,如圖 4 所示:
圖 4: 引入 write-only 狀態(tài)
原始論文中對于 write-only 狀態(tài)的定義如下:
引入 write-only 狀態(tài)之后,上述的場景 2 被切分成了場景 2' 和場景 3:
2':new schema(delete-only) + new schema(write-only)
3new schema(write-only) + new schema
  • 對于場景 2',所有的服務層節(jié)點要么處于 new schema(delete-only) 狀態(tài),要么處于 new schema(write-only) 。處于 new schema(delete-only) 狀態(tài)的服務層節(jié)點只能插入數(shù)據(jù),但是可以刪除數(shù)據(jù)和索引,處于 new schema(write-only) 可以正常插入和刪除數(shù)據(jù)和索引。此時仍然存在索引缺失的問題,但是由于 delete-only 和 write-only 狀態(tài)下,索引對于用戶都是不可見的,所以在用戶的視角上,只存在完整的數(shù)據(jù),不存在任何索引,所以內(nèi)部的索引缺失對用戶而言還是滿足數(shù)據(jù)一致性的。

  • 對于場景 3,所有的服務層節(jié)點要么處于 new schema(write-only) 狀態(tài),要么處于 new schema。此時 new insert 的數(shù)據(jù)都能正常維護索引,而存量歷史數(shù)據(jù)仍然存在缺失索引的問題。但是存量歷史數(shù)據(jù)是確定且有限的,我們只需要在所有節(jié)點過渡到 write-only 之后,進行歷史數(shù)據(jù)索引補全,再過渡到 new schema 狀態(tài),就可以保證數(shù)據(jù)和索引都是完整的。此時處于 write-only 狀態(tài)的節(jié)點只能看到完整的數(shù)據(jù),而 new schema 狀態(tài)的節(jié)點能看到完整的數(shù)據(jù)和索引,所以對于用戶而言數(shù)據(jù)都是一致的。

小節(jié)總結(jié)

通過上面對 delete-only 和 write-only 這兩個中間狀態(tài)的表述,我們可以看到,在 F1 Online DDL 流程中,原來的單步 schema 變更被兩個中間狀態(tài)分隔開了。每兩個狀態(tài)之間都是可以共存的,每次狀態(tài)變更都能保證數(shù)據(jù)一致性,全流程的數(shù)據(jù)變更也能保證數(shù)據(jù)一致性。

引入確定的隔離時間區(qū)間

為了保證同一時刻最多只能存在 2 種狀態(tài),需要約定服務層節(jié)點加載 schema 的行為:
1. 所有的服務層節(jié)點在 lease 之后都需要重新加載 schema;
2. 如果在 lease 時間內(nèi)無法獲取 new schema,則下線拒絕服務;
通過對服務層節(jié)點加載行為的約定,我們可以得到一個確定的時間邊界,在 2*lease 的時間周期之后,所有正常工作的服務層節(jié)點都能從 schema state1 過渡到 schema state2, 如圖 5 所示:
圖 5: 最多 2*lease 時長后所有的節(jié)點都能過渡到下一個狀態(tài)

中間狀態(tài)可見性

要正確理解原始論文的中間狀態(tài),需要正確理解中間狀態(tài)的可見性問題。前面小節(jié)為了方便我們一直使用 add index 作為例子,然后表述 delete-only 和 write-only 狀態(tài)下索引對于用戶 select 是不可見的,但是 write-only 狀態(tài)下,delete/insert 都是可以操作索引的。如果 DDL 換成 add column,那節(jié)點處于 write-only 狀態(tài)時,用戶 insert 顯式指定新增列可以執(zhí)行成功嗎?答案是不能。
總的來說,中間狀態(tài)的 delete/insert 可見性是內(nèi)部可見性,具體而言是服務層節(jié)點對存儲層節(jié)點的可見性,而不是用戶可見性。對于 add column 這個 DDL,服務層節(jié)點在 delete-only 和 write-only 狀態(tài)下就能看到 new column,但是操作受到不同的限制。對用戶而言,只有到 new schema 狀態(tài)下才能看到 new column,才能顯式操作 new column,如圖 6 所示:
圖 6: 中間狀態(tài)可見性
為了清晰表述可見性,我們舉個例子,如圖 7 所示。原始的表列信息為 , DDL 操作之后表列信息為。
圖 7: 中間狀態(tài)過渡
  • 小圖 (1) 中,服務層節(jié)點已經(jīng)過渡到了場景 1,部分節(jié)點處于 old schema 狀態(tài),部分節(jié)點處于 new schema(delete-only) 狀態(tài)。此時 c2 對用戶是不可見的,不管是 insert < c1,c2> 還是 delete的顯式指定 c2 都是失敗的。但是存儲層如果存在 [1,xxx] 這樣的數(shù)據(jù)是可以順利刪除的,只能插入 [7] 這樣的缺失 c2 的行數(shù)據(jù)。

  • 小圖 (2) 中,服務層節(jié)點已經(jīng)過渡到了場景 2,部分節(jié)點處于 new schema(delete-only) 狀態(tài),部分節(jié)點處于 new schema(write-only) 狀態(tài),此時 c2 對用戶仍是不可見的,不管是 insert <c1,c2> 還是 delete的顯式指定 c2 都是失敗的。但是處于 write-only 狀態(tài)的節(jié)點,insert [9] 在內(nèi)部會被默認值填充成 [9,0] 插入存儲層。處于 delete-only 狀態(tài)的節(jié)點,delete [9] 會被轉(zhuǎn)成 delete [9,0]。
  • 小圖 (3) 中,服務層所有節(jié)點都過渡到 write-only 之后,c2 對用戶仍是不可見的。此時開始進行數(shù)據(jù)填充,將歷史數(shù)據(jù)中缺失 c2 的行進行填充(實現(xiàn)時可能只是在表的列信息中打上一個標記,取決于具體的實現(xiàn))。
  • 小圖 (4) 中,開始過渡到場景 3,部分節(jié)點處于 new schema(write-only) 狀態(tài),部分節(jié)點處于 new schema 狀態(tài)。處于 new schema(write-only) 狀態(tài)的節(jié)點,c2 對用戶仍是不可見的。處于 new schema 狀態(tài)的節(jié)點,c2 對用戶可見。此時連接在不同服務層節(jié)點上的用戶,可以看到不同的的 select 結(jié)果,不過底層的數(shù)據(jù)是完整且一致的。

總結(jié)

上面我們通過 3 個小節(jié)對 F1 online Schema 機制進行了簡要描述。原來單步 schema 變更被拆解成了多個中間變更流程,從而保證數(shù)據(jù)一致性的前提下實現(xiàn)了在線 DDL 變更。
對于 add index 或者 add column DDL 是上述的狀態(tài)變更,對于 drop index 或者 drop column 則是完全相反的過程。比如 drop column 在 write-only 階段及之后對用戶都不可見了,內(nèi)部可以正確 insert/delete,可見性和之前的論述完全一樣。

TiDB Online DDL 實現(xiàn)

TiDB Online DDL 是基于 F1 Online Schema 實現(xiàn)的,整體流程如圖 8 所示:
圖 8 TiDB Online DDL 流程
簡單描述如下:
  • TiDB Server 節(jié)點收到 DDL 變更時,將 DDL SQL 包裝成 DDL job 提交到 TIKV job queue 中持久化;
  • TiDB Server 節(jié)點選舉出 Owner 角色,從 TiKV job queue 中獲取 DDL job,負責具體執(zhí)行 DDL 的多階段變更;
  • DDL 的每個中間狀態(tài)(delete-only/write-only/write-reorg)都是一次事務提交,持久化到 TiKV job queue 中;
  • Schema 變更成功之后,DDL job state 會變更成 done/sync,表示 new schema 正式被用戶看到,其他 job state 比如 cancelled/rollback done 等表示 schema 變更失??;
  • Schema state 的變更過程中使用了 etcd 的訂閱通知機制,加快 server 層各節(jié)點間 schema state 同步,縮短 2*lease 的變更時間;
  • DDL job 處于 done/sync 狀態(tài)之后,表示該 DDL 變更已經(jīng)結(jié)束,移動到 job history queue 中;
詳細的 TiDB 處理流程可以參見:schema-change-implement.md TiDB ddl.html

TiCDC 中 Data 和 Schema 處理關系

前面我們分別描述了 TiDB Online DDL 機制的原理和實現(xiàn),現(xiàn)在我們可以回到最一開始我們提出的問題:在 TiDB Online DDL 機制下,是否還能滿足:
New data commitTs > New schema commitTs
答案是否定的。在前面 F1 Online Schema 機制的描述中,我們可以看到在 add column DDL 的場景下,當服務層節(jié)點處于 write-only 狀態(tài)時,節(jié)點已經(jīng)能夠插入 new column data 了,但是此時 new column 還沒有處于用戶可見的狀態(tài),也就是出現(xiàn)了 New data commitTs < New schema commitTs,或者說上述結(jié)論變成了:
New data commitTs > New schema(write-only) commitTs
但是由于在 delete-only + write-only 過渡狀態(tài)下,TiCDC 直接使用 New schema(write-only) 作為解析的 schema,可能導致 delete-only 節(jié)點 insert 的數(shù)據(jù)無法找到對應的 column 元信息或者元信息類型不匹配,導致數(shù)據(jù)丟失。所以為了保證數(shù)據(jù)正確解析,可能需要根據(jù)不同的 DDL 類型和具體的 TiDB 內(nèi)部實現(xiàn),在內(nèi)部維護復雜的 schema 策略。
在當前 TiCDC 實現(xiàn)中,選擇了比較簡單的 schema 策略,直接忽略了各個中間狀態(tài),只使用變更完成之后的 schema 狀態(tài)。為了更好表述在 TIDB Online DDL 機制下,當前 TiCDC 需要處理的不同場景,我們使用象限圖進行進一步歸類描述。
  • 1 對應 old schema 狀態(tài)
    此時 old schema data 和 old schema 是對應的*;*
  • 4 對應 new schema public 及之后
    此時 new schema data 和 new schema 是對應的;
  • 3 對應 write-only ~ public 之間數(shù)據(jù)

此時 TiCDC 使用 old schema 解析數(shù)據(jù),但是處于 write-only 狀態(tài)的 TiDB 節(jié)點已經(jīng)可以基于 new schema insert/update/delete 部分數(shù)據(jù),所以 TiCDC 會收到 new schema data。不同 DDL 處理效果不同,我們選取 3 個常見有代表性的 DDL 舉例。
    • add column狀態(tài)變更 absent -> delete-only -> write-only -> write-reorg -> public。由于 new schema data 是 TiDB 節(jié)點在 write-only 狀態(tài)下填充的默認值,所以使用 old schema 解析后會被直接丟棄,下游執(zhí)行 new schema DDL 的時候會再次填充默認值。對于動態(tài)生成的數(shù)據(jù)類型,比如 auto_increment 和 current timestamp,可能會導致上下游數(shù)據(jù)不一致。
    • change column有損狀態(tài)變更 absent -> delete-only -> write-only -> write-reorg -> public, 比如 int 轉(zhuǎn) double,編碼方式不同需要數(shù)據(jù)重做。在 TiDB 實現(xiàn)中,有損 modify column 會生成不可見 new column,中間狀態(tài)下會同時變更新舊 column。對于 TiCDC 而言,只會處理 old column 下發(fā),然后在下游執(zhí)行 change column,這個和 TiDB 的處理邏輯保持一致。
    • drop column狀態(tài)變更 absent-> write-only -> delete-only -> delete-reorg -> public。write-only 狀態(tài)下新插入的數(shù)據(jù)已經(jīng)沒有了對應的 column,TiCDC 會填充默認值然后下發(fā)到下游,下游執(zhí)行 drop column 之后會丟棄掉該列。用戶可能看到預期外的默認值,但是數(shù)據(jù)能滿足最終一致性。

  • 2 對應直接從 old schema -> new schema

    說明這類 schema 變更下,old schema 和 new schema 是可以共存的,不需要中間狀態(tài),比如 truncate table DDL。TiDB 執(zhí)行 truncate table 成功后,服務層節(jié)點可能還沒有加載 new schema,還可以往表中插入數(shù)據(jù),這些數(shù)據(jù)會被 TiCDC 直接根據(jù) tableid 過濾掉,最終上下游都是沒有這個表存在的,滿足最終一致性。


總結(jié)

TiCDC 作為 TiDB 的數(shù)據(jù)同步組件,數(shù)據(jù)解析正確性問題是保證上下游數(shù)據(jù)一致性的核心問題。為了能充分理解 TiCDC 處理 data 和 schema 過程中遇到的各種異常場景,本文首先從 F1 Online Schema Change 原理出發(fā),詳細描述在 schema 變更各個階段的數(shù)據(jù)行為,然后簡單描述了當前 TiDB Online DDL 的實現(xiàn)。最后引出在當前 TiCDC 實現(xiàn)下在 data 和 schema 處理關系上的討論。

??Tip:上文標藍部分均有跳轉(zhuǎn),由于微信外鏈限制,大家可以點擊尾部【閱讀原文】查看原文
瀏覽 44
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩91在线| 夜夜撸视频| 亚洲免费视频在线| AV在线免费观看网站| 久久久无码视频| 午夜福利视频网| 免费无码国产在线55| 国产我不卡| av啊啊| 丁香五月婷婷综合网| 黑人vs亚洲人在线播放| 日韩经典视频在线播放| 国产三级视频| 日韩性视频| 婷婷综合视频| 黄色A级毛片| 人人摸人人射| 免费无码毛片| 国产日韩视频| 人妻天堂| 91久久久久国产一区二区| 天天爽天天日| 亚洲乱码中文字幕| 国产成人精品一区二| 五月婷婷六月婷婷| 国产l精品久久久久久久久久| 日韩一区二| 操婷婷逼| 在线性视频| 亚洲免费小黄片| 国产小视频在线看| 人妻爽爽| 波多野结衣AV在线观看| 91社区成人影院| 久草视频在线免费播放| 无码AV电影在线观看| 婷婷成人综合网| 竹菊av一区二区三区四区五区| 精品国产AV色一区二区深夜久久| 久久亚洲热| 天天干夜夜操| 人人操日本| 国产精品伦子伦免费视频| 婷婷在线观看免费| 国产精品人妻无码一区牛牛影视| h成人在线| 波多野结衣无码AV专区| 欧美大屌网站| P站免费版-永久免费的福利视频平台| 色色网站在线观看| 小草一区| 成人毛片av| 国内视频一区| 夜色88V精品国产亚洲| 亚洲vs无码秘蜜桃| 人人看AV| 毛片久久久| 欧美一级特黄AAAAAA片| 91抽插| www.日韩无码| 农村一级婬片A片AAA毛片古装| 国产精品乱子伦视频一区二区 | 日韩最新无码发布| 国产精品久久7777777精品无码| 欧美+日产+中文| 婷婷久久久久久| 国产精品人妻无码久久久郑州天气网| AV第一福利大全导航| 美女91网站色| 一区二区三区观看| 婷婷丁香一区二区三区| 欧美亚洲动漫| 色婷婷综合激情| 亚洲天堂男人| 亚洲第一色网站| 91麻豆国产| 欧美性爱自拍| 九七影院第二页| 一级做a爰片毛片A片| 国产精品久久久久久亚洲毛片| 激情五月天小说网| 国产欧美精品一区二区三区| 2020无码| 久久久久a| 天干天干天夜夜| 成人免费黄色视频| 亚洲av无码乱码| 国产无码中文字幕| 亚洲无码av在线播放| 东方av在线观看| 亚洲无码三级| 免费一级无码婬片A片AAA毛片| 亚洲无码AV麻豆| 黄色电影天堂网站| 成人免费高清| 国产激情无码免费| 欧美三级一级| 在线亚洲欧美| 亚洲性视频| 国产又爽又黄免费网站校园里| 久久久麻豆| 偷偷操穴| 久久久少妇| 色丁香在线| 欧美亚洲操逼视频| 国产九九热视频| 国产传媒精品| 成人无码三级| 夜夜操夜夜爽| 91国产做爱| 国产麻豆精品ThePorn| 乱伦乱伦乱伦中文字幕| 国产A级毛片久久久久久| 欧美性区| 国产成人性爱| 99热99精品| 久久高清无码视频| 天堂无码| 特级特黄A级高潮播放| 怡红院成人在线| 中文字幕12页| 高清无码黄| 中文字幕人妻互换av久久| 青青草成人网| 亚洲性爱在线| 岛国av无码免费| 亚洲一二三四区| 粉嫩99精品99久久久久| 成人毛片100免费观看| 久久久成人视频| 麻豆久久久| 91爱爱| 日本www视频| 风间由美大荫蒂无码AV| 一区二区三区四区在线看| 亚洲性爱一区二区| 影音先锋三级片| 欧美日韩中国操逼打炮| 男女av在线观看| a免费在线| 翔田千里50岁无码| 大鸡巴视频在线观看| 亚洲无码激情| 婬乱欧美一二三区| 天天透天天干| 日韩精品人妻中文字幕有| 成人做爰69片免费观看| www黄色视频| 欧美午夜精品久久久| 国产日韩91| 亚洲男人的天堂av| 亚洲精品人妻在线| 插菊花综合网2| 无码任你躁久久久久| 久久久久久黄片| a网站在线| 一区二区三区无码高清| 免费看黃色AAAAAA片| 亚洲视频免费在线观看| 日韩色妇| 无码xx| 大学生18一19GAY169| 亚洲成人无码网站| 国产精品福利小视频| 十八无码成人免费网站| 国产激情视频| 麻豆一区视频| 97一区二区| 人人操人人看人人摸| 无码视频一二三区| 久久精品久| 神马午夜| 操逼一区二区| AAAA毛片视频| 一级成人电影| 91在线永久| 欧美日韩国内| 日韩欧美色| 久久夜色精品噜噜亚洲AV| 99久久人妻精品免费二区| 边添小泬边狠狠躁视频| 特级西西人体WWWWW| 国产精品成人午夜福利| 99在线视频观看| 操逼网站在线| 4438黄色| 久久婷婷网| 精品婷婷| 亚洲国产熟妇综合色专区| 在线观看免费人成视频| 91大神在线观看入口| 九九色九九| 天天爽天天干| 北条麻妃无码在线视频| 国产又粗又大又长| 亚州高清无码视频| 国产资源av| 三级乱伦86丝袜无码| 婷婷色吧| 国产综合一区二区| 亚洲高清无码一区| 亚洲中文字幕在线观看视频网站 | 波多野结衣99| 亚洲国产成人一区二区| 国产成人精品免高潮在线人与禽一| 1024在线视频| 国内自拍青青| 国产亚洲成人综合| 国产成人精品免高潮在线人与禽一| 日本三级视频| 超碰自拍99| 色吧av| 亚洲1区2区| 国产av影院| 国产成人视频在线播放| 婷婷福利导航| 精品999| 亚洲成人中文字幕| 天天做天天爱夜夜爽| 黄色工厂这里只有精品| 亚洲AV无码成人精品区欧洲| 亚洲婷婷三级成人网| 黄色av网站在线观看| 国产操逼免费视频| A片在线免费看| 三级片在线观看网站| 黑人亚洲娇小videos∞| 一区二区三区四区高清无码| www.啪啪| 嗯啊在线视频| 亚洲无吗在线观看| 欧美另类激情| 91丨PORNY丨在线中文| 国产三级无码视频| 国产婷婷色一区二区在线观看| 免费18禁网站| 成人H动漫精品一区二区三区蘑菇 高清无码视频在线免费观看 | 北条麻妃无码在线视频| 无码在线免费播放| 嫩BBB搡BBB槡BBB小号| 久草视频99| 国产乱╳╳AⅤ毛片| 国产h视频| 99热国产| 九热精品| 国产91探花秘入口| 亚洲三级视频| 国产精品资源在线观看| 视频一区二区三区在线观看| 人人干人人摸| 大地中文资源5页的更新内容| 天天草天天| 丁香五月在线| 青春草在线视频免费观看| 九色自拍视频| 中文字幕在线观看第一页| 久久99视频免费观看| 在线亚洲欧美| 国产熟妇码视频黑料| 久久久精品一区| 操碰视频在线| 日韩一级片| 日韩免费高清无码视频| 人妻久久久| 日韩ava| 2025中文字幕在线| 亚洲中文网| 2019狠狠操| a√天堂中文在线8| 国产高清视频在线观看| 日逼老女人| 一级免费A片| 无码免费观看| 黑人一区二区三区四区| 亚洲综合另类| 天堂黄片| 日韩成人无码免费视频| 蜜臀久久99精品久久久晴天影视| 五月天久久久久久久| 一区视频在线| 肥臀AV在线| 东京热黄色电影| 亚洲自拍偷拍视频| 日韩精品黄片| 熟女视频91| 欧美亚洲综合手机在线| 黄色免费无码| 五月婷婷在线视频| 亚洲日本中文字幕在线| 日本一本不卡| 亚洲av成人网| 国产动态图| 成人AV无码| 玖玖爱综合| 尤物网在线| 18禁网站在线看| 国产一片黑夜内射| 69AV视频| 国产白丝精品91爽爽久久| 不卡的av| 亚洲狼人久久久精品| 日韩欧美视频一区| 成人黄色大香蕉| 亚洲国产久久| 激情婷婷 | 久色国产| 91在线成人视频| 日韩成人无码专区| 日韩AAA在线| 99色在线视频| 三级视频网站| 一本加勒比HEZYO东京热无码| 大香蕉视频网| 中文字幕日韩美| 少妇搡BBBB搡BBB搡视频一级| 亚洲无码午夜| 日韩操B视频| 无套进入无套内谢| 91丨九色丨熟女新版| 无码视频在线观看| 三级网站视频| 国产精品内射| 国产精品天天| 黄色片在线| 有码视频在线观看| 亚洲欧美视频在线观看| 久久久精品中文字幕麻豆发布| 亚洲精品午夜精品| 无码人妻一区二区三区三| 国产精品视频福利| 日日碰狠狠躁久久躁婷婷| 色综合天天综合网国产成人网| 夜夜嗨av无码一区二区三区| 熟妇综合| 中文字幕视频一区日日骚| 亚洲免费毛片| 国产激情都市一区二区三区欧美 | 就要草| 成人黄色在线观看视频| 午夜av福利| 久久综合加勒比| 国产一级A片久久久免费看快餐 | 亚洲vs无码蜜桃少妇| 日韩人妻无码一区二区三区| 欧美视频综合网| 丰满人妻无码| 丁香激情视频| 欧美日韩在线视频播放| 亚洲色婷婷五月| 亚洲无码精品一区二区| 欧美日韩加勒比| 黄色影院在线观看| 亚洲中文无码在线观看| 日韩精品一二三区| 黄色片亚洲| 国产A片视频| 97成人精品| 精品人妻一区二区三区浪潮在线| 成人无码激情| 91精品久久久久久| 亚洲AV无码秘翔田| 国产高清自拍| 日韩中文字幕免费在线观看| 婷婷综合缴情亚洲另类在线| 艳妇乳肉豪妇荡乳AV无码福利| 亚洲区无码| AV在线免费观看网址| 亚洲伦理一区二区| 国产亚洲精品久久久久动| 成人国产无码| 天天撸在线视频| 亚洲手机在线播放| 免费看无码网站成人A片| 亚洲AV成人网| 88AV视频| 浮力影院欧美| 日韩精品成人在线视频| 青青草激情视频| AV无码一区| 久久大香| 各种BBwBBwBBwBBw| 97在线鲁碰免费视频| 大香蕉中文网| 青草香蕉视频| 欧美三级欧美一级| 日韩欧美高清在线| 天天日天天草| 亚洲成人无码网站| 亚洲福利一区二区| 国产资源在线观看| 麻豆网站91| 婷婷久久五月| 无码人妻丰满熟妇精品| 中文字幕日日| 操bbbb| 狠狠色狠狠撸| 69超碰| 欧美日韩亚洲综合| 蜜臀av一区二区三区| 久久久久免费| 亚洲AV无码成人H动漫| 夜夜国自一区| 日韩AV成人电影| 污视频在线| 亚洲精品成人7777777| 少妇一级婬片内射视频| 成人免费在线视频| 在线观看的av网站| 亚洲国产精品自| A片在线视频| 五月激情丁香婷婷| 欧美毛视频| 91丝袜| 久久免费成人电影| 五月丁香五月婷婷| 大香蕉96| 在线观看中文字幕视频| 国产乱伦电影| 亚洲视频大全| www日本高清| 人人操在线观看| 久久精品苍井空免费一区| 亚洲高清在线| 一道本高清无码视频| 91色人妻| 日韩国产在线| 京熱大亂交无碼大亂交| 天天久久毛片| 中文字幕三区| 亚洲理伦| 国产成人三级在线播放| 一区二区高清| 国产精品成人免费久久黄AV片 | 97精品一区二区三区A片| www.五月天婷婷| 亚洲性爱无码| 欧美性交网| a在线观看免费| 日本激情网站| 国产v欧美| 青青草免费福利视频| 国产在线观看一区二区| 我想看操逼| 人妻少妇被猛烈进入中文字幕| 99久视频| 亚欧在线| 欧美精品在线免费| 99在线视频免费观看| 在线无码免费视频| 2020人妻中文字幕| 99精品久久| 一区二区黄| 色综合99久久久无码国产精品| 无码人妻一区二区三区免费九色| 黄色片一区二区| 2026AV天堂网| 乱码少妇| 欧美成人黄色| 亚洲无码精品专区| 久热婷婷| 777777国产77777777| 国产精品成人无码专区| 18禁AV在线| 亚洲秘无码一区二区三区欧美| 一区二区三区无码免费| 操操综合| 青草视频精品| 青娱乐成人| JlZZJLZZ亚洲美女18| 亚洲成人动漫免费| 一区二区免费视频| 亚洲AV毛片| 亚洲欧美成人在线视频| 小黄片在线免费观看| 久草超碰| 国产无码中文字幕| 中文字幕巨肉乱码中文乱码| 肏逼视频免费看| 久色| 自拍视频在线观看| 男人视频网站| 欧美色一级| 国产激情网站| 成人小说一区二区三区| 激情白浆| 亚洲精品色色| 免费看黄色大片| 人妻体内射精一区二区三区| 在线观看av资源| 欧美性极品少妇精品网站| www亚洲无码A片贴吧| 亚洲午夜精品久久久| 中文字幕一二三四| 欧美精品A级片| A片视频在线观看| 日韩在线视频中文字幕码无| 中国毛片视频| 欧美一区二区丁香五月天激情| 污视频免费在线观看| 五月天婷婷激情网| 亚洲第一成年人网站| 99热碰碰热| 99热国产在线| 超碰在线国产| 亚洲天堂手机在线| 97免费在线观看视频| 美日韩一区二区| 亚洲一级黄色| AV无码在线播放| 国产成人午夜高潮毛片| 西西444WWW无码大胆在线观看 | 久热这里只有| gogogo高清在线观看免费直播中国 | 人人看人人搞人人摸| 亚洲人妻AV| 99热r| AAA成人| 欧美激情一区二区A片成人牛牛| 国产Av婬乱麻豆| 成人精品免费| 一区视频在线| 影音先锋乱伦| 人人操人人上| 黄色视频日韩| 青娱乐精品视频| 91探花在线观看| 欧美VA视频| 嫩BBB槡BBBB槡BBBB百度| 北条麻妃二区三区| 日韩一级| 91丨九色丨熟女老版| 伊人久久国产| 中文字幕一区二区三区在线观看 | 日本高清无码在线观看| 亚洲AV无码国产精品久久不卡| 亚洲美女网站| 欧美18禁黄免费网站| 成人黄色A片| 六月丁香网| 亚洲av网址| 日本国产欧美| 久久精品无码一区二区无码性色| 九九九成人视频| 69超碰| 麻豆A∨在线| 亚洲黄色一区| 成人网站www污污污网站公司 | 国产美女在线观看| 天天日夜夜撸| 球AV在线| www.大鸡巴| 在线免费A片| 青榴社区| 影音先锋在线成人| 久久久久久久久久久久高清毛片一级| 国产一级A片视频| 国产一区| 大香蕉福利视频| 在线永久看片免费的视频| 三级免费| 女同久久另类99精品国产91| 精品精品精品| 麻豆视频在线播放| 看欧美黄片| 操杨幂| 91你懂的| 亚洲一区二区在线免费观看| 2025AV天堂网| 成人区人妻精品一| 18精品爽国产冫绿帽社| 国产精品卡一| 人人看人人摸人人插| 人人摸人人操人人摸| 狼人综合网| 伊人久操| 国产视频无码| 国产精品久久久久久亚洲影视| 国产一级AV片| 成人图片小说| 内射网站在线看| 91国在线视频| 国产精品色呦呦| 中文字字幕中文字幕乱码| 国产精品视频免费观看| 日本无码嫩草一区二区| 日韩在线视频网站| 日本欧美视频| 三级无码中文| 俺去俺来WWW色官方| 12——13女人毛片毛片| 影音先锋av成人电影| 日韩1234区| 高清人妻无码| 91爱看| 成人视频欧美| 无码免费一区二区三区| 日韩加勒比| 日本黄色视频免费观看| 97精品综合久久| 亚洲你懂的| 国产黄色性爱视频| 乱子伦国产精品www| 久操青青| 国产成人综合在线| 成人永久免费视频| 欧美成人免费观看| 神马午夜影院| 亚洲精品18在线观看| AV1区二区| 一区无码免费| 日韩美在线视频| 免费中文资源在线观看| 中文字幕免费观看| 伊人免费| 日韩毛片视频| 六月激情| 欧美激情一区二区三区| 97在线超碰| 人人色综合| 超碰人人操人人爱| 北条麻妃无码视频在线观看| 一级在线| 日韩成人黄色电影| 日韩在线精品视频| 蜜桃视频一区二区三区四区使用方法 | 国产精品S色| 天天看天天爽| 亚洲第一黄色视频| 国产AV直播| 日韩一本道在线| 色播视频在线观看| 波多野结衣在线无码视频| 亚洲高清毛片一区二区| 国产成人V在线精品一区| 精品乱子伦一区二区在线播放| 无码任你操| 亚洲精品成人无码熟妇在线| 色图插插插| 亚洲人人色| 亚洲少妇网| 一级日韩一级欧美| 伊人久久大香线蕉| 日韩黄色视频在线观看| 国产一级在线免费观看| 五月丁香婷婷开心| 西西444WWW无码视频软件功能介绍 | 色丁香视频在线观看的| 影音先锋中文字幕资源| 四虎无码丰满人妻| 欧美色大香蕉| 中文无码日韩| 偷拍九九热| 丝袜东京热AV高清| 日本免费福利视频| 1024手机在线视频| 久久久久久无码精品亚洲日韩麻豆| 苍井空精毛片精品久久久| 日日综合网| 欧美国产另类| 成人欧美一区二区三区在线观看 | 免费亚洲婷婷| 欧美999| 亚洲成人AV| 新亚洲天堂男子Av-| 老妇性BBWBBWBBWBBW| 成人三级电影网| 影音先锋av色| 黄色电影一区二区三区| av黄色网| 国产a片视频| 日韩在线免费看| 丁香婷婷五月基地| 精品一二三四| 校园春色av| 自拍偷拍网址| 99re这里| 粉嫩小泬BBBBBB免费| 在线免费观看黄色片| 亚洲天堂视频在线| 四川少妇BBB| 大香蕉亚洲| 97精品人妻| 色妞视频精品一区| 二区三区不卡| 亚洲伦理一区二区| 国产福利在线导航| 精品三级网站| 国产亚洲成人综合| 久久久久久免费毛片精品| 日本中文字幕免费| 亚洲香蕉在线视频| 操逼电影| jiujiuav| 91黄色片| 中文字幕av在线| AA黄色电影| 国产黄色一区| 黄色片网站视频| 夜操操| 亚洲一级性爱| 国产色视频一区二区三区QQ号| 人妻天堂| 日韩福利在线| 在线观看黄色视频网站| 国产成人一区| 日本久久人体视频| 国产乱伦影片| 俺来也俺去www色情网| 翔田千里无码AV在线观看| 国产三级免费观看| 黄色电影网站在线观看| 国精产品秘成人一区二| 国产日皮视频| 日韩视频在线免费观看| 欧美footjob高跟脚交| 亚洲性爱综合| 亚洲天堂电影网| 国产91久久婷婷一区二区| 一区二区三区观看| 牛牛免费视频| 91九色在线观看| 好叼操| av福利电影在线| 免费无码婬片A片AA片| www.毛片| 丁香五月婷婷中文字幕| 操逼视频网址| 操逼视频免费播放| a视频在线免费观看| 久草福利| 成人A片在线播放| 五月天久久综合| 精品国内自产拍在线观看视频| 高清无码视频18| 中文字幕人成人乱码亚洲电影| 国产AV三级片| 黄色三级网站| 国产另类自拍| 国产乱色精品成人免费视频| 羽月希奶水饱胀在线播放| 黄色视频在线观看免费网站| 一区二区三区中文字幕| 少妇搡BBBB搡BBBB毛多多| 雾水情缘电影港片| 成人水蜜桃| 亚洲欧洲高清无码| 骚逼黄片| 99精品免费| 农村A片婬片AAA毛片| 国产无套在线| 亚洲日韩成人AV| 中文精品在线| 日韩av在线电影| 97激情| 无码一区二区三区四区五区| 9991区二区三区四区| 91丨国产丨白丝| 国产熟妇码视频app| 色婷婷一区二区三区久久午夜 | 中文字幕浅井香舞被黑人俘虏 | 欧美日韩亚洲一区二区| 日韩a片在线观看| 在线观看者亚洲| 黄色激情网站| 超碰天天射| 成人午夜啪免费视频在线观看软件| 蜜臀AV在线播放| 自拍偷拍中文字幕| 国产精品成人电影| 摸BBB槡BBBB搡BBB,,,,,| 激情五月天综合网| 一区二区三区四区精品视频| 少妇搡BBBB搡BBB搡造水爽 | 高清无码视频观看| 黄片二区| 国产熟妇码AV| 中文字幕一区三区人妻视频| 久久久久a| 亚洲精品久久久蜜桃| 91成人视频18| 国产中文字幕AV在线播放| 国产91嫩草乱婬A片2蜜臀| 亚洲免费a| 91人妻人人人人爽| 欧美在线天堂| 做爱网站在线观看| 蜜臀AV在线观看| 大香蕉中文网| 亚洲的天堂的αⅴ| 国产18欠欠欠一区二区| 熟妇偷拍| 亚洲无码AV片| 九九热热| 无限高潮| 色情综合| 一级a免一级a做免费线看内裤的注意事项 | 一级免费爱爱| 国产办公室丝袜人妖| 黄色小视频免费看| 日韩成人视屏| 日韩人妻系列| 人人爱天天做| 黄色免费片| 91丨豆花丨成人熟女| 国产精品久久久久久久久借妻 | 欧美国产另类| 久久久久麻豆V国产精华液好用吗 色噜噜狠狠一区二区三区牛牛影视 | 一级片电影网站| 国产区在线| 天天插夜夜操| 中文字幕免费在线看一区七区| 999成人网| 国产乱伦内射| 99这里只有精品视频| 美女视频一区二区三区| 日韩欧美高清在线| 国产精品久久久精品cos| www.麻豆网91成人久久久| 成人av影院| 五月激情六月婷婷| 九一九色国产| 中文字幕av在线| 操B国产| 欧美毛片在线观看| 欧美性网| 自拍偷拍一区二区三区| 久久天堂AV综合合色蜜桃网| 国产一级a毛一级a做免费高清视频| 亚洲www| 国产三级图片| 国产一级片在线| 91精品久久人妻一区二区夜夜夜| 日韩vA| 免费观看高清无码| 99在线播放| 中文字幕淫乱视频欧美| 大香蕉免费| 国产激情视频在线播放| 国产又爽又黄免费视频免费观看| 亚洲无码中文字幕视频| 午夜福利大香蕉| 国内精品无码| 91宗合| 加勒比日韩| A片一级片| 成人午夜小电影| 三级AV网站| 婷婷av在线| 麻豆91精品91久久久停运原因| 国內精品久久久久久久| 岛国av在线播放| 欧洲肥胖BBBBBBBBBB| 亚洲精品乱码久久久久久久| 人妻无码电影推荐| 久久肏屄视频| 精品一二三四| 无码少妇视频| 午夜成人小视频| 日日搔AV一区二区三区| 国产精品一线| 欧美熟女性爱| 麻豆精品无码| 精品视频| 欧美激情婷婷| 蜜桃AV无码一区二区三区| 天天日天天操天天射| 伊人影院麻豆| 六月丁香婷| 色老板网站| 色欲色欲一区二区三区| 亚洲小说欧美激情另类A片小说| 四虎永久在线精品无码| 91天天操| AV黄色在线观看| 火淫玖玖免费精品| 成人精品一区日本无码网站suv| 粉粉嫩嫩的18虎白女| 妖精视频黄色| 一级欧美黑人大战白妞| 麻豆免费成人传媒| 2021狠狠操| 四色永久成人网站| 亚洲天堂中文字幕| www.豆花社区成人| 色综合一区二区三区| 撸撸操在线视频观看只有精品| 国产最新av| 久久99热这里只频精品6学生| 亚洲无码人妻一区| 2025AV在线| 超碰99在线| 香蕉视频啪啪啪| 青青艹在线视频| 亚洲精品国产成人无码区在线| 日韩AV乱伦| 久久久久久久国产精品| 97色色视频| 亚洲成人三级| 极品美女援交在线| 亚洲GV成人无码久久精品|