精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL 事務兩階段提交原理簡析

數據庫 MySQL
MySQL 中的日志非常重要,包括實例內的事務以及實例間的主從復制均基于日志實現。

引言

MySQL 中的日志非常重要,包括實例內的事務以及實例間的主從復制均基于日志實現。

計劃通過多篇文章分析多種日志,從而串聯日志、事務、復制三個模塊之間的關系,本文是第一篇文章,介紹兩階段提交。

其中首先介紹為什么需要兩階段提交,然后簡單分析兩階段提交的實現,期間介紹相關知識點,包括分布式事務與崩潰恢復。

概念

兩份日志

MySQL 中最重要的兩份日志是 redo log 與 binlog。

為什么會有兩份日志,原因是使用場景不同。

其中:

  • redo log 用于實現事務的持久性,具體是通過 crash-safe 能力;
  • binlog 用于實現主從復制與數據恢復。

兩份日志主要有以下三點不同;

  • redo log 是 InnoDB 存儲引擎層實現的特有的日志,binlog 是 Server 層實現的通用的日志;
  • redo log 是物理日志,binlog 是邏輯日志;
  • redo log 是循環寫入,binlog 是追加寫入。

兩階段提交

為了保證兩份日志之間的邏輯一致,也就是數據與備份的一致性,引入兩階段提交(two-phase commit protocol,2PC)。

為什么需要兩階段提交,那么如果沒有兩階段提交,會發生什么呢?

由于 redo log 和 binlog 是兩個獨立的邏輯,如果不用兩階段提交,要么就是先寫完 redo log 再寫 binlog,或者采用反過來的順序。

假設執行 update,將值從 1 改為 2。

假設:

  • 先寫 redo log 后寫 binlog,如果 redo log 寫完后 MySQL 進程異常重啟,redo log 崩潰恢復后值為 2,但是基于 binlog 備份恢復值為 1,并導致備份恢復少了一個事務;
  • 先寫 binlog 后寫 redo log,如果 binlog 寫完后 MySQL 進程異常重啟,基于 binlog 備份恢復值為 2,但是 redo log 還沒寫因此崩潰恢復后事務無效,值為 1,并導致備份恢復多了一個事務。

顯然,如果沒有兩階段提交,無法保證數據與日志的一致性。

那么,有兩階段提交時會怎么樣呢?

首先,介紹下兩階段提交的過程,其中將 redo log 的提交拆分為兩個步驟,包括 prepare 與 commit,期間寫入 binlog。

因此,如果在兩階段提交的不同時刻,MySQL 異常重啟會發生什么呢?

  • 如果在時刻 A 重啟,也就是 redo log prepare 之后,寫入 binlog 之前,崩潰恢復時發現 redo log 沒有 commit,因此回滾。binlog 還沒寫,因此不會傳到備庫,數據與日志保持一致;
  • 如果在時刻 B 重啟,也就是寫入 binlog 之后,redo log commit 之前,崩潰恢復時發現 redo log 雖然沒有 commit,但是 redo log 有完整的 prepare,且對應的事務 binlog 完整,因此提交事務。binlog 寫入,因此會傳到備庫,數據與日志保持一致。

崩潰恢復

從前一節的描述中可以發現崩潰恢復時根據兩階段提交的進度進行處理。

參考 MySQL 45 講,崩潰恢復(crash-recovery)時的完整判斷邏輯為:

  • 如果 redo log 里面的事務完整,也就是已經有了 commit 標識,直接提交;
  • 如果 redo log 里面的事務只有完整的 prepare,進一步判斷對應的事務 binlog 是否存在且完整:
  • 如果是,提交事務;
  • 否則,回滾事務。

因此,redo log prepare 后 commit 前崩潰恢復時可能發生回滾或提交,具體與 binlog 的完整性有關。

顯然,時刻 B 發生 crash 的情況對應 redo log prepare 完整,且 binlog 完整的場景,因此事務提交。

這里可以提出以下兩個問題:

1)如何判斷 binlog 完整

2)如何根據 redo log 定位對應的 binlog

接下來分別回答這兩個問題。

1)如何判斷 binlog 完整

