亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MySQL集群到Oracle數(shù)據(jù)庫的數(shù)據(jù)同步方法①

        2018-06-14 08:48:40楊明珉
        計算機系統(tǒng)應用 2018年6期
        關鍵詞:控制程序二進制事務

        楊明珉,陳 勇

        (中國移動(深圳)有限公司,深圳 518048)

        引言

        從新興的互聯(lián)網(wǎng)行業(yè)到其他的傳統(tǒng)行業(yè),使用開源的數(shù)據(jù)庫替代傳統(tǒng)商業(yè)數(shù)據(jù)庫一直是IT系統(tǒng)建設的一個趨勢.以MySQL數(shù)據(jù)庫為代表的開源數(shù)據(jù)庫,在多種業(yè)務場景中已經(jīng)完成或者正在進行對以Oracle數(shù)據(jù)庫為代表的大型商用數(shù)據(jù)庫的替換.然而,在很多IT系統(tǒng)中,由于應用程序的開發(fā)與數(shù)據(jù)庫的緊密關聯(lián),數(shù)據(jù)庫的更替涉及到大量的應用程序改造和數(shù)據(jù)庫遷移,不可能做到一蹴而就.這將存在開源數(shù)據(jù)庫和原有商用數(shù)據(jù)庫在同一套IT系統(tǒng)中長期并存,數(shù)據(jù)相互耦合的情況.其中,MySQL數(shù)據(jù)庫向Oracle數(shù)據(jù)庫做數(shù)據(jù)同步是最為常見的需求之一.異構數(shù)據(jù)庫之間的數(shù)據(jù)同步向來是IT系統(tǒng)工程實施的難點,而在核心IT系統(tǒng)中,MySQL數(shù)據(jù)庫往往以多節(jié)點高可用集群的方式部署,這又為其向Oracle數(shù)據(jù)庫做數(shù)據(jù)同步進一步增加了難度.

        本文采用在異構數(shù)據(jù)庫同步中表現(xiàn)良好的Oracle GoldenGate作為MySQL數(shù)據(jù)庫到Oracle數(shù)據(jù)庫的數(shù)據(jù)同步工具,意在研究設計出一套行之有效的方案,實際解決從MySQL集群往以Oracle為代表的異構數(shù)據(jù)庫同步數(shù)據(jù)的難題.

        1 MySQL集群與Oracle GoldenGate介紹

        1.1 基于主從復制的MySQL集群簡介

        MySQL集群架構有多種實現(xiàn)方式,最為常見的包括基于主從復制、基于磁盤復制和基于網(wǎng)絡存儲引擎(ndb)的集群架構,其中目前使用最為廣泛的是基于主從復制的集群架構,也是本文論述的MySQL集群架構.

        主從復制技術在MySQL 5.5版本被引入,可用于構建MySQL高可用架構方案,其原理是通過把主數(shù)據(jù)庫(以下簡稱主庫)記錄事務信息的二進制日志傳遞和應用到從數(shù)據(jù)庫(以下簡稱從庫),從而保證主庫和從庫的數(shù)據(jù)一致性.主從復制的實現(xiàn)總體上分為3步:

        1) 主庫在完成每個事務的數(shù)據(jù)更新之前,首先將相應的事務變更信息記錄到二進制日志中,所有的事務變更信息是以串行的方式寫入二進制日志.只有當每個事務變更信息被成功寫入二進制日志后,該事務的數(shù)據(jù)更新才能提交完成.

        2) 從庫會開啟一個本地工作線程——I/O線程.I/O線程與主庫建立一個客戶端連接,主庫隨即啟動一個二進制抽取線程,該線程從主庫的二進制日志中依次讀取事務變更信息并發(fā)送給從庫的I/O線程,I/O線程將收到的事務變更信息存儲進本地的中繼日志中.

        3) 從庫啟動SQL線程,該線程依次讀取中繼日志中的事務變更信息并解析,然后在從庫中重做執(zhí)行這些事務,完成與主庫相同的數(shù)據(jù)更新[1-4].

        主從復制的架構可以很靈活地實施,根據(jù)不同的需求場景,可以采用一主一從,一主多從,互為主從等架構.當主庫發(fā)生故障時,從庫可以代替主庫接管業(yè)務,成為新的主庫,并繼續(xù)向其他從庫進行數(shù)據(jù)同步,從而最大程度保證數(shù)據(jù)一致性和服務高可用性.在主從復制的基礎之上部署一套主從復制的自動化管理程序,即可組建一套MySQL高可用集群[5,6].

        本文介紹的MySQL集群采用的是一主多從架構,即集群中一個節(jié)點用作主庫,其他多個從節(jié)點用作從庫.集群管理程序是基于開源的MHA(Master High Availability)集群軟件改進而成,可以實現(xiàn)主從復制狀態(tài)的實時監(jiān)控,秒級故障自動切換和自動主從提升等功能.

        圖1 MySQL主從復制架構示意圖

        1.2 Oracle GoldenGate簡介

        GoldenGate,即Oracle GoldenGate Transactional Data Management,是一種基于日志的數(shù)據(jù)同步軟件.GoldenGate從源數(shù)據(jù)庫讀取并解析在線日志或歸檔日志,捕捉到數(shù)據(jù)變化,再將這些數(shù)據(jù)變化投遞到目標端,在目標端將數(shù)據(jù)變化重新解析為SQL語句并應用到數(shù)據(jù)庫,從而完成源數(shù)據(jù)庫到目標數(shù)據(jù)庫的數(shù)據(jù)同步.

        GoldenGate的核心進程包括:抽取進程、復制進程和管理進程.

        1) 抽取進程(Extract)

        抽取進程運行在源端,負責從源數(shù)據(jù)庫的源數(shù)據(jù)表和日志中抽取數(shù)據(jù)和數(shù)據(jù)變化,用于目標數(shù)據(jù)庫的初始數(shù)據(jù)裝載和變化數(shù)據(jù)的同步.

        需要同步數(shù)據(jù)的對象寫在配置文件中,抽取進程讀取配置文件獲取同步的對象,對這些對象進行的DML (Data Manipulation Language)和DDL (Data Define Language)操作,都被抽取進程從日志中捕獲,并將其中完成提交的事務輸出到Trail文件中以傳送到目標端.抽取進程周期性地完成檢查點(checkpoint),記錄其完成捕獲的日志位置,可以進行斷點續(xù)傳,保證數(shù)據(jù)同步的完整性.

        2) 復制進程(Replicat)

        復制進程在目標端運行,該進程讀取目標端接收到的trail文件,并將文件內容解析為可以執(zhí)行的SQL語句,然后在目標數(shù)據(jù)庫中執(zhí)行這些SQL語句.與Extract進程一樣,復制進程也是使用內部的檢查點(checkpoint)機制來保證進程意外中斷后,可以從中斷的位置重新啟動恢復,從而避免數(shù)據(jù)丟失的風險.

        3) 管理進程 (MGR)

        在GoldenGate的源端和目標端分別有一個控制進程,稱為管理進程.該進程主要負責監(jiān)控GoldenGate的其他進程狀態(tài),發(fā)現(xiàn)進程異常,發(fā)送超時或閥值告警,報告進程錯誤,為其他進程分配存儲空間和重啟異常進程等.

        數(shù)據(jù)的變化信息存儲在trail文件中,目標端的復制進程通過讀取該文件來獲取需要應用到目標數(shù)據(jù)庫的SQL語句.從源端到目標端的數(shù)據(jù)傳輸,大多情況下建議采用數(shù)據(jù)泵進程.該進程在數(shù)據(jù)庫源端啟動,負責把源端的trail文件以數(shù)據(jù)塊級別通過網(wǎng)絡傳輸?shù)侥繕硕?運行在目標端的收集進程(Collector)把從遠端傳輸過來的數(shù)據(jù)進行過濾,映射和轉換,重新生成目標端的trail文件[7].

        圖2 GoldenGate工作原理示意圖

        圖3 GoldenGate關鍵進程示意圖

        GoldenGate支持幾乎所有主流操作系統(tǒng)和數(shù)據(jù)庫的異構平臺之間的實時復制.此外,GoldenGate復制的拓撲結構非常靈活,除了支持一對一單向復制以外,還支持雙向復制、一對多復制、多對一復制、多級復制等.因此,GoldenGate可以應用于系統(tǒng)的應急容災、業(yè)務雙中心、數(shù)據(jù)庫備份、數(shù)據(jù)庫遷移、數(shù)據(jù)搬遷、異構數(shù)據(jù)庫數(shù)據(jù)同步等多種應用場景[8,9].

        2 MySQL集群的GoldenGate復制架構設計

        2.1 架構設計難點分析

        在使用GoldenGate從MySQL到Oracle的異構數(shù)據(jù)同步架構中,MySQL數(shù)據(jù)庫作為復制的源端,Oracle數(shù)據(jù)庫作為復制的目標端,整個復制過程涉及3個環(huán)節(jié):

        1) GoldenGate的抽取進程從源端MySQL數(shù)據(jù)庫的二進制日志中抽取事務日志.

        2) 抽取的事務日志通過網(wǎng)絡傳輸?shù)侥繕硕薕racle數(shù)據(jù)庫.

        3) GoldenGate的復制進程對接收到的事務日志進行解析并在目標端Oracle數(shù)據(jù)庫內應用.

        在這三個環(huán)節(jié)中,環(huán)節(jié)2)事務日志的傳輸穩(wěn)定性主要依賴于網(wǎng)絡方案保障,本文不做論述.環(huán)節(jié)3)中由于GoldenGate與Oracle數(shù)據(jù)庫具有原生兼容性,搭配使用的方案非常成熟,不是架構的難點,本文也不做論述.

        此架構的重點在于GoldenGate的抽取進程如何從MySQL數(shù)據(jù)庫源端抽取事務日志.當復制的源端MySQL數(shù)據(jù)庫為單節(jié)點時,GoldenGate的抽取進程直接從二進制日志中抽取事務日志即可.如果在源端的抽取進程發(fā)生異常中斷,GoldenGate會記錄下事務中斷位置,事務中斷位置是一個二進制日志文件號對應的文件中所記錄的標記該事務開始的位置號.當源端的抽取進程恢復時,GoldenGate會找到中斷時記錄的二進制日志文件及該文件中的事務位置號,從這個位置繼續(xù)開始事務日志的抽取,從而保證不會有事務遺漏和事務被重復抽取的情況,這樣就能保證數(shù)據(jù)復制在事務日志抽取環(huán)節(jié)的完整性和一致性.但是復制源端的MySQL數(shù)據(jù)庫為多節(jié)點集群架構時,MySQL集群的主庫是復制的源端,GoldenGate需要在主庫所在服務器上啟動,并從主庫的二進制日志中進行事務日志的抽取.當集群發(fā)生切換的時候,原有的從庫之一接管主庫的業(yè)務,成為新的主庫.此時,要保證業(yè)務數(shù)據(jù)繼續(xù)往Oracle數(shù)據(jù)庫做同步,就需要GoldenGate在新的主庫上繼續(xù)抽取二進制日志,即GoldenGate的復制源端需要從MySQL集群的原主庫變?yōu)榧呵袚Q后的新主庫,且GoldenGate可以在新主庫上完成斷點續(xù)傳.這就需要在新主庫的二進制日志中能夠準確的找到抽取中斷的位置,確保從中斷的準確位置開始抽取,而不會抽取的位置靠后造成事務遺漏或者抽取的位置靠前造成事務被重復抽取,因為無論事務遺漏還是事務重復都會造成最終的不一致.要確保做到這一點就會面臨以下兩個難點:

        1) 需要GoldenGate能夠感知到MySQL集群發(fā)生的主從切換行為,且能夠在MySQL集群發(fā)生主從切換后即刻在原主庫上停止抽取進程,然后在新主庫上啟動抽取進程.

        2) 在從新主庫的二進制日志開始抽取事務日志之前,GoldenGate如何找到準確的抽取起始位置.因為MySQL原主庫和新主庫的二進制日志是兩套完全獨立的日志,沒有繼承性,在原主庫和新主庫中,記錄同一個事務的二進制日志文件號和文件內的事務position號完全不一樣.這會讓GoldenGate通過原主庫抽取中斷時記錄的二進制日志文件號和事務position號,在新主庫的二進制日志中確定準確的抽取起始位置變得非常困難.

        圖4 GoldenGate日志抽取源端切換示意圖

        2.2 總體方案設計

        根據(jù)GoldenGate要能完成集群切換后即刻在新的主庫上啟動需求,本文設計了一套針對GoldenGate部署的共享存儲方案:

        首先,在MySQL集群的各節(jié)點間部署一套共享存儲,該存儲與集群各節(jié)點服務器均相連,但該存儲上的文件系統(tǒng)同一時刻只能掛載在一臺服務器上,沒有掛載共享存儲的服務器不能對該存儲上的文件系統(tǒng)進行讀寫.

        然后,將GoldenGate的應用程序安裝部署在共享存儲的文件系統(tǒng)上,GoldenGate的啟動文件、配置文件和日志文件均放置在該文件系統(tǒng)上.這樣,只要掛載了該共享文件系統(tǒng)的服務器,就可以在其上啟動GoldenGate.

        最后,要保證MySQL集群發(fā)生切換的時候,共享文件系統(tǒng)能夠從切換前的主庫服務器卸載下來,重新掛載到切換后的新主庫服務器上,這一系列共享文件系統(tǒng)的操作均可以通過開發(fā)切換控制程序來實現(xiàn).

        這樣就實現(xiàn)了MySQL集群原主庫崩潰,新主庫接管業(yè)務后,GoldenGate能夠在新主庫上啟動并從新主庫捕捉數(shù)據(jù)變化繼續(xù)進行同步.

        圖5 GoldenGate共享存儲部署方案

        本文在方案中引用了MySQL5.6的新特性—GTID(Global Transaction ID),來解決GoldenGate在新主庫服務器上啟動后,如何找到準確抽取起始位置的難題.GTID是在MySQL集群中的一個全局編號,該編號對應于一個已提交事務,同一個事務在MySQL集群中所有節(jié)點對應的GTID是完全一致的.這樣只要選擇MySQL 5.6以上的版本,在主從復制配置時開啟GTID功能,GTID就會顯式輸出到集群每個節(jié)點的二進制日志中.那么在MySQL集群發(fā)生切換的時候,根據(jù)原主庫二進制日志抽取停止點的GTID找到新主庫二進制日志上對應的GTID,就可以唯一定位到日志續(xù)傳的起始點.根據(jù)這個思路,只要對MySQL集群管理程序進行改造,完成如下功能即可:

        1) 根據(jù)GoldenGate輸出的原主庫的二進制日志名稱和日志位置號找到對應的GTID.

        2) 根據(jù)GTID定位出新主庫對應的二進制日志名稱和日志位置號,并將定位結果輸出.

        圖6 二進制日志斷點位置定位流程

        綜合以上設計思路,總體方案設計的關鍵點歸納如下:

        1) 在集群各節(jié)點間部署共享存儲,將GoldenGate部署在共享存儲的文件系統(tǒng)上.

        2) 開發(fā)GoldenGate切換控制程序,負責與GoldenGate的交互和共享存儲在集群各節(jié)點間的切換.

        3) 開啟MySQL集群主從復制的GTID功能.

        4) 改造MySQL集群管理程序,新增與GoldenGate切換控制程序的交互接口,能夠發(fā)送切換通知,并在接收到GoldenGate切換控制程序反饋的日志抽取停止點后,將切換后日志續(xù)傳起始點告知GoldenGate切換控制程序.

        方案的總體工作流程設計如圖7.

        當由于某個觸發(fā)條件觸發(fā)MySQL集群開始切換時,MySQL集群管理程序同時出發(fā)GoldenGate日志抽取的切換流程:

        1) MySQL集群管理程序向GoldenGate切換控制程序發(fā)出切換通知,并將切換目的地,即新主庫所在服務器的IP地址告訴GoldenGate切換控制程序.

        2) GoldenGate切換控制程序將部署著Golden-Gate的共享存儲切換到新主庫所在服務器.

        3) GoldenGate切換控制程序獲取GoldenGate抽取進程在MySQL集群切換前所抽取到原主庫的最新的二進制文件名和日志位置號.

        4) GoldenGate切換控制程序把原主庫的二進制文件名和日志位置號發(fā)送給MySQL集群管理程序,請求返回新主庫對應的二進制文件名和日志位置.

        5) MySQL集群管理程序根據(jù)原主庫的二進制文件名和日志位置號定位出新主庫對應的二進制文件名和日志位置,將定位結果發(fā)送給GoldenGate切換控制程序.

        6) GoldenGate切換控制程序在新主庫所在服務器啟動GoldenGate,并指定GoldenGate切換控制程序從新主庫對應的二進制文件名和日志位置開始抽取日志.

        圖7 方案總體流程設計

        3 方案實現(xiàn)

        以上設計的同步方案的關鍵實現(xiàn)主要包括:

        1) 對MySQL集群管理程序進行改造,實現(xiàn)日志定位,即二進制文件名、日志位置號與GTID的轉換功能.

        2) 實現(xiàn)GoldenGate切換控制程序的切換控制和斷點續(xù)傳功能.

        3.1 MySQL集群管理程序日志定位的功能實現(xiàn)

        日志定位功能的核心實現(xiàn)思路是:

        Step 1.通過傳入的二進制日志文件路徑和位置號,查找出該二進制日志文件中包含該位置號的事務,再輸出在該事物之前完成復制的最新事務的GTID.

        Step 2.根據(jù)Step 1獲取的GTID,遍歷新主庫的二進制日志文件,查找出GTID所在的二進制日志文件和對應的已完成復制的事務,再輸出該事務之后第一個未完成復制的事務對應的位置號.

        其中,Step 1代碼實現(xiàn)邏輯如下:

        1) 讀取二進制日志文件.

        2) 讀取文件頭信息,根據(jù)輸入的位置號獲取前一事務的事件位置.

        3) 解析前一事務的事件內容,獲取該事務GTID的位置信息.

        4) 從獲取的GTID位置信息獲取GTID字符串并輸出.

        關鍵步驟代碼實現(xiàn)如下:

        Step 2的代碼邏輯與實現(xiàn)與Step 1類似,在此不再做詳述.

        3.2 GoldenGate切換控制程序的實現(xiàn)

        GoldenGate切換控制程序主要實現(xiàn)的核心功能是,在接到 MySQL集群的切換通知后,完成GoldenGate的切換,關鍵步驟如下:

        1) 判斷原主庫服務器是否宕機.如果沒有宕機,則在原主庫服務器上停止GoldenGate復制,然后觸發(fā)GoldenGate切換,如果已經(jīng)宕機,則直接觸發(fā)GoldenGate切換.

        2) 將部署著GoldenGate的共享存儲切換到新主庫所在服務器.

        3) 通過MySQL集群將原主庫二進制日志的位置轉換為新主庫二進制日志的位置,并啟動GoldenGate從新主庫二進制日志的位置開始抓取.

        這兩個步驟實現(xiàn)的部分代碼如下:

        1) 將原主庫的IP地址記錄到配置文件old_master_ip.conf中,在切換時需要先停止原主庫服務器上的GoldenGate的情況下需要使用.

        2) 切換時判斷原主庫所在服務器是否已經(jīng)宕機,如果已經(jīng)宕機不進行停止GoldenGate操作,如果沒有宕機,則進行停止GoldenGate操作.

        3) 把共享盤從原主庫服務器切換到新主庫服務器.

        如果原主庫服務器沒有宕機,需要先卸載共享盤:

        在新主庫服務器上掛載共享盤:

        4) 在新主庫上獲取原主庫停止同步時的二進制日志位置,然后通過MySQL集群接口轉換,找到新主庫對應的二進制日志位置,GoldenGate從新的二進制日志位置上啟動進程進行同步.

        3.3 效果驗證

        通過實際的部署使用,在MySQL集群發(fā)生主從切換的情況下,GoldenGate可以跟隨主庫的切換而自動進行故障切換,完成抽取進程與新主庫的自動對接,并能夠準確定位斷點,復制的數(shù)據(jù)無重復無丟失,完美保障數(shù)據(jù)同步的連續(xù)性和一致性.

        4 方案對比

        使用GoldenGate進行MySQL數(shù)據(jù)庫和Oracle數(shù)據(jù)庫的異構數(shù)據(jù)庫同步復制,是行業(yè)內最常用和最成熟的方法.多數(shù)情況下主要是針對MySQL數(shù)據(jù)庫單實例和Oracle數(shù)據(jù)庫進行同步,當涉及MySQL集群環(huán)境和Oracle數(shù)據(jù)庫進行同步的情況,主要有兩種部署方案:

        (1) GoldenGate的抽取進程部署在MySQL集群的主庫上.缺點是一旦主庫發(fā)生故障切換,GoldenGate的抽取進程將無法繼續(xù)工作,需要人工介入處理.

        (2) GoldenGate的抽取進程部署在MySQL集群的從庫上.缺點是MySQL集群主庫和從庫數(shù)據(jù)存在一定的同步延遲,導致GoldenGate的抽取進程抽取的數(shù)據(jù)也將與主庫存在一定的延遲.

        本文介紹的實現(xiàn)方法是在第一種部署方案的基礎上進行了架構強化,能夠完美解決第一種部署方案的缺點,在主庫發(fā)生故障切換時,GoldenGate的抽取進程能夠自動的進行故障切換并繼續(xù)無縫的完成事務抽取,全自動無需人工干預.表1為3種方案的對比結果.

        表1 方案對比矩陣

        5 結語

        本文介紹了利用GoldenGate構建MySQL數(shù)據(jù)庫到Oracle數(shù)據(jù)庫的異構數(shù)據(jù)庫同步復制架構,實現(xiàn)了在MySQL集群發(fā)生主從切換時,GoldenGate能夠自動的進行故障切換并繼續(xù)無縫的完成事務抽取,保障了異構數(shù)據(jù)庫間數(shù)據(jù)同步復制的連續(xù)性和可靠性.同時,本文介紹的復制架構不僅僅適用于MySQL數(shù)據(jù)庫到Oracle數(shù)據(jù)庫的異構數(shù)據(jù)庫同步復制,對于MySQL數(shù)據(jù)庫到其他類型數(shù)據(jù)庫的同步復制同樣具有指導借鑒意義,在整體架構不需要做大的改動的情況下,只用對GoldenGate的復制端稍作調整,就能滿足MySQL數(shù)據(jù)庫到其他類型數(shù)據(jù)庫的同步復制需求.

        1 張偉麗,江春華,魏勁超.MySQL復制技術的研究及應用.計算機科學,2012,39(11A):168-170.

        2 邢志峰.MySQL主從復制的研究與應用.電子技術與軟件工程,2017,(15):188.

        3 劉騰.MySQL復制技術的研究與改進[碩士學位論文].杭州:浙江大學,2011.

        4 田關偉.MySQL復制技術分析研究.哈爾濱師范大學自然科學學報,2015,31(4):45-48,64.

        5 韋一鳴.基于MySQL復制技術的數(shù)據(jù)庫集群研究[碩士學位論文].杭州:杭州電子科技大學,2014.

        6 宣振國.基于Mysql的數(shù)據(jù)庫集群設計與實現(xiàn)[碩士學位論文].北京:北京郵電大學,2013.

        7 曲波,鄧旭東,姜鋒.Oracle GoldenGate數(shù)據(jù)同步機制研究與應用.微型電腦應用,2014,30(6):55-58.

        8 曹建輝.基于GoldenGate高級復制技術實現(xiàn)數(shù)據(jù)庫同步.甘 肅 科 技 ,2012,28(24):23-25.[doi:10.3969/j.issn.1000-0952.2012.24.008]

        9 王二暖.Goldengate實現(xiàn)異構數(shù)據(jù)庫間的數(shù)據(jù)同步.電腦開發(fā)與應用,2014,27(5):70-72.

        猜你喜歡
        控制程序二進制事務
        “事物”與“事務”
        基于分布式事務的門架數(shù)據(jù)處理系統(tǒng)設計與實現(xiàn)
        用二進制解一道高中數(shù)學聯(lián)賽數(shù)論題
        基于PLC的變電站備用電源自動投入裝置控制程序的研究
        河湖事務
        有趣的進度
        二進制在競賽題中的應用
        基于PLC數(shù)值處理模塊的PID控制程序研究
        紙機傳動控制程序的復用性研究
        中國造紙(2014年1期)2014-03-01 02:10:04
        SQLServer自治事務實現(xiàn)方案探析
        国产亚洲精品免费专线视频| 欧美情侣性视频| 精品一区二区av天堂| 久久青青草原亚洲av无码麻豆| 丰满人妻熟妇乱又伦精品视| 亚洲av无码片一区二区三区| 国产成社区在线视频观看| 极品少妇一区二区三区四区视频| 国99精品无码一区二区三区| 欧美aaaaaa级午夜福利视频| 国产精品久久久久久久久免费观看 | 日韩一区在线精品视频| 欧洲熟妇色xxxx欧美老妇多毛 | 久久婷婷综合色丁香五月| 久久久久亚洲AV无码专区一区| 91九色极品探花内射| 免费av一区二区三区无码| 亚洲成a人v欧美综合天堂麻豆| 人妻系列无码专区久久五月天| 蜜桃久久综合一区二区| 亚洲午夜久久久久久久久电影网| 国产精品亚洲成在人线| 亚洲AV小说在线观看| 国产一级内射一片视频免费| 久久伊人少妇熟女大香线蕉| 亚洲影院天堂中文av色| 日本一区二区三区看片| 东北女人一级内射黄片| 天天弄天天模| 亚洲一区二区久久青草| av在线播放免费观看| 亚洲精品tv久久久久久久久久| 中国精品久久精品三级| 日韩精品中文字幕人妻中出| 国产精品妇女一区二区三区| 成熟丰满熟妇高潮xxxxx视频| 麻豆密入视频在线观看| 99伊人久久精品亚洲午夜| 国产亚洲成av人片在线观黄桃| 性夜影院爽黄a爽在线看香蕉| 精品国产一区二区三区久久狼|