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

硬核干貨!一文掌握MySQL核心日志:binlog 、redo log、undo log

數據庫 MySQL
只要是對數據庫有變更的操作都會記錄到binlog里面來,我們可以把數據庫的數據看做銀行賬戶里的余額,而binlog就相當于我們銀行卡的流水記錄。賬戶余額只是一個結果,至于這個結果怎么來的,那就必須得看流水了。

在MySQL 中我們經常會接觸到三個核心日志,它們分別是:binlog、redo log、undo log。

好多同學對于它們可能并不陌生,但是具體區分起來各自的功能用途以及實現原理,那可能認知就會比較模糊了,今天就跟大家一起,來清晰明了的介紹一下這些日志的核心思想和功能原理。

圖片圖片

1 binlog

1.1 binlog 設計目標

binlog 記錄了對MySQL數據庫執行更改的所有的寫操作,包括所有對數據庫的數據、表結構、索引等等變更的操作。

注意:這其中不包含SELECT、SHOW等,因為對數據沒有修改

只要是對數據庫有變更的操作都會記錄到binlog里面來,我們可以把數據庫的數據看做銀行賬戶里的余額,而binlog就相當于我們銀行卡的流水記錄。賬戶余額只是一個結果,至于這個結果怎么來的,那就必須得看流水了。

在實際應用中, binlog 的主要應用場景分別是 主從復制 和 數據恢復

  • 主從復制 :在 Master 端開啟 binlog ,然后將 binlog 發送到各個 Slave 端, Slave 端重放 binlog 來達到主從數據一致。
  • 數據恢復 :通過使用 mysqlbinlog 工具來恢復數據。

圖片圖片

1.2 binlog 數據格式

binlog 日志有三種格式,分別為 STATMENT 、 ROW 和 MIXED。

在 MySQL 5.7.7 之前,默認的格式是 STATEMENT , MySQL 5.7.7 之后,默認值是 ROW。日志格式通過 binlog-format 指定。

  • ROW:基于行的復制(row-based replication, RBR),不記錄每條SQL語句的上下文信息,僅需記錄哪條數據被修改了。如果一個update語句修改一百行數據,那么這種模式下就會記錄100行對應的記錄日志。

優點:不會出現某些特定情況下的存儲過程、或function、或trigger的調用和觸發無法被正確復制的問題;

缺點:會產生大量的日志,尤其是 alter table 的時候會讓日志暴漲。

  • STATMENT:基于SQL語句的復制( statement-based replication, SBR ),每一條會修改數據的SQL語句會記錄到 binlog 中 。相對于ROW模式,STATEMENT模式下只會記錄這個 update 的語句,所以此模式下會非常節省日志空間,也避免著大量的IO操作。

優點:不需要記錄每一行的變化,減少了 binlog 日志量,節約了 IO  , 從而提高了性能;

缺點:在某些情況下會導致主從數據不一致,比如執行sysdate() 、  slepp()  等 。

  • MIXED:基于 STATMENT 和 ROW 兩種模式的混合復制(mixed-based replication, MBR),一般的復制使用 STATEMENT 模式保存 binlog ,對于一些函數,STATEMENT 模式無法復制的操作使用 ROW 模式保存 binlog。

基于這三種模式需要注意的是:

1)使用 row 格式的 binlog 時,在進行數據同步或恢復的時候不一致的問題更容易被發現,因為它是基于數據行記錄的。

2)使用 mixed 或者 statement 格式的 binlog 時,很多事務操作都是基于SQL邏輯記錄,我們都知道一個SQL在不同的時間點執行它們產生的數據變化和影響是不一樣的,所以這種情況下,數據同步或恢復的時候就容易出現不一致的情況。

1.3 binlog 寫入策略

對于 InnoDB 存儲引擎而言,在進行事務的過程中,首先會把binlog 寫入到binlog cache中(因為寫入到cache中會比較快,一個事務通常會有多個操作,避免每個操作都直接寫磁盤導致性能降低),只有在事務提交時才會記錄 biglog ,此時記錄還在內存中,那么 biglog 是什么時候刷到磁盤中的呢?