判斷 binlog 的完整性有以下兩種方式:

  • 在事務提交時記錄 XID event 到 binlog 中以標記事務的結束。這個機制確保了事務的完整性和一致性,無論使用哪種復制格式;
  • 在 MySQL 5.6.2 版本以后,還引入了 binlog-checksum 參數,用于驗證 binlog 內容的正確性。通過為 binlog 中的每個事件添加校驗和(checksum),MySQL 能夠檢測到寫入 binlog 時由于磁盤錯誤等原因導致的數據損壞。

如下所示,測試顯示 row 與 statement 兩種 bnlog 格式中事務的最后一個 event 都是 XID event。

2)如何根據 redo log 定位對應的 binlog

redo log 與 binlog 有一個共同的數據字段,稱為 XID。

崩潰恢復的時候,會按順序掃描 redo log:

  • 如果碰到既有 prepare、又有 commit 的 redo log,就直接提交;
  • 如果碰到只有 parepare、而沒有 commit 的 redo log,就拿著 XID 去 binlog 找對應的事務。

其中:

  • redo log 掃描的起點是 InnoDB 最后一次 checkpoint 操作的 lsn(last_checkpoint_lsn)。
  • XID 與分布式事務有關,下一節中介紹。

這里可以提出另一個問題,根據事務的持久性,到什么進度后事務將無法回滾?

理論上 MySQL 中通過 redo log 實現事務的持久性,因此 redo log 刷盤后就可以保證對數據庫的修改是永久性的,即使發生崩潰也不會丟失,當然也不會回滾。

不過根據事務的兩階段提交協議,binlog 寫入代表事務提交,同樣不可能發生回滾。

因此,事務無法回滾的關鍵點是事務的提交,而不是單純的 redo log 或 binlog 的寫入。在事務提交的過程中,兩階段提交機制確保了 redo log 和 binlog 的一致性,這個提交過程標志著事務從可回滾轉變為不可回滾。

XA 事務

分布式事務是一種跨多個獨立的數據庫、系統或網絡區域的事務處理方法。

XA 事務是一種遵循 XA 規范的分布式事務,因此 XA 事務是分布式事務的一種實現。

XA 事務依賴兩階段提交(2PC)協議實現分布式事務的一致性和原子性。

兩階段提交是最常見的分布式事務協議,用于保證分布式事務的原子性,顯然并不是 MySQL 獨有的。

根據 XA 規范,兩階段提交的實現過程中包括兩個角色:

  • 資源管理器(Resource Manager),可以稱為執行器,用于管理分布式數據庫的一個本地事務;
  • 事務管理器(Transaction Manager),可以稱為協調器,用于協調事務的提交、回滾、崩潰恢復。

兩階段提交中將提交操作分為兩個階段:

  • prepare 階段,協調器詢問所有執行器,是否可以提交事務,如果任何一個執行器的本地事務無法提交時,分布式事務都需要通知所有執行器進行回滾操作;
  • commit 階段,協調器在收到每一個執行器的提交確認后,通知執行器各自提交自己的本地事務。

MySQL 中的 XA 事務分為外部 XA 與內部 XA。其中:

  • 外部 XA,MySQL 服務器作為執行器,連接服務器的客戶端程序作為協調器,對應多個支持分布式事務的數據庫實例,比如多套 MySQL(使用分庫分表中間件)、Oracle + MySQL;
  • 內部 XA,對應單個 MySQL 實例,分為以下兩種場景:
  • 沒有開啟 binlog,SQL 語句涉及一個或多個支持事務的存儲引擎;

開啟 binlog,SQL 語句涉及一個或多個支持事務的存儲引擎。

其中,由于 binlog 與存儲引擎是獨立單元,可以將 binlog 也看作一個存儲引擎,因此需要通過 XA 事務實現 binlog 與存儲引擎的數據一致性和原子性,從而保證全部操作要么全部提交,要么全部回滾。

在分布式事務中,XID作為全局事務的唯一標識符,用于跟蹤和協調不同數據庫實例中的事務部分。這個標識符在事務的所有參與者之間是共享的,以確保事務的一致性和完整性。

因此在 XA 事務中,XID用于在多個數據庫實例之間協調事務。

在 MySQL 中,XID(Transaction Identifier)是事務的唯一標識符,用于標記事務的提交。

binlog 中一個事務由一系列事件(event)組成,這個序列由 BEGIN 事件開始,以 XID 事件結束(對于提交的事務)。

因此如果事務被回滾,不會記錄 XID 事件,而是記錄一個 ROLLBACK 事件。

