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

MySQL 8.0.29 instant DDL 數據腐化問題分析

數據庫 MySQL
MySQL 8.0.29 引入了 instant add/drop column 功能,支持在任意位置添加 column, drop column 也不需要表數據的任何形式的移動, 只需要修改表的元數據就可以完成 add/drop column,所以 instant add/drop column 的操作是輕型操作,速度快,資源需求量少。

前言

DDL 相對于數據庫的 DML 之類的其他操作,相對來說是比較耗時、相對重型的操作; 因此對業務的影比較嚴重。MySQL 從5.6版本開始一直在持續改進其DDL性能:引入了 online DDL,inplace DDL,instant DDL 等實用性極強的功能, DDL 目前對業務的影響持續降低。

MySQL 8.0.29 引入了 instant add/drop column 功能,支持在任意位置添加 column, drop column 也不需要表數據的任何形式的移動, 只需要修改表的元數據就可以完成 add/drop column,所以 instant add/drop column 的操作是輕型操作,速度快,資源需求量少。

ALTER table drop column a, ALGORITHM=INSTANT;

8.0.29 引入了新的alter 算法 INSTANT。

但是這個新功能目前很不穩定,導致的問題比較多; 而且通常都比較嚴重: 數據損壞,或者數據庫無法啟動等。

本文是分析其中的一個問題: 對表進行 instant drop 后,進行 update ,之后數據庫停機,而后數據庫無法啟動。

為分析這個問題, 我們會從 instant add/drop column 在 Innodb 的實現原理與細節方面來闡述這個數據腐化bug的具體原因。

Instant add or drop column的主線邏輯

因為這個功能的WorkLog無法從官方獲取,所以無法得到準確的設計出發點,通過閱讀相關代碼,得出要實現這個功能,必須要處理以下關鍵點:

  • 因為要支持在任意位置添加/刪除列,同時不會更改表數據文件,所以表的邏輯定義與row的實際存儲形式需要映射關系,不再是所見即所得的一一對應的關系。即為了實現這樣功能:

表中列的定義順序與表中行數據(row)的存儲順序是不同的。

同時對同一個table可以做多次instant DDL, 所以需要引入版本機制,在表的數據文件中,不同row對應的表定義可能是不同的,需要在row中記住表定義的version。

以上可以認為是該功能的設計原則與實現的主線邏輯。

表定義的列順序與row 存儲列順序闡述

在引入這個功能之前, create table 時列定義的順序與列在 InnoDB 中存儲的順序是一致的。(這里我們不用考慮 InnoDB 添加系統隱藏列)

Instant add/drop column 要實現的亮點功能是在表定義的任意位置添加或者減少 column,同時做這樣的操作的時候,能夠做到不需要重構表數據。

我們稱 column 在表定義中出現的順序為邏輯順序;

而 column 在行數據的存儲順序為物理順序。

要做到修改表定義,而不重構表數據,就必須將邏輯順序與物理順序解耦: 不能再像MySQL 8.0.29之前的版本那樣,邏輯順序與物理順序是完全一致的;而從8.0.29開始通過表的元數據保存了邏輯順序與物理順序的映射關系。這種映射關系的構建與維護構成了 instant add/drop column 的基礎.

如下圖簡單闡述了邏輯/物理順序的關系。

圖片

引入row版本的必要性

對于同一張表,Instant add/drop DDL可以執行多次;每一次執行后,邏輯/物理順序的映射關系就發生變化;同時 instant add/drop DDL 并不需要做表數據的重構操作;因此可以得出經過多次 instant add/drop DDL,InnoDB存儲的行數據與表定義存在多種邏輯/物理順序映射關系:比如說,在 ibd 文件中,前十行數據對應原始的表定義,接下來的十行可能對應著 instant add column 后的數據,再接下來的十行,可能對應著 instant drop column 后的數據。

為了管理這種形式的邏輯/物理,在 InnoDB 中,為每一行實際存儲的數據引入了版本號的概念:每個版本號對應著一個邏輯/物理映射關系。

為存儲這個版本信息,InnoDB 中,row 的信息頭記錄的格式有稍微的變化:

圖片

如上圖所示,在row的extra中存儲了其對應的版本號, 同時在 row header 中有標志位指示出了是否存在版本號信息。

根據版本號獲取相應的映射關系,就可以正確的解析行數據。