MySQL 其實是通過 sync_binlog 參數控制 biglog 的刷盤時機,取值范圍是 0-N:

  • 0:每次提交事務binlog不會馬上寫入到磁盤,而是先寫到page cache。不去強制要求,由系統自行判斷何時寫入磁盤,在Mysql 崩潰的時候會有丟失日志的風險;
  • 1:每次提交事務都會執行 fsync 將 binlog 寫入到磁盤;
  • N:每次提交事務都先寫到page cach,只有等到積累了N個事務之后才 fsync 將 binlog 寫入到磁盤,在 MySQL 崩潰的時候會有丟失N個事務日志的風險。

很顯然三種模式下,sync_binlog=1 是強一致的選擇,選擇0或者N的情況下在極端情況下就會有丟失日志的風險,具體選擇什么模式還是得看系統對于一致性的要求。

2、redo log

2.1 redo log 設計目標

redo log 是屬于引擎層(innodb)的日志,稱為重做日志 ,當MySQL服務器意外崩潰或者宕機后,保證已經提交的事務持久化到磁盤中(持久性)。

它能保證對于已經COMMIT的事務產生的數據變更,即使是系統宕機崩潰也可以通過它來進行數據重做,達到數據的持久性,一旦事務成功提交后,不會因為異常、宕機而造成數據錯誤或丟失。

圖片圖片

2.2 redo log 數據格式

redo log 包括兩部分:

  • 內存中的日志緩沖(redo log buffer)
  • 內存層面,默認16M,通過innodb_log_buffer_size參數可修改
  • 磁盤上的日志文件(redo logfile)
  • 持久化的,磁盤層面

MySQL 每執行一條 DML 語句,先將記錄寫入 redo log buffer,后續某個時間點再一次性將多個操作記錄寫到 redo log file。

通常所說的Write-Ahead Log(預先日志持久化)指的是在持久化一個數據頁之前,先將內存中相應的日志頁持久化。

在計算機操作系統中,用戶空間( user space )下的緩沖區數據一般情況下是無法直接寫入磁盤的,中間必須經過操作系統內核空間( kernel space )緩沖區( OS Buffer )。

因此, redo log buffer 寫入 redo logfile 實際上是先寫入 OS Buffer ,然后再通過系統調用 fsync() 將其刷到 redo log file中,過程如下:

圖片圖片


修改數據的操作流程:

圖片圖片

  • 先將原始數據從磁盤中讀入內存中來,修改數據的內存拷貝,產生臟數據
  • 生成一條重做日志并寫入redo log buffer,記錄的是數據被修改后的值
  • 默認在事務提交后將redo log buffer中的內容刷新到redo log file,對redo log file采用追加寫的方式
  • 定期將內存中修改的數據刷新到磁盤中(這里說的是那些還沒及時被后臺線程刷盤的臟數據)

2.3 關于 redo log 的幾點疑惑

讀到這里,相必有同學會有如下疑問:

Q1:為什么不直接修改磁盤中的數據?

因為直接修改磁盤數據的話,它是隨機IO,修改的數據分布在磁盤中不同的位置,需要來回的查找,所以命中率低,消耗大,而且一個小小的修改就不得不將整個頁刷新到磁盤,利用率低;

與之相對的是順序IO,磁盤的數據分布在磁盤的一塊,所以省去了查找的過程,節省尋道時間。

使用后臺線程以一定的頻率去刷新磁盤可以降低隨機IO的頻率,增加吞吐量,這是使用buffer pool的根本原因。

Q2:同為操作數據變更的日志,有了binlog為什么還要redo log?

我認為最核心的一點就是兩者記錄的數據變更粒度是不一樣的。

以修改數據為例,binlog 是以表為記錄主體,在ROW模式下,binlog保存的表的每行變更記錄。