參考 chatgpt,XID 與 GTID 的主要區別包括:

  • XID:是事務的標識符,用于標記事務的結束,主要用于事務的恢復和復制過程中確定事務邊界。對于分布式事務,所有 MySQL 實例使用相同的 XID 來提交事務;
  • GTID(全局事務標識符):是 MySQL 5.6 及更高版本中引入的,用于唯一標識每個事務。每個 GTID 都是全局唯一的,即使在不同的 MySQL 實例中也是如此。GTID 使得跟蹤和復制事務變得更加簡單和可靠。

實現

prepare

參考文章 MySQL 事務二階段提交 與 MySQL 核心模塊揭秘 | 07 期 | 二階段提交 (1) prepare 階段,prepare 階段做的事情分為兩類:

  • binlog prepare,對應 binlog_prepare 函數,什么都不做;
  • InnoDB prepare,對應 innobase_xa_prepare 函數,具體做五件事情:
  • 把分配給事務的所有 Undo segment 的狀態 TRX_UNDO_STATE 從 TRX_UNDO_ACTIVE 修改為 TRX_UNDO_PREPARED;
  • 把事務 XID 寫入所有 Undo segment 中當前提交事務的 Undo Log Segment Header;
  • 把內存中的事務對象狀態從 TRX_STATE_ACTIVE 修改為 TRX_STATE_PREPARED,標識事務已經進入二階段提交的 prepare 階段;
  • 如果當前提交事務的隔離級別是讀未提交(READ-UNCOMMITTED)或讀已提交(READ-COMMITTED),InnoDB 會釋放事務給記錄加的共享、排他 GAP 鎖;
  • 調用 trx_flush_logs(),處理 redo log 刷盤的相關邏輯,其中實際上并不會將 redo log 刷盤,也就是同樣什么都不做。

其中 undo log 非常重要,原因是:

  • TRX_UNDO_STATE 用于崩潰恢復過程中,標記哪些事務需要恢復,哪些事務不用恢復。
  • XID 用于崩潰恢復過程中,決定數據庫崩潰時處于 prepared 階段的事務,是要回滾還是要提交。

參考文章 XA事務與兩階段提交。

Undo頁面鏈表的第一個頁面的結構見下圖,其中記錄了一些關于這個事務的一些屬性。

其中 Undo Log Segment Header 結構見下圖,其中 TRX_UNDO_STATE 字段表示事務所處的狀態。

其中 Undo Log Header 結構見下圖。

其中:

  • TRX_UNDO_XID_EXISTS:表示有沒有 XID 信息;
  • XID信息:表示具體的 XID 是什么。

TRX_UNDO_STATE 的取值包括:

  • TRX_UNDO_ACTIVE:活躍狀態,也就是一個活躍的事務正在往這個段里邊寫入 undo log;
  • TRX_UNDO_CACHED:被緩存的狀態。處在該狀態的 Undo 頁面鏈表等待著之后被其他事務重用;
  • TRX_UNDO_TO_FREE:對于 insert undo 鏈表來說,如果在它對應的事務提交之后,該鏈表不能被重用,那么就會處于這種狀態。Undo 頁面鏈表可以被馬上清理;
  • TRX_UNDO_TO_PURGE:對于 update undo 鏈表來說,如果在它對應的事務提交之后,該鏈表不能被重用,那么就會處于這種狀態。Undo 頁面鏈表不可以被馬上清理,而是加入 History 鏈表用于 MVCC,等待 purge 線程清理;
  • TRX_UNDO_PREPARED:包含處于 prepare 階段(這個階段是在分布式事務中會出現)的事務產生的 undo log。

commit

commit 階段做的事情同樣分為兩類:

  • binlog 刷盤,對應 flush 函數,將事務執行過程中產生的 binlog 寫入硬盤;
  • InnoDB commit,對應 innobase_commit 函數,完成存儲引擎層面的事務提交。

具體 commit 階段的實現與組提交有關,計劃下一篇文章中介紹。

因此,在客戶端執行 commit 語句或自動 commit 時,MySQL 開啟內部 XA 事務,分兩階段完成 XA 事務的提交。

崩潰恢復