目前版本號最大支持到64, instant add/drop column 到達這個限制后報錯;其后如果還需要 instant add/drop column DDL 操作,可能需要做一次能夠觸發 table rebuild 操作才可以。

數據腐化問題

由 instant add/drop column 引入了多個數據腐化問題,其中一個問題可以從:

[PS-8292] MySQL 8.0.29 fails to perform crash recovery - Percona JIRA(https://jira.percona.com/browse/PS-8292) 查看。

這個問題簡單來說:在對表進行 instant drop 后,進行update操作,之后MySQL server 重啟,在啟動階段恢復之前的 update 操作會引發 assert 崩潰(debug版本的情況下)。

從代碼上看,這個bug可能會造成數據的靜默錯誤(數據完全錯亂而且不報任何錯誤),而不僅僅是崩潰這一種現象。

通過對core文件的簡單分析,造成該問題的大概原因如下:

在通過redo做恢復的時候,字段的邏輯順序與物理存儲順序之間的映射關系不對(錯位)導致的。在恢復期間可能會找不到對應的字段,或者更新了錯誤的字段。

原因分析

從原始的問題看,這個是發生在 InnoDB 啟動恢復階段。這一階段離不開 redo log的參與。前面介紹 instant add/drop 設計要點的時候,那些列出的要點,可以認為是在在 DDL 期間的工作以及編碼的基本邏輯;那么在完成 instant DDL 時候, 在 DML 的時候也需要將必要的信息寫入 redo log 才能做到 recovery。

  • 為支持 instant add/drop column,redo log 記錄的格式發生了變化,因為代碼bug,導致在解析 redo log 做恢復的時候,得到的字段信息錯誤,導致數據腐化。
  • 問題表現出來可能是: 恢復始終無法執行,數據庫無法啟動;還可能是恢復到錯誤的數據,數據庫能夠啟動。

因為 redo log 的種類較多,信息也比較繁雜,這里我們只關注問題本身中出現的 update 相關的 redo log ,進而較多的關注 update redo log 與該問題相關的字段信息。

下圖簡要的闡述了 update redo log 相關內容:

圖片

到這里,可以看到 在MySQL 8.0.29中,update redo log 引入了 instant column 的物理邏輯順序。

下面從 InnoDB 的恢復流程跟蹤問題發生的原因,其中主要需要關注的是恢復過程中的表(索引)定義。

  • 應用 redo log 是在數據庫啟動階段最開始就執行,此時數據字典無法打開,獲取不到待恢復表的定義信息
  • 但是此時需要表的定義信息去解析 redo log 中的相關數據
  • 此時就會根據redo log中記錄的長度信息,以及記錄長度的順序構建臨時的表定義,此時僅僅是為了恢復,并不需要精確的表定義,此時只需要知道field的長度和位置即可。
  • 同時如果 redo log 中如果有instant DDL 的信息,那么也會用這些信息去修改臨時構建的表定義:這是問題發生的初始錯誤的地方。
  • 恢復過程中,構建出的臨時表實際上表中列的邏輯順序,這是符合正常運行的需求的。
  • 但是實際上8.0.29中字段長度的記錄順序是按字段(列)的物理存儲順序寫入的。
  • 如果帶有 instant DDL 的信息,那么修改表定義時就會按物理順序去修改邏輯順序的表定義,這樣會修改到非預期的字段,導致錯誤發生!

Bug重現與解析

CREATE TABLE `tb1` (
  `col1` VARCHAR(10) NOT NULL,
  `col2` char(13),
  `col3` varchar(11),
  PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO tb1  VALUES ('4000','50','100');
--echo # the FIRST INSTANT ALTER
ALTER TABLE tb1 DROP COLUMN col2, LOCK=DEFAULT;
INSERT INTO tb1  VALUES( '4545', '52' );
UPDATE tb1 SET col3 = '46' WHERE col1 = '4545';
--echo # crash and restart 1
--source include/kill_and_restart_mysqld.inc
CHECK TABLE tb1;
DROP TABLE tb1;

以上MySQL MTR 測例可以重現 InnoDB 啟動恢復期間始終 core 的問題。我們從這個例子出發,結合上面解釋的 instant drop DDL 代碼行為看看問題是如何一步步發生的。

  1. 首先說明一下,在測例運行期間邏輯順序與物理順序的變化。 如下圖所示稍微展示了 table 的邏輯定于與 InnoDB row 存儲的以下細節。這里注意的是 被 dropped column 仍然會以隱藏列的形式存在于表定于中:因為 drop 之前存在的 row 還是需要這樣信息解析字段。

圖片

  • 結合 redo log 的恢復過程看看問題發生的第一現場。這里針對這個測例摘取相關 redo log 的部分信息:
  • 圖片

  • 2.1 按照字段長度列表(8.0.29中是物理順序寫入的列表)創建的專門用于恢復的表,類似于: create table dummy_table (d1:10, d2:13, d3:11)
    2.2 按照 instant 字段信息修改 dummy 表:按照 physical pos=1 去修改后,結果類似于:create table dummy_table (d1:10, d2:13[dropped], d3:11)
    2.3 期望的正確的表應該類似于:create table dummy_table(d1:10, d3:11, d2:13[dropped]);
    2.4 Redo log中的Field_no=1, 去恢復時期望用到的是 #2.3 的表,但是過程中創建的是#2.2中錯誤的表,這樣當Field_no=1去恢復數據時,會錯誤的發現對應的field(column)已經dropped, 導致core!

MySQL8.0.30修復方案

知道了問題發生的原因,修復起來就比較簡單了:

  • MySQL 8.0.30的代碼修復方案

Redo log中字段的長度列表,按照字段的邏輯順序寫入,不再按存儲順序寫入。

在 redo log 的 instant column 信息中也包含了字段的邏輯位置。

Redo log 的記錄本身的版本設置為 1 ,與8.0.29的版本為 0 ,做出差別。

8.0.30的修復代碼本身也是不能正確解析8.0.29產生的 redo log ,只是根據版本號檢測出8.0.29 redo log,進而報錯防止數據進一步惡化。實際上8.0.29的 redo log ,在 instant DDL 后,是不可能正確解析的,因為沒有邏輯/物理的映射關系。

  • 修復的邏輯比較簡單:

Redo log中字段的長度列表,按照字段的邏輯順序寫入:

保證在恢復階段構建的臨時表是按正確的邏輯定義順序構建的。

  • 在redo log 的 instant column 信息中也包含字段的邏輯位置:

保證在更新臨時表的字段時,按照邏輯順序,不會出現錯誤更新的情況。

下面是MySQL 8.0.30 update redo log 相關字段信息:

圖片

從上圖可以看出,MySQL 8.0.30 redo log 中已經不存儲物理位置相關的信息了,全部是邏輯位置相關的信息;這樣就和MySQL 8.0.29 redo log 這種有問題的記錄方式是曇花一現了。

附帶的這個測例可以重現數據的靜默錯誤(恢復過程沒問題, 但是數據實際上錯了)

CREATE TABLE `tb2` ( `c1` char(4) NOT NULL, `c2` char(4), `c3` char(4), PRIMARY KEY (`c1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
begin;
INSERT INTO tb2  VALUES ('1000','2000','3000');
commit;
--echo # the FIRST INSTANT ALTER
ALTER TABLE tb2 add COLUMN c4 char(4) after c1, LOCK=DEFAULT;
INSERT INTO tb2 VALUES ('1001','4001', '2001', '3001');
SELECT * FROM tb2;
UPDATE tb2 set c4='4002' WHERE c1='1001';
--echo # crash and restart 1
--source include/kill_and_restart_mysqld.inc
select * from tb2;
CHECK TABLE tb2;

需要把這個測例放到innodb test case suite中。

責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2025-04-07 03:00:00

MySQLDDLonline

2011-07-06 12:04:53

架構

2022-02-20 21:35:43

MySQLDDL阻塞

2020-08-20 08:23:48

MySQL數據庫技術

2024-08-08 07:38:42

2018-05-28 22:44:17

代碼腐化程序員

2023-06-12 09:09:19

MySQLDDLNSTANT

2019-08-27 20:30:38

MySQLOnline DDL數據庫

2017-07-07 17:11:21

MySQLDDL操作視圖

2022-09-20 10:44:06

MySQL 8.0數據庫DDL

2018-04-25 09:56:35

MYSQLCPU數據庫

2024-12-18 10:18:09

2021-03-26 10:40:16

MySQL鎖等待死鎖

2015-10-29 09:35:50

數據中心管理

2022-08-16 11:33:43

數據分析業務數據

2023-08-14 08:32:42

MySQL數據庫

2022-05-09 08:17:37

InstantJava字符

2018-07-16 11:16:59

MYSQL磁盤IO數據庫

2020-04-14 10:20:12

MySQL數據庫死鎖

2024-10-16 11:40:47

點贊
收藏

51CTO技術棧公眾號

久久一区二区中文字幕| 天堂在线中文网官网| 国产一区二区三区免费观看| 欧美国产日韩一区二区在线观看| 三上悠亚 电影| 精品丝袜在线| 国产精品免费看片| 国产66精品久久久久999小说 | 亚洲天堂免费在线观看视频| 丁香五月网久久综合| 久久亚洲精品石原莉奈| 亚洲大全视频| 亚洲欧美中文日韩在线v日本| 久久这里只精品| 毛片在线导航| 中文字幕一区二区在线播放| 国产欧美日本在线| 夜夜躁很很躁日日躁麻豆| 亚洲国产激情| 久久久精品久久久| 欧美老熟妇乱大交xxxxx| 免费一区二区三区在线视频| 91高清在线观看| 国产精品综合网| 色青青草原桃花久久综合| 国产一级黄色录像| 日韩专区视频| 91精品办公室少妇高潮对白| 男女猛烈激情xx00免费视频| www在线观看播放免费视频日本| 91看片淫黄大片一级在线观看| 亚洲a中文字幕| 波多野结衣小视频| 国产欧美综合一区二区三区| 欧美精品在线极品| 亚洲激情图片网| 精品福利久久久| 日韩精品中文在线观看| 中文字幕99页| 日本一区二区乱| 91精品国产欧美一区二区成人| 午夜dv内射一区二区| 色戒汤唯在线| 亚洲不卡一区二区三区| 白白操在线视频| av免费在线免费观看| 1024亚洲合集| 亚洲在线色站| 香蕉视频网站在线观看| 国产片一区二区三区| 欧美日本亚洲| 美丽的姑娘在线观看免费动漫| 91丨国产丨九色丨pron| 精品伦理一区二区三区 | 亚洲精品成人久久| 97中文字幕在线观看| 伊人久久亚洲| 亚洲国产精品久久久久| 亚洲自拍偷拍精品| 女仆av观看一区| 日韩av在线一区二区| 9.1成人看片免费版| 亚洲理论电影| 在线观看日韩视频| 黄色免费一级视频| 天天射综合网视频| 免费91在线视频| 久久久夜色精品| 国产欧美三级| 国产91精品网站| 在线免费看av片| 国产一区二区调教| 国产高清一区视频| 青青草免费观看免费视频在线| 久久久久久亚洲综合| 日韩欧美精品一区二区三区经典| 北岛玲日韩精品一区二区三区| 中文字幕成人av| youjizz.com亚洲| 日本电影在线观看| 日韩欧美中文在线| 91制片厂毛片| 操欧美女人视频| 亚洲欧美日韩中文在线| 亚洲人做受高潮| 精品96久久久久久中文字幕无| 国产91精品久久久久久久| 午夜一级黄色片| 国产风韵犹存在线视精品| 国产嫩草一区二区三区在线观看| 玖玖综合伊人| 国产精品卡一卡二| 日韩a级在线观看| 69堂精品视频在线播放| 日韩欧美在线影院| 美女100%无挡| 欧美精品日本| 国产99视频在线观看| 国产熟女精品视频| 国产午夜亚洲精品理论片色戒| 中文字幕一区二区三区四区五区六区| 欧美aaa免费| 在线视频亚洲一区| 无码国产精品一区二区免费式直播| 综合亚洲色图| 久久99精品久久久久久琪琪| 欧美日韩在线视频播放| 懂色av一区二区三区免费看| 日韩尤物视频| av最新在线| 欧美日韩二区三区| 亚洲午夜福利在线观看| 亚洲午夜伦理| 91精品在线观| 成人高清网站| 精品久久久久久久久久ntr影视| 五月天视频在线观看| 国产精品一区二区av交换| 久久久久久91| 国产精选久久久| 国产精品视频一二三| 777精品久无码人妻蜜桃| 国产精品国产三级在线观看| 一区二区欧美亚洲| 欧美国产成人精品一区二区三区| 丁香婷婷综合网| 中文字幕av日韩精品| 综合在线影院| 亚洲精品中文字幕有码专区| 精品在线免费观看视频| 国产九九视频一区二区三区| 亚洲精品国产精品久久| 精品国产第一福利网站| 亚洲精品福利在线观看| 日韩高清精品免费观看| 国产成人av自拍| 成人高清dvd| 国产一区2区在线观看| 色偷偷偷综合中文字幕;dd| 天天操天天干天天摸| 91麻豆精品一区二区三区| 无码人妻丰满熟妇区96| 老牛精品亚洲成av人片| 欧美激情在线观看| 午夜精品久久久久久久爽| 亚洲激情图片小说视频| 在线观看免费看片| 欧美成人一品| 成人在线观看av| 久久香蕉av| 精品国产乱码久久| 精品无码m3u8在线观看| av激情亚洲男人天堂| 97在线国产视频| 国产欧美自拍一区| 欧美有码在线视频| 高清日韩av电影| 欧美日韩综合一区| 午夜爱爱毛片xxxx视频免费看| 国产尤物一区二区| www.日本三级| 精品无人区一区二区| 欧美亚洲在线观看| 精品999视频| 欧美三区在线观看| 国产97免费视频| 不卡一区二区在线| 男人操女人免费| 成人在线免费观看视频| 国产自产女人91一区在线观看| 成人影院在线观看| 精品国产乱码久久久久久影片| 国产小视频在线免费观看 | 亚洲ⅴ国产v天堂a无码二区| 久草精品在线观看| 免费高清一区二区三区| 色老板在线视频一区二区| 国产精品扒开腿爽爽爽视频| 日本在线人成| 精品国精品自拍自在线| av图片在线观看| 国产精品久久久久一区二区三区共| 999这里有精品| 一区在线视频观看| 日韩精品久久一区二区三区| 欧美a级大片在线| 69影院欧美专区视频| 成人性爱视频在线观看| 日韩精品专区在线| 无码视频在线观看| 伊人色综合久久天天| 免费毛片视频网站| 国产美女视频91| 亚洲国产精品久久久久婷蜜芽| 久久大综合网| 国产精品亚洲综合| 欧美成人毛片| 欧美一二三视频| 黄色国产网站在线播放| 亚洲免费视频观看| 亚洲精品国产精品乱码不卡| 色欧美片视频在线观看 | 中文字幕人成人乱码| 免费在线成人av电影| 美女精品久久| 国产精品久久久久秋霞鲁丝| 免费在线看污片| 日韩在线欧美在线| 精品视频二区| 亚洲国产欧美一区| jizz中国少妇| 欧美三级三级三级爽爽爽| 国产亚洲精久久久久久无码77777| 国产日韩精品一区二区三区 | 亚洲欧美经典视频| 性欧美一区二区| av在线不卡观看免费观看| 在线观看免费视频高清游戏推荐| 国产精品久久久久毛片大屁完整版| 天天干天天色天天爽| 欧美理论在线播放| 欧美成人免费在线| 国内精品国产成人国产三级粉色| 91免费国产视频| 日韩免费在线电影| 国产精品久久色| 日韩高清在线| 日韩美女视频在线观看| 2021天堂中文幕一二区在线观| 日韩中文字幕网站| 99riav在线| 夜夜躁日日躁狠狠久久88av| 免费黄网站在线观看| 亚洲美女av网站| 色婷婷av一区二区三| 亚洲第一精品福利| 亚洲精品国产suv一区| 精品少妇一区二区三区日产乱码| 国产又爽又黄又嫩又猛又粗| 欧美老肥妇做.爰bbww| 亚洲无码精品国产| 欧美日韩另类一区| 亚洲资源在线播放| 欧美另类videos死尸| 国产老妇伦国产熟女老妇视频| 欧美日韩高清在线| 国产乱子伦精品无码码专区| 制服丝袜激情欧洲亚洲| 国产情侣自拍小视频| 欧美精品久久99| 国产老妇伦国产熟女老妇视频| 91精品国产欧美一区二区18 | 国产手机视频精品| 久久久久久久影视| 在线电影中文日韩| 美女隐私在线观看| 九九视频这里只有精品| wwwww亚洲| 欧美一级电影免费在线观看| 欧美xxx网站| 国产精品美女久久| 国产精品成人3p一区二区三区| aa成人免费视频| 日本成人a网站| 欧洲精品国产| 欧美gvvideo网站| 国产小视频免费| 国产农村妇女精品一二区| 亚洲精品中文字幕无码蜜桃| 蜜臀久久99精品久久久画质超高清 | 国产欧美日韩一区| 久久av电影| 国产日本欧美在线| 激情亚洲成人| 精品久久久噜噜噜噜久久图片| 麻豆精品在线播放| 女人扒开双腿让男人捅| 99精品欧美一区二区蜜桃免费| 男女做爰猛烈刺激| 亚洲精品免费在线| 国产高清中文字幕| 91精品国产色综合久久不卡电影 | 91丨porny丨国产| 国产极品视频在线观看| 一区二区在线免费观看| 久草手机在线视频| 制服丝袜亚洲播放| 你懂的免费在线观看视频网站| 久久九九免费视频| 超碰在线cao| 国产日韩在线看片| 欧美人与动xxxxz0oz| 在线看视频不卡| 一本色道久久精品| 香蕉视频xxx| 久久久综合九色合综国产精品| 国产一区二区精彩视频| 黑人巨大精品欧美一区二区免费| 国产精品视频一区二区三区,| 日韩av在线精品| 超碰在线免费播放| 国产精品电影在线观看| 欧美黄色网视频| 中国女人做爰视频| 日韩和欧美的一区| 黄色网址在线视频| 亚洲欧美激情小说另类| 午夜视频网站在线观看| 精品伦理精品一区| 毛片在线不卡| 国产va免费精品高清在线| 亚洲一区二区三区日本久久九| 性欧美精品一区二区三区在线播放| 影音先锋国产精品| 亚洲国产欧美日韩在线| 国产精品色哟哟网站| 无码人妻精品一区二区50| 亚洲大胆人体av| 黄色羞羞视频在线观看| 亚洲自拍小视频| 国产精品精品| 我看黄色一级片| 久久久亚洲国产美女国产盗摄 | 欧美亚洲免费在线一区| 日夜干在线视频| 91高清免费视频| 欧美深夜视频| 黄色网页免费在线观看| 成人美女视频在线观看| 劲爆欧美第一页| 日韩三级.com| av在线免费网站| 91人成网站www| 亚洲精品小说| 在线观看日本www| 中文字幕亚洲精品在线观看| 色婷婷久久综合中文久久蜜桃av| 亚洲美女视频网站| 亚洲一区资源| 日本三级中国三级99人妇网站| 一本色道久久综合一区 | 国产精品福利在线播放| 国产成人av免费| 中文字幕亚洲字幕| 成人在线视频观看| 一区二区三区国| 狠狠色伊人亚洲综合成人| 免费精品在线视频| 91精品国产综合久久久蜜臀图片| 国内精品久久久久久野外| 成人乱人伦精品视频在线观看| 国产高清久久| 日本黄色三级网站| 一区二区三区欧美激情| 亚洲国产精品久久久久久6q| 欧美极品美女电影一区| 牛牛影视一区二区三区免费看| 成年人观看网站| 国产日本一区二区| 亚洲无码精品国产| 欧美大胆在线视频| 国产图片一区| 国产欧美高清在线| 国产精品美女www爽爽爽| 国产又粗又猛又爽又黄的| 欧美日韩国产二区| 日韩深夜福利| 日日躁夜夜躁aaaabbbb| 亚洲三级视频在线观看| 秋霞网一区二区| 国产成人91久久精品| 久久精品国产www456c0m| 古装做爰无遮挡三级聊斋艳谭| 亚洲va在线va天堂| 国产大学生校花援交在线播放| 成人免费网视频| 亚洲人体大胆视频| 69精品无码成人久久久久久| 欧美日本不卡视频| 超碰高清在线| 亚洲一卡二卡三卡| 成人不卡免费av| 亚洲大尺度在线观看| 欧美另类交人妖| 亚洲自拍电影| 可以看的av网址| 在线观看视频91| 污污片在线免费视频| 日本一区二区三区视频免费看| 韩国一区二区视频| 国产午夜麻豆影院在线观看| 欧美成年人视频网站| 亚洲黄色录像| 爱情岛论坛亚洲自拍| 91福利在线免费观看| 欧美v亚洲v| 亚洲电影免费| 99精品视频一区二区| 国产福利第一视频| 国产精品久久一区主播|