MySQL 是以頁為單位進行刷盤的,每一頁的數據單位為16K,所以在刷盤的過程中需要把數據刷新到磁盤的多個扇區中去。而把16K數據刷到磁盤的每個扇區里這個過程是無法保證原子性的,如果數據庫宕機,那么就可能會造成一部分數據成功,而一部分數據失敗的情況。而通過 binlog 這種級別的日志是無法恢復的,因為一個update可能更改了多個磁盤區域的數據,所以這個時候得需要通過redo log這種記錄到磁盤數據級別的日志進行數據恢復。

圖片圖片

由以上兩者的對比可知:binlog 日志只用于歸檔,只依靠 binlog 是沒有 crash-safe 能力的。

同樣只有 redo log 也不行,因為 redo log 是 InnoDB特有的,且日志上的記錄落盤后會被覆蓋掉。因此需要 binlog和 redo log二者同時記錄,才能保證當數據庫發生宕機重啟時,數據不會丟失。

Q3:redo log一定能保證事務的持久性嗎?

不一定,這要根據redo log的刷盤策略決定,因為redo log buffer同樣是在內存中,如果提交事務之后,redo log buffer還沒來得及將數據刷新到redo log file進行持久化,此時發生宕機照樣會丟失數據。

那該如何解決呢?刷盤寫入策略。

2.4 redo log 寫入策略

當redo log空間滿了之后又會從頭開始以循環的方式進行覆蓋式的寫入。MySQL 支持三種將 redo log buffer 寫入 redo log file 的時機,可以通過 innodb_flush_log_at_trx_commit 參數配置,各參數含義如下:

  • 0(延遲寫):表示每次事務提交時都只是把 redo log 留在 redo log buffer 中,開啟一個后臺線程,每1s刷新一次到磁盤中 ;
  • 1(實時寫,實時刷):表示每次事務提交時都將 redo log 直接持久化到磁盤,真正保證數據的持久性;
  • 2(實時寫,延遲刷):表示每次事務提交時都只是把 redo log 寫到 page cache,具體的刷盤時機不確定。


除了上面幾種機制外,還有其它兩種情況會把redo log buffer中的日志刷到磁盤。

  • 定時處理:有線程會定時(每隔 1 秒)把redo log buffer中的數據刷盤。
  • 根據空間處理:redo log buffer 占用到了一定程度( innodb_log_buffer_size 設置的值一半)占,這個時候也會把redo log buffer中的數據刷盤。

3、undo log

3.1 undo log設計目標

redo log 是也屬于引擎層(innodb)的日志,從上面的redo log介紹中我們就已經知道了,redo log 和undo log的核心是為了保證innodb事務機制中的持久性和原子性,事務提交成功由redo log保證數據持久性,而事務可以進行回滾從而保證事務操作原子性則是通過undo log 來保證的。

原子性 是指對數據庫的一系列操作,要么全部成功,要么全部失敗,不可能出現部分成功的情況

undo log 的主要應用場景分別:

  • 事務回滾 :前面提到過,后臺線程會不定時的去刷新buffer pool中的數據到磁盤,但是如果該事務執行期間出現各種錯誤(宕機)或者執行rollback語句,那么前面刷進去的操作都是需要回滾的,保證原子性,undo log就是提供事務回滾的。
  • MVCC:當讀取的某一行被其他事務鎖定時,可以從undo log中分析出該行記錄以前的數據版本是怎樣的,從而讓用戶能夠讀取到當前事務操作之前的數據——快照讀。

3.2 undo log 數據格式

undo log 數據主要分兩類:

  • insert undo log

insert 操作的記錄,只對事務本身可見,對其他事務不可見(這是事務隔離性的要求),故該undo log可以在事務提交后直接刪除,不需要進行purge操作。

  • update undo log

update undo log記錄的是對delete和update操作產生的undo log。該undo log可能需要提供MVCC機制,因此不能在事務提交時就進行刪除。提交時放入undo log鏈表,等待purge線程進行最后的刪除。

在InnoDB存儲引擎中,undo log使用rollback segment回滾段進行存儲,每隔回滾段包含了1024個undo log segment。MySQL5.5之后,一共有128個回滾段。即總共可以記錄128 * 1024個undo操作。

每個事務只會使用一個回滾段,一個回滾段在同一時刻可能會服務于多個事務。