崩潰恢復全過程分為多個階段,其中與事務兩階段提交有關的階段包括:

  • 恢復數據頁,通過 doublewrite buffer 修復部分頁寫入(partial page write)導致的數據頁損壞;
  • 讀取 redo log,從 last_checkpoint_lsn 開始讀取 redo log;
  • 應用 redo log 到數據頁,將沒有寫入數據頁的日志重做一遍,從而保證事務的持久性;
  • 初始化事務子系統,從 undo 表空間文件讀取未完成的事務;
  • 處理未完成事務,其中:
  • 如果事務 XID 對應 binlog 已寫入文件,事務提交;
  • 如果事務 XID 對應 binlog 未寫入文件,事務回滾。
  • 清理已提交事務,對應 TRX_STATE_COMMITTED_IN_MEMORY,包括 DDL 與 DML;
  • 回滾未提交事務,對應 TRX_STATE_ACTIVE,包括 DDL 與 DML;
  • 處理 prepare 事務,對應 TRX_STATE_PREPARED,其中:

未完成事務的狀態可能是以下三種之一:

  • TRX_STATE_ACTIVE,表示事務還沒有進入提交階段。
  • TRX_STATE_PREPARED,表示事務已經提交了,但是只完成了二階段提交的 PREPARE 階段,還沒有完成 COMMIT 階段。
  • TRX_STATE_COMMITTED_IN_MEMORY,表示事務已經完成了二階段提交的 2 個階段,還剩一些收尾工作沒做,這種狀態的事務修改的數據已經可以被其它事務看見了。

其中未提交事務 TRX_STATE_ACTIVE 對應 redo log 已經刷盤的未提交事務,包括以下三種場景:

  • 后臺線程定時將 redo log buffer 中的日志刷盤時將事務執行中間過程的 redo log 持久化到磁盤;
  • redo log buffer 占用的空間即將達到 innodb_log_buffer_size 一半時,后臺線程會主動寫盤,即使事務并沒有提交;
  • 并行的事務提交時,順帶將這個事務的 redo log buffer 持久化到磁盤。假設一個事務 A 執行到一半,已經寫了一些 redo log 到 buffer 中,這時候有另外一個線程的事務 B 提交,如果 innodb_flush_log_at_trx_commit 設置的是 1,那么按照這個參數的邏輯,事務 B 要把 redo log buffer 里的日志全部持久化到磁盤。這時候,就會帶上事務 A 在 redo log buffer 里的日志一起持久化到磁盤。

因此,為了保證事務的原子性,需要在崩潰恢復時將這些未提交事務回滾,而找到這些未提交事務依賴 undo log。

結論

MySQL 通過事務的兩階段提交實現數據與日志的一致性。

其中數據指 redo log,日志指 binlog,可以認為是兩個不同的存儲引擎,因此基于分布式事務的 XID 協議實現一致性。

具體實現中將 redo log 的提交拆分為兩個步驟,包括 prepare 與 commit,期間寫入 binlog。

因此,寫入的不同階段異常重啟時:

  • redo log commit crash,binlog 完整,因此事務提交;
  • binlog crash,redo log 沒有 commit,且沒有寫入 binlog,因此事務回滾。

具體是在崩潰恢復過程中基于兩階段提交保證事務的一致性。

其中:

  • redo log application 階段用于將沒有寫入數據頁的日志重做一遍,把系統恢復到崩潰前的狀態,其中都是提交,沒有回滾;
  • 初始化事務子系統階段從表空間中找到各個 Undo 頁面鏈表的首個頁面的頁號,然后根據事務的狀態處理未完成事務。其中:
  • TRX_STATE_ACTIVE,表明是未提交事務,因此回滾事務;
  • TRX_STATE_PREPARED,進一步判斷 XID 對應 binlog 是否存在,如果有,提交事務,否則回滾事務;
  • TRX_STATE_COMMITTED_IN_MEMORY,表明是已提交事務,因此提交事務,具體是清理已提交事務。

因此,可以將崩潰恢復過程中使用的日志的順序理解為 redo log、undo log、binlog。

責任編輯:華軒 來源: 丹柿小院
相關推薦

2022-12-21 19:04:35

InnoDBMySQL

2023-07-26 09:24:03

分布式事務分布式系統

2022-03-28 10:44:51

MySQL日志存儲

2025-06-19 08:03:03

2025-06-10 08:02:15

2025-05-16 07:46:11

分布式事務服務

2024-01-26 08:18:03

2024-12-06 07:10:00

2017-08-30 18:15:54

MySql

2018-10-29 08:44:29

分布式兩階段提交事務