3.3 undo log 操作實例

1)首先準備一張原始原始數據表(user_info)

對于InnoDB引擎來說,每個行記錄除了記錄本身的數據之外,還有幾個隱藏的列:

  • DB_ROW_ID∶記錄的主鍵id。
  • DB_TRX_ID:事務ID,當對某條記錄發生修改時,就會將這個事務的Id記錄其中。
  • DB_ROLL_PTR︰回滾指針,版本鏈中的指針。

圖片圖片

2)開啟一個事務A

對 user_info 表執行如下SQL:

update user_info set name =“李四”where id=1

將會進行如下流程操作:

  • 首先獲得一個事務編號 104
  • 把user_info表修改前的數據拷貝到undo log
  • 修改user_info表 id=1的數據
  • 把修改后的數據事務版本號改成 當前事務版本號,并把DB_ROLL_PTR 地址指向undo log數據地址。

3)最后執行結束

結果如下所示:

圖片

可以發現每次對數據的變更都會產生一個undo log,當一條記錄被變更多次時,那么就會產生多條undo log,undo log記錄的是變更前的日志,并且每個undo log的序號是遞增的,那么當要回滾的時候,按照序號依次向前推,就可以找到我們的原始數據了。

總結

binlog 是MySQL server層的日志,而redo log 和undo log都是引擎層(InnoDB)的日志,要換其他數據引擎那么就未必有redo log和undo log了。

它的設計目標是支持innodb的“事務”的特性,事務ACID特性分別是原子性、一致性、隔離性、持久性, 一致性是事務的最終追求的目標,隔離性、原子性、持久性是達成一致性目標的手段,根據的之前的介紹我們已經知道隔離性是通過鎖機制來實現的,而事務的原子性和持久性則是通過redo log 和undo log來保障的。

寫入策略

事務執行過程中,先把日志寫到bin log cache ,事務提交的時候,再把binlog cache寫到binlog文件中。因為一個事務的binlog不能被拆開,無論這個事務多大,也要確保一次性寫入,所以系統會給每個線程分配一個塊內存作為binlog cache。

圖片圖片

binlog vs redo log

  • redo log 物理日志:記錄內容是“在xx數據頁做了xx修改”,屬于InnoDB存儲引擎層產生的。
  • binlog 邏輯日志:記錄內容是語句的原始邏輯,類似于給ID=2這一行的c字段加1,屬于服務層。

兩個側重點也不同, redo log讓InnoDB有了崩潰恢復的能力,binlog保證了MySQL集群架構的數據一致性。

圖片圖片

在執行更新語句過程,會記錄redo log與binlog兩塊日志,以基本的事務為單位,redo log在事務執行過程中可以不斷寫入,而binlog只有在提交事務時才寫入,所以redo log與binlog的寫入時機不一樣。

責任編輯:武曉燕 來源: 架構精進之路
相關推薦

2024-05-28 00:10:00

JavaMySQL數據庫

2020-08-20 12:10:42

MySQL日志數據庫

2024-05-30 08:03:17

2023-11-23 13:17:39

MySQL?數據庫

2025-06-06 07:02:43

2024-06-11 00:00:02

MySQL數據庫系統

2024-12-16 00:00:05

MySQL二進制數據

2021-01-26 13:47:08

MySQL存儲數據

2025-08-11 09:08:41

2024-03-14 14:18:58

MySQL業務設計事務

2025-01-20 08:20:00

redo logMySQL數據庫

2025-10-09 02:22:00

MySQLMVCC庫存數量

2022-10-12 08:01:08

MySQL日志數據庫

2021-02-09 10:07:23

面試MySQL存儲

2021-07-28 08:32:03

MySQLRedo存儲

2011-08-30 10:30:50

OracleUNDO LOG日志回

2021-10-04 09:23:30

Redo日志內存

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2022-10-21 17:24:34

契約測試定位
點贊
收藏

51CTO技術棧公眾號

日韩高清欧美激情| 精品久久国产一区| 久久精品人人爽人人爽| 91精品国产99| 最新中文字幕视频| 亚洲免费黄色网址| 理论片一区二区在线| 中文字幕在线一区二区三区| 成人久久一区二区| 久久国产免费观看| 日本在线中文字幕一区| 日韩欧美成人网| 日本精品一区二区| 91无套直看片红桃| 国产成人福利av| 亚洲国产精品视频| 久久国产日韩欧美| 国产女优在线播放| 欧美激情国产在线| 精品国产91亚洲一区二区三区婷婷| www.中文字幕在线| 午夜在线播放| 国产99久久精品| 欧美高清自拍一区| 91视频免费观看网站| 色综合视频一区二区三区日韩 | 亚洲日本va在线观看| 91免费看片在线| 国产精品第56页| 久久99蜜桃| 91精品国产综合久久精品性色| av观看久久| 国产精品一区二区6| 欧美在线电影| 精品视频全国免费看| 欧美在线观看黄| 精品福利视频导航大全| 国产一区二区免费在线| 欧美诱惑福利视频| 手机av在线看| 亚洲日日夜夜| 亚洲国产成人porn| 日韩hmxxxx| 亚洲风情第一页| 美女精品一区二区| 91成人在线播放| 秋霞欧美一区二区三区视频免费 | 国产精品视频99| 国产在线拍揄自揄拍无码视频| 欧洲grand老妇人| 亚洲国产精彩中文乱码av在线播放 | 中文字幕福利视频| 激情欧美日韩| 日韩视频精品在线| 精品人妻一区二区三区视频| 成人av激情人伦小说| 7878成人国产在线观看| a√天堂在线观看| 国产模特av私拍大尺度| 久久久精品五月天| 国内免费精品永久在线视频| 国产成人av免费在线观看| 国产精品欧美在线观看| 亚洲国产精品中文| 国产av一区二区三区传媒| 成人污污视频| 欧美日韩亚洲综合在线| 亚洲免费av一区二区三区| 国产福利片在线观看| 亚洲精品高清在线| 国产又爽又黄ai换脸| 久热国产在线| 国产精品麻豆欧美日韩ww| 99国产精品国产精品久久| 国产一区在线播放| 中文字幕免费高清在线观看| 亚洲专区一区二区三区| 欧美在线视频在线播放完整版免费观看 | 337p亚洲精品色噜噜噜| 欧美 日韩 国产 激情| 久草免费在线视频| 午夜精品久久久久久久99樱桃| 蜜桃网站在线观看| 97caopor国产在线视频| 中文一区一区三区高中清不卡| 日本不卡一区| 欧美欧美欧美| 国产亚洲欧美日韩日本| 日产精品一线二线三线芒果| 丁香婷婷在线| 中文字幕一区二区三区不卡| 亚洲 欧洲 日韩| 毛片免费不卡| 亚洲女同一区二区| 免费人成自慰网站| 波多野结衣中文字幕久久| 亚洲高清免费观看高清完整版在线观看| 久久观看最新视频| 久草免费在线色站| 五月婷婷色综合| 一本大道熟女人妻中文字幕在线 | 少妇久久久久| 亚洲国产视频a| 人人干视频在线| xxxx在线视频| 91久久线看在观草草青青| 天天操天天爱天天爽| 色综合久久久| 亚洲精品福利视频| 日本成人午夜影院| 在线国产一区| 97精品在线视频| 波多野结衣不卡| 韩国一区二区视频| 国产三级精品在线不卡| 国产在线一在线二| 亚洲欧美激情一区二区| av在线播放亚洲| jk漫画禁漫成人入口| 欧美精品日日鲁夜夜添| 欧美xxxxx精品| 青青一区二区三区| 久精品免费视频| 香蕉污视频在线观看| 国产乱子伦视频一区二区三区 | 微拍福利一区二区| av中文一区| 欧美激情一区二区三区成人| www.天天色| 免费成人在线视频观看| 国产亚洲自拍偷拍| 求av网址在线观看| 欧美日韩亚洲网| 一个人看的视频www| 伊人春色之综合网| 久久久久成人精品| 国产精品国产av| 久久精品夜色噜噜亚洲a∨| 400部精品国偷自产在线观看| 中文字幕成在线观看| 欧美一级片在线观看| 成人激情五月天| 日韩视频二区| 国产91亚洲精品一区二区三区| 老司机在线看片网av| 欧美日韩的一区二区| 免费黄色片网站| 日本不卡视频在线观看| 欧美一级二级三级九九九| 亚洲综合电影| 亚洲美女福利视频网站| 亚洲黄色激情视频| 97国产一区二区| 免费黄色日本网站| 亚洲精品小区久久久久久| 91av在线免费观看视频| 深夜福利视频在线免费观看| 午夜久久久久久| 精品国产av色一区二区深夜久久| 精品动漫3d一区二区三区免费| 99久久久精品免费观看国产| 色av手机在线| 亚洲第一精品久久忘忧草社区| 国产精品1234区| 97久久超碰精品国产| 国产精品50p| 精品国产一区二区三区噜噜噜| 国产精品露脸自拍| 久久久久久久久免费视频| 69久久99精品久久久久婷婷| 欧美成人免费观看视频| 国产99久久久国产精品免费看| 日韩av新片网| 亚洲最大在线| 国产精品黄色av| 黄色成人在线| 亚洲国产精品va在线| 4438国产精品一区二区| 国产性做久久久久久| 制服丝袜综合网| 91tv官网精品成人亚洲| 国产一区再线| 影音成人av| 欧美老肥婆性猛交视频| 无码国产精品一区二区色情男同| 日本韩国精品在线| 裸体武打性艳史| 99久久亚洲一区二区三区青草 | 18啪啪污污免费网站| 国产在线国偷精品产拍免费yy| 黄页网站大全在线观看| 精品一区不卡| www.成人av| 国产一区二区主播在线| 久久99青青精品免费观看| 日本中文字幕电影在线观看| 欧美精品aⅴ在线视频| 日本熟妇色xxxxx日本免费看| 国产欧美1区2区3区| 亚洲成人激情小说| 视频一区在线播放| 激情六月天婷婷| 九九综合在线| 99久久综合狠狠综合久久止| 3d欧美精品动漫xxxx无尽| 欧美日韩成人在线观看| 成人在线免费观看| 亚洲国产精品系列| 国产又爽又黄免费软件| 欧美性猛交xxxx免费看漫画| 亚洲天堂黄色片| 久久久噜噜噜久噜久久综合| 91视频福利网| 免费欧美在线视频| 777久久久精品一区二区三区 | 最近2019中文字幕mv免费看 | 国产精品一区二区久久不卡| 欧美精品aaaa| 一本色道久久| 久久人妻无码一区二区| 日韩一区电影| 青青影院一区二区三区四区| 理论片一区二区在线| 91中文字幕一区| 久热av在线| 精品日韩欧美在线| 国产有码在线观看| 欧美午夜精品理论片a级按摩| 全网免费在线播放视频入口| 久久久久久久免费视频了| 蜜臀视频在线观看| 国产精品一区二区黑丝| 天天看片天天操| 奇米888四色在线精品| 欧美a v在线播放| 在线欧美福利| 国产一区二区四区| 国内精品福利| 欧美日韩激情四射| 欧美影院一区| 黄色免费高清视频| 98精品视频| 免费看av软件| 91精品综合| 国产一二三四区在线观看| 99精品视频在线观看播放| 亚洲美女搞黄| 欧美三级一区| 国产在线精品播放| 色999韩欧美国产综合俺来也| 国产精品一区二区电影| 国产精品66| 成人久久一区二区| 精品午夜视频| 99久久精品免费看国产一区二区三区| 视频在线一区| 激情小说综合区| 日韩极品在线| 日本精品二区| 久久久国产精品| 国产亚洲精品久久久久久久| 国产综合精品| 日日碰狠狠添天天爽超碰97| 久久久夜精品| 鲁一鲁一鲁一鲁一av| 国产在线不卡视频| 挪威xxxx性hd极品| 91在线播放网址| 色屁屁草草影院ccyy.com| 国产精品色在线观看| 日本裸体美女视频| 亚洲一区在线观看免费观看电影高清 | 久久久久久亚洲综合| 日韩不卡av在线| 亚洲视频一二三| 国产精品第56页| 日本高清无吗v一区| 一区二区的视频| 日韩三级在线观看| 五月婷中文字幕| 色天天综合狠狠色| 新版中文在线官网| 日本久久久久久久| 国产精品3区| 精品久久久久久一区二区里番| 欧美日韩爱爱| 国产又粗又大又爽的视频| 亚洲国产日韩在线| 成人3d动漫一区二区三区| 国产在线视频精品一区| v天堂中文在线| 国产精品的网站| 在线观看中文字幕视频| 91.com视频| 日本一区二区三区在线观看视频| 日韩中文在线观看| av影院在线免费观看| 成人精品一区二区三区| 欧美大片网址| 欧美xxxx吸乳| 久久久久久自在自线| 俄罗斯女人裸体性做爰| 国产亚洲制服色| 久久综合综合久久| 欧美日韩电影在线| 日韩av成人| 久久久久久亚洲精品| 天天综合91| 欧美精品尤物在线| 国内精品美女在线观看| 高清av免费看| 久久―日本道色综合久久| 免费毛片在线播放免费| 欧美三级视频在线观看| 五月婷婷六月色| 久久久亚洲精品视频| 忘忧草在线www成人影院| 国产精品毛片一区视频| 香蕉久久网站| 污污动漫在线观看| 久久一日本道色综合| 国产在线拍揄自揄拍无码视频| 这里只有精品电影| av小片在线| 欧日韩不卡在线视频| 国产精品一线| 久久久久99精品成人片| 国产伦精一区二区三区| av最新在线观看| 欧美午夜宅男影院| 国产免费a∨片在线观看不卡| 97超碰蝌蚪网人人做人人爽| av日韩精品| www.日本少妇| 国产jizzjizz一区二区| 色欲人妻综合网| 欧美高清一级片在线| 最新国产在线观看| 久久精品99国产精品日本| aaaaaav| 亚洲第一福利视频在线| 精品人妻午夜一区二区三区四区| 久久精品电影一区二区| 亚洲精品成a人ⅴ香蕉片| 神马影院我不卡午夜| 日韩精品五月天| 免费观看a级片| 欧美在线视频不卡| 国产理论电影在线观看| 国产高清视频一区三区| 精品国产成人| 特级丰满少妇一级| 国产精品视频看| 国产一区二区女内射| 久久精品成人欧美大片| 国产亚洲高清在线观看| 青青草综合视频| 国产91对白在线观看九色| 久久久久国产精品夜夜夜夜夜| 欧美mv日韩mv国产| 欧美男男tv网站在线播放| 欧美日韩精品免费看| 日本成人在线视频网站| 欧美88888| 欧美一级一区二区| 制服丝袜在线播放| 国产精品区一区| 国产精品普通话对白| 51妺嘿嘿午夜福利| 欧美乱妇一区二区三区不卡视频| 福利在线视频网站| 高清不卡日本v二区在线| 亚洲少妇自拍| 手机看片福利视频| 91精品一区二区三区久久久久久| 香蕉久久aⅴ一区二区三区| 精品国产一区二区三区麻豆免费观看完整版 | 国产在线一区视频| 日韩av在线一区| 性欧美freehd18| 亚洲啊啊啊啊啊| 久久伊99综合婷婷久久伊| 亚洲天堂网在线观看视频| 久久99久久99精品中文字幕| 日韩精品社区| 久久久精品高清| 五月婷婷久久丁香| 在线激情免费视频| 国产高清在线一区| 日韩专区欧美专区| av成人免费网站| 亚洲天堂视频在线观看| 久久精品一级| 国产精品无码专区av在线播放 | 国产视频久久网| 亚洲综合伊人| 国产精品97在线| 亚洲欧美aⅴ...| 国产高清免费av在线| 成人动漫视频在线观看免费|