2023-11-29 07:47:58

DDIA兩階段提交

2023-12-05 09:33:08

分布式事務

2023-01-18 10:35:49

MySQL數據庫

2025-04-07 03:00:00

MySQLDDLonline

2022-07-27 08:52:10

MySQL二階段提交

2020-02-03 12:12:28

MySQL數據庫SQL

2024-07-22 08:57:58

2010-04-20 20:46:01

負載均衡

2024-03-26 16:24:46

分布式事務2PC3PC

2015-05-13 10:36:43

點贊
收藏

51CTO技術棧公眾號

av成人在线播放| 毛片在线播放网址| 一区二区视频欧美| 精品无人区乱码1区2区3区在线| 国产欧美高清在线| 日本免费在线观看| 成人免费黄色在线| 国产精品99久久99久久久二8| 欧美美女性生活视频| 一区二区三区亚洲变态调教大结局 | 日本高清不卡的在线| 国产大屁股喷水视频在线观看| 草草视频在线一区二区| 欧美伊人久久久久久久久影院| 午夜啪啪福利视频| 国产免费av高清在线| 欧美国产亚洲精品| 麻豆一区在线观看| 高清毛片在线看| 国产做a爰片久久毛片| 韩国三级电影久久久久久| 亚洲做受高潮无遮挡| 国产精品毛片无码| 欧美日韩亚洲精品内裤| 400部精品国偷自产在线观看 | 黄色在线观看www| 国产精品福利av| 欧美国产综合视频| 好吊色在线观看| 黑人巨大精品欧美一区| 国产成一区二区| 800av免费在线观看| 欧美午夜一区二区福利视频| 日韩黄色大片网站| 人妻无码中文字幕免费视频蜜桃| 中国av一区| 精品少妇一区二区三区免费观看| 国产精品igao视频| 一道本在线观看| 国偷自产av一区二区三区| 91麻豆精品国产自产在线| 大陆极品少妇内射aaaaa| 亚洲精品天堂| 国产精品久久久久久亚洲毛片| 久久影院理伦片| 国产 欧美 自拍| 国产成人在线网站| 91视频九色网站| 国产精选久久久| 视频免费一区| 精品中文av资源站在线观看| 国产精品日韩精品| 无码人妻精品一区二区50| 亚洲一区国产一区| 国内免费久久久久久久久久久| 青娱乐91视频| 欧美日韩视频| 欧美激情亚洲综合一区| 久久久久久久福利| 日韩午夜黄色| 欧美中文字幕视频在线观看| 久久精品视频5| 日韩在线a电影| 国产精品中文字幕久久久| 91久久国语露脸精品国产高跟| 美女国产一区二区| 91九色综合久久| 国产黄色高清视频| 不卡影院免费观看| 免费看污久久久| 二区三区在线| 亚洲视频在线一区| 免费人成自慰网站| 成年美女黄网站色大片不卡| 91福利资源站| 中文字幕资源在线观看| 亚洲3区在线| 亚洲精品不卡在线| www..com.cn蕾丝视频在线观看免费版 | 日韩久久综合| 欧美成人h版在线观看| 精品少妇久久久久久888优播| 亚洲国产精品一区| 国产成人免费av电影| 91在线公开视频| 成人免费视频视频| 日本一区二区精品| 97caopor国产在线视频| 亚洲v中文字幕| 中文字幕有码av| 成人h动漫免费观看网站| 亚洲国产精品推荐| 中文字幕观看av| 亚洲国产日韩在线| 国产狼人综合免费视频| 免费观看黄一级视频| 国产婷婷一区二区| 国产一级大片免费看| 欧美极品影院| 欧美成人伊人久久综合网| 女人又爽又黄免费女仆| 国产精品久久久久9999赢消| 97香蕉久久超级碰碰高清版 | a级片在线免费观看| 欧美性69xxxx肥| 亚洲第一成肉网| 偷拍一区二区| 色综合五月天导航| 做爰视频毛片视频| 波多野结衣中文一区| 亚洲一二三区在线| 忘忧草在线影院两性视频| 51精品视频一区二区三区| av直播在线观看| 欧美xxx在线观看| 国产欧美亚洲精品| 亚洲 美腿 欧美 偷拍| 亚洲欧美日韩国产综合在线 | 久久uomeier| 日韩免费高清av| av黄色免费在线观看| 模特精品在线| 国产日韩在线一区二区三区| 成人免费在线| 欧美日韩国产中文| 国产精品1000部啪视频| 欧美日韩蜜桃| 亚洲一区二区三区乱码aⅴ蜜桃女| 男人天堂综合| 欧美日韩亚洲91| 国产视频精品视频| 欧美国产免费| 成人在线播放av| 97超碰人人在线| 在线观看亚洲一区| 草草影院第一页| 国产精品美女| 精品无人区一区二区三区竹菊| 中文字幕在线观看网站| 制服丝袜亚洲精品中文字幕| 性少妇xx生活| 久久电影网站中文字幕| 一个色的综合| 成人黄色91| 久久精品国产v日韩v亚洲 | 精品国产a毛片| 免费三片在线播放| 粉嫩aⅴ一区二区三区四区 | 国产精品视频一区二区在线观看| 美女诱惑一区二区| 伊人色综合影院| 久久不卡日韩美女| 久久精品视频亚洲| 国产偷拍一区二区| 亚洲国产日日夜夜| 色综合久久五月| 麻豆久久婷婷| 日韩久久精品一区二区三区| 国产精品伊人| 欧美另类在线观看| 色综合视频在线| 色先锋aa成人| 你懂得视频在线观看| 久久成人免费电影| 一级性生活视频| 麻豆一区一区三区四区| 国产成人精品久久| v片在线观看| 精品剧情在线观看| 精品免费囯产一区二区三区| 国产欧美一区二区精品性| 中文字幕视频三区| 激情视频一区| 久久亚洲精品欧美| 国内精品伊人| 久久噜噜噜精品国产亚洲综合| 日本在线视频1区| 欧美日韩中文国产| 国产一级片免费看| 久久精品无码一区二区三区| 亚洲一区二区福利视频| 亚洲经典在线| 亚洲精品国产精品国自产| 欧美日本三级| 国产91在线播放| 成人免费看片| 精品亚洲国产成av人片传媒| 一道本无吗一区| 亚洲成av人片在www色猫咪| 成人在线一级片| 国产精品资源在线| 免费黄色日本网站| 一精品久久久| 秋霞在线观看一区二区三区| 亚洲一区二区电影| 日韩免费在线视频| 欧美另类tv| 伊人成人开心激情综合网| 亚洲国产精品成人久久蜜臀| 在线视频观看一区| 国产大片中文字幕在线观看| 欧美激情中文字幕一区二区| 中国黄色片视频| 精品无人区卡一卡二卡三乱码免费卡| 男人添女人下面高潮视频| 亚洲女同中文字幕| 欧美中日韩免费视频| 99久久香蕉| 国产精品户外野外| а√天堂资源官网在线资源| 久久久精品国产亚洲| 精品欧美不卡一区二区在线观看| 日韩欧美第一区| 在线观看国产精品入口男同| 图片区小说区国产精品视频| 丝袜 亚洲 另类 欧美 重口 | 久久免费小视频| 国产精品久久久久久久蜜臀| 日本黄色片在线播放| 成人午夜碰碰视频| 17c国产在线| 免费成人av资源网| 国产日韩一区二区在线观看| 伊人久久久大香线蕉综合直播| 在线综合视频网站| 精品国产一区二区三区| 免费国产一区二区| 美女视频免费精品| 国产精品一 二 三| 91在线一区| 97在线资源站| 精品国产不卡一区二区| 国产在线久久久| 精品亚洲a∨| 国产精品第二页| 免费污视频在线一区| 国产成人精品视频| 欧美日韩尤物久久| 国产精品久久久久久久av大片 | 91亚洲永久免费精品| 日韩国产一二三区| 国产在线观看精品一区二区三区| 成人久久网站| 国产综合福利在线| 白嫩亚洲一区二区三区| 亚洲永久在线观看| 亚洲精品视频一二三区| yellow视频在线观看一区二区| 天堂va欧美ⅴa亚洲va一国产| 91亚洲va在线va天堂va国| 精品中文字幕一区二区三区四区| 亚洲一区二区自拍| 中文字幕一区日韩精品| 国产精品国模大尺度私拍| 国产精品对白| 免费观看成人在线| 欧美日中文字幕| 日韩视频在线免费播放| 一区二区三区中文| 蜜臀av色欲a片无码精品一区| 亚洲人成在线影院| 亚洲成熟丰满熟妇高潮xxxxx| 三级精品在线观看| 97人人爽人人| 国产ts人妖一区二区| 亚洲精品乱码久久久久久久| 91美女片黄在线观看| 人成免费在线视频| 亚洲伦在线观看| 久久久久久久99| 91国偷自产一区二区使用方法| 在线播放一级片| 欧美大片在线观看| 欧美美女色图| xxx一区二区| h片在线观看下载| 国产成人在线一区二区| 高清久久精品| 蜜桃传媒视频麻豆一区| 成人精品视频| 国产精品久久国产| 日韩成人免费电影| 久久久久亚洲av无码专区首jn| jizz一区二区| 91麻豆精品久久毛片一级| 亚洲成av人在线观看| 夜夜躁日日躁狠狠久久av| 91麻豆精品国产91久久久久| 人妻一区二区三区| 日韩小视频在线观看| 成人影院在线视频| 91精品视频在线播放| 午夜精品福利影院| 欧美 另类 交| 麻豆亚洲精品| 99久久久无码国产精品性波多 | 免费人成自慰网站| 免费高清在线一区| 这里只有精品在线观看视频| 中文字幕一区二区5566日韩| 伊人手机在线视频| 欧美一区二区久久| а天堂8中文最新版在线官网| 欧美激情免费观看| 人人精品久久| 日韩欧美亚洲在线| 亚洲久久在线| 中文字幕在线观看视频www| 国产亚洲一区二区三区在线观看 | 99国产精品私拍| 无码国产精品一区二区高潮| 中文字幕成人在线观看| 亚洲精品1区2区3区| 日韩一区二区三区免费观看| 搞黄视频免费在线观看| 97香蕉久久夜色精品国产| 亚洲国产一区二区三区网站| 一区二区视频在线播放| 久久深夜福利| 亚洲天堂av网站| 一区二区三区自拍| 国产一区二区三区成人| 在线精品国产成人综合| 国产精品专区免费| 极品日韩久久| 极品av少妇一区二区| 性色av浪潮av| 日韩毛片在线免费观看| 亚洲系列第一页| 国产一区二区三区日韩欧美| 亚洲精品福利电影| 精品91免费| 亚洲精品九九| 午夜视频在线观看国产| 亚洲一二三专区| 黑人精品一区二区| 欧美第一淫aaasss性| 亚洲日本视频在线| 久久亚洲a v| 成人一级视频在线观看| 国产小视频在线观看免费| 日韩欧美亚洲国产精品字幕久久久 | 五月亚洲婷婷| 成人一区二区av| 国产99久久久国产精品潘金网站| 欧美日韩综合一区二区| 日韩欧美精品在线| 日本在线观看大片免费视频| 鬼打鬼之黄金道士1992林正英| 午夜精品久久99蜜桃的功能介绍| 一级日本黄色片| 一区二区三区欧美激情| 欧洲成人一区二区三区| 97成人超碰免| 色综合综合色| 中文字幕国内自拍| 亚洲欧洲精品成人久久奇米网 | 精品中文视频在线| 经典三级一区二区| 一本一本久久a久久精品综合妖精| 激情综合色播激情啊| 在线免费日韩av| 精品国产a毛片| 色尼玛亚洲综合影院| 在线观看国产一区| 国产精品亚洲专一区二区三区| 日韩av女优在线观看| 亚洲欧美日韩高清| 9999精品| 日本a视频在线观看| 国产午夜精品福利| 99久久精品国产一区二区成人| 欧美黑人性生活视频| 牲欧美videos精品| www亚洲成人| 亚洲第一成人在线| 国产精品无码2021在线观看| 91亚洲va在线va天堂va国| 亚洲视频1区| 欧美xxxooo| 亚洲国产精品人人爽夜夜爽| 本网站久久精品| www.欧美黄色| 国产三级一区二区三区| 国产喷水福利在线视频| 热久久视久久精品18亚洲精品| 99热国内精品永久免费观看| 一级欧美一级日韩片| 欧美日韩免费不卡视频一区二区三区| 欧美aaa免费| 日日骚一区二区网站| 成人污视频在线观看| 中文文字幕一区二区三三| 久久久久国产视频| 日韩大片在线播放| 中文字幕日韩三级片| 91精品国产麻豆国产自产在线| 中文字幕在线看片| 污污污污污污www网站免费| 国产网红主播福利一区二区|