《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種自動(dòng)管理的高可用架構(gòu)的實(shí)現(xiàn)
一種自動(dòng)管理的高可用架構(gòu)的實(shí)現(xiàn)
2016年微型機(jī)與應(yīng)用第24期
霍長(zhǎng)娟1,孫洪平2
1. 中國(guó)航空結(jié)算有限責(zé)任公司,北京 100028;2. 北京高陽(yáng)金信信息技術(shù)有限公司,北京 100050
摘要: 結(jié)合實(shí)際生產(chǎn)業(yè)務(wù)要求,利用Oracle11g的DataGuard技術(shù),通過(guò)本地部署主備數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu),通過(guò)遠(yuǎn)端級(jí)聯(lián)第二個(gè)備庫(kù)實(shí)現(xiàn)異地容災(zāi)的要求。在DataGuard的搭建過(guò)程中,配置Broker工具實(shí)現(xiàn)自動(dòng)管理DataGuard,在此基礎(chǔ)上,設(shè)置FSFO和快速閃回恢復(fù)區(qū)實(shí)現(xiàn)本地主數(shù)據(jù)庫(kù)故障時(shí)自動(dòng)切換到備庫(kù),以及在備庫(kù)快速閃回恢復(fù)區(qū)沒(méi)有被歸檔日志撐滿之前主庫(kù)得到正常恢復(fù),Broker能夠自動(dòng)恢復(fù)DataGuard的配置,從而真正實(shí)現(xiàn)高效的、自動(dòng)的高可用架構(gòu)。
Abstract:
Key words :

  霍長(zhǎng)娟1,孫洪平2

  (1. 中國(guó)航空結(jié)算有限責(zé)任公司,北京 100028;2. 北京高陽(yáng)金信信息技術(shù)有限公司,北京 100050)

       摘要:結(jié)合實(shí)際生產(chǎn)業(yè)務(wù)要求,利用Oracle11g的DataGuard技術(shù),通過(guò)本地部署主備數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu),通過(guò)遠(yuǎn)端級(jí)聯(lián)第二個(gè)備庫(kù)實(shí)現(xiàn)異地容災(zāi)的要求。在DataGuard的搭建過(guò)程中,配置Broker工具實(shí)現(xiàn)自動(dòng)管理DataGuard,在此基礎(chǔ)上,設(shè)置FSFO和快速閃回恢復(fù)區(qū)實(shí)現(xiàn)本地主數(shù)據(jù)庫(kù)故障時(shí)自動(dòng)切換到備庫(kù),以及在備庫(kù)快速閃回恢復(fù)區(qū)沒(méi)有被歸檔日志撐滿之前主庫(kù)得到正常恢復(fù),Broker能夠自動(dòng)恢復(fù)DataGuard的配置,從而真正實(shí)現(xiàn)高效的、自動(dòng)的高可用架構(gòu)。

  關(guān)鍵詞:DataGuard;主備數(shù)據(jù)庫(kù);遠(yuǎn)程災(zāi)備;FSFO

  中圖分類號(hào):TP309文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.022

  引用格式:霍長(zhǎng)娟,孫洪平. 一種自動(dòng)管理的高可用架構(gòu)[J].微型機(jī)與應(yīng)用,2016,35(24):77-80,83.

0引言

  目前很多銀行、金融等企業(yè)都使用Oracle作為后臺(tái)數(shù)據(jù)庫(kù),如何保證數(shù)據(jù)庫(kù)的安全可靠性是從上到下一致關(guān)心的問(wèn)題。目前的高可用配置有多種方案,數(shù)據(jù)庫(kù)RAC、DataGuard、操作系統(tǒng)HA等,都能在某種程度上滿足高可用性的要求。RAC是通過(guò)集群來(lái)消除單點(diǎn)故障;HA是一種OS級(jí)別的高可用方案;DataGuard是通過(guò)在異地部署備庫(kù),當(dāng)主庫(kù)出現(xiàn)問(wèn)題時(shí)立即切換到備庫(kù)的一種高可用方案。

1DataGuard簡(jiǎn)介

  Oracle DataGuard是Oracle公司開發(fā)的一種數(shù)據(jù)庫(kù)級(jí)別的HA方案,其最主要功能是容災(zāi)、數(shù)據(jù)保護(hù)、故障恢復(fù)等,其基本原理是將日志文件從源數(shù)據(jù)庫(kù)傳輸?shù)侥繕?biāo)數(shù)據(jù)庫(kù),然后在目標(biāo)數(shù)據(jù)庫(kù)上應(yīng)用這些日志文件,從而使目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)保持同步,達(dá)到高可用的目的。以下是DataGuard的一些基本概念。

  (1)DataGuard中的備庫(kù)分為物理備庫(kù)和邏輯備庫(kù)兩種,物理備庫(kù)就是應(yīng)用日志進(jìn)行恢復(fù), 邏輯備庫(kù)就是應(yīng)用SQL語(yǔ)句進(jìn)行恢復(fù),業(yè)界大多采用物理備庫(kù)的方式。

  (2)DataGuard包含三種服務(wù):日志傳輸服務(wù)——日志從主庫(kù)傳輸?shù)絺鋷?kù);日志應(yīng)用服務(wù)——在備庫(kù)應(yīng)用日志;角色轉(zhuǎn)換服務(wù)——主備庫(kù)角色的轉(zhuǎn)換。

  (3)DataGuard的三種數(shù)據(jù)保護(hù)模式是:最大保護(hù)、最大性能、最大(高)可用。

2業(yè)務(wù)要求

  本文結(jié)合實(shí)際生產(chǎn)業(yè)務(wù),利用Oracle11g的DataGuard技術(shù)搭建高可用架構(gòu)。此業(yè)務(wù)系統(tǒng)的等級(jí)比較高,用戶要求數(shù)據(jù)庫(kù)系統(tǒng)的可使用時(shí)間為24×365小時(shí),除了每晚計(jì)劃內(nèi)的online備份時(shí)間和達(dá)成一致的維護(hù)時(shí)間外,網(wǎng)絡(luò)連接可用率必須為可用時(shí)間的99.9%,在出現(xiàn)故障的時(shí)候,要求2小時(shí)內(nèi)解決故障,需要廠商受理的要求4小時(shí)內(nèi)解決。另外,為預(yù)防災(zāi)難發(fā)生,此系統(tǒng)要求有異地災(zāi)備數(shù)據(jù)庫(kù)設(shè)置,也就是說(shuō)需要在異地構(gòu)建一套同樣的環(huán)境,并且要保持?jǐn)?shù)據(jù)的一致性同步。因此,簡(jiǎn)單的單機(jī)部署已經(jīng)不能滿足此系統(tǒng)的高可用性要求,必須為此系統(tǒng)配置帶有災(zāi)備系統(tǒng)的高可用性架構(gòu)。目前的高可用配置有多種方案,數(shù)據(jù)庫(kù)RAC、DataGuard、操作系統(tǒng)HA等,都能在某種程度上滿足高可用性的要求,結(jié)合各種技術(shù)的優(yōu)缺點(diǎn)以及成本、對(duì)維護(hù)人員的要求等各方面因素,最終采用Oracle11g的DataGuard [1]技術(shù)實(shí)現(xiàn)本系統(tǒng)的高可用架構(gòu)以及異地災(zāi)備配置。

3架構(gòu)設(shè)計(jì)

  高可用架構(gòu)圖如圖1所示。本地三臺(tái)服務(wù)器,主庫(kù)、備庫(kù)和Broker [2]服務(wù)器,主庫(kù)實(shí)時(shí)向備庫(kù)傳輸redolog日志,備庫(kù)實(shí)時(shí)恢復(fù),Broker工具實(shí)時(shí)監(jiān)測(cè)DG數(shù)據(jù)庫(kù)的狀態(tài),當(dāng)發(fā)生主庫(kù)不可用或是其他問(wèn)題(例如Broker不能和主庫(kù)通信)時(shí),通過(guò)Broker端設(shè)置的FSFO功能可以自動(dòng)切換到備庫(kù),從而實(shí)現(xiàn)自動(dòng)管理,不需要人為干預(yù)。另外,在主備庫(kù)設(shè)置快速閃回恢復(fù)區(qū),用于存放歸檔日志,當(dāng)主庫(kù)出問(wèn)題后,如果能在備庫(kù)快速閃回恢復(fù)區(qū)沒(méi)有被歸檔日志撐滿之前恢復(fù)正常,則不用重新搭建DG,Broker能夠自動(dòng)恢復(fù)DG的配置(如表1所示),歸檔日志往回同步完成后可以重新切回主庫(kù),從而真正實(shí)現(xiàn)高效的、自動(dòng)的高可用架構(gòu)。關(guān)于災(zāi)備數(shù)據(jù)庫(kù),通過(guò)搭建級(jí)聯(lián)DG來(lái)實(shí)現(xiàn),具體就是從備庫(kù)通過(guò)專線向異地傳輸redolog,在異地?cái)?shù)據(jù)庫(kù)進(jìn)行實(shí)時(shí)恢復(fù),從而達(dá)到異地容災(zāi)的目的。由于Broker的特性,不能同時(shí)部署兩臺(tái)Broker服務(wù)器,因此選擇在本地部署,災(zāi)備端沒(méi)有部署,這也是符合SLA要求的。

 

001.jpg

4搭建DataGuard環(huán)境

  4.1約定信息

  DataGuard配置表如表2所示。

002.jpg

  4.2DG環(huán)境配置

  4.2.1主庫(kù)配置

  (1)基本配置。開啟force logging,通過(guò)使用remote login密碼文件配置redo的傳輸認(rèn)證、開啟歸檔。

  (2)調(diào)整undo設(shè)置和開啟數(shù)據(jù)庫(kù)閃回。通過(guò)設(shè)置快速閃回恢復(fù)區(qū),再結(jié)合DG的管理工具Broker自動(dòng)管理功能可以實(shí)現(xiàn)DG crash后,不用手工重新搭建DG,便于DG數(shù)據(jù)庫(kù)failover時(shí)快速恢復(fù)主庫(kù)狀態(tài)。結(jié)合實(shí)際生產(chǎn)業(yè)務(wù)要求,生產(chǎn)數(shù)據(jù)庫(kù)undo數(shù)據(jù)和數(shù)據(jù)庫(kù)閃回?cái)?shù)據(jù)保留時(shí)間分別設(shè)置為12小時(shí)和24小時(shí)。主要語(yǔ)句如下:

  SQL>ALTER SYSTEM SET UNDO_RETENTION=43200 SCOPE=SPFILE;

  SQL>ALTER SYSTEM SET UNDO_MANAGEMENT='AUTO' SCOPE=SPFILE;

  SQL>ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SCOPE=BOTH;

  SQL>ALTER SYSTEM SET db_recovery_file_dest_size=150G;

  SQL>ALTER SYSTEM SET db_recovery_file_dest=’/dbflashback/flashlog’;

  SQL>ALTER DATABASE FLASHBACK ON;

  (3)配置DG相關(guān)參數(shù)(修改pfile文件,以下列出主要參數(shù)),然后重新生成spfile,重啟數(shù)據(jù)庫(kù)實(shí)例生效。

  *.db_name=dbpro

  *.db_unique_name=dbpro

  *.log_archive_config=dg_config=(dbpro,dbsty,dbdr)

  *.log_archive_dest_1=location=/dbarch/dbpro

  valid_for=(all_logfiles,all_roles) db_unique_name=dbpro

  *.log_archive_dest_2=service=dbsty async

  valid_for=(all_logfiles,primary_role) db_unique_name=dbsty

  *.log_archive_dest_3=service=dbdr async compression=enable

  valid_for=(standby_logfiles,standby_role) db_unique_name=dbdr

  *.log_archive_dest_state_1=enable

  *.log_archive_dest_state_2=enable

  *.log_archive_dest_state_3=enable

  *.fal_server=dbsty

  *.fal_client=dbpro

  (4)配置備庫(kù)的TNS解析,在主庫(kù)tnsnames.ora中添加備庫(kù)的TNS解析。

  (5)創(chuàng)建應(yīng)用程序的連接服務(wù)。為保證應(yīng)用程序在數(shù)據(jù)庫(kù)切換后自動(dòng)連接到新主庫(kù),使用dbdg服務(wù)和觸發(fā)器實(shí)現(xiàn)應(yīng)用程序的連接轉(zhuǎn)移。

  創(chuàng)建啟動(dòng)dbdg服務(wù)

  begin

  dbms_service.create_service('dbdg','dbdg');

  end;

  /

  begin

  DBMS_SERVICE.START_SERVICE('dbdg');

  end;

  /

  創(chuàng)建服務(wù)更改觸發(fā)器

  create or replace trigger startdbdg after startup on database

  declare

  v_role varchar(30);

  begin

  select database_role into v_role from vMYMdatabase;

  if v_role = 'PRIMARY' then

  DBMS_SERVICE.START_SERVICE('dbdg');

  elseDBMS_SERVICE.STOP_SERVICE('dbdg');

  end if;

  end;

  /

  (6)配置standby redo log。

  數(shù)據(jù)庫(kù)standby redo log用來(lái)實(shí)時(shí)接收redo日志,大小與online redo log一致,組數(shù)比online redo log多一組。語(yǔ)句如下:

  ALTER DATABASE ADD STANDBY LOGFILE GROUP 21 ('/dbdata01/oradata/dbpro/styredo01a.log','/dbdata02/oradata/dbpro/styredo01b.log') SIZE 800M;

  ...

  (7)為備庫(kù)做準(zhǔn)備。

  對(duì)主庫(kù)做rman全備份、為備庫(kù)創(chuàng)建參數(shù)文件、為備庫(kù)創(chuàng)建standby控制文件。語(yǔ)句如下:

  SQL> CREATE PFILE=/tmp/initdbpro.ora FROM SPFILE;

  SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS /tmp/dbsty.ctl;

  4.2.2備庫(kù)配置

  (1)基本配置。從主庫(kù)恢復(fù)參數(shù)文件和拷貝密碼文件、恢復(fù)standby控制文件(直接把standby控制文件改名成control1,control2,control3存到相應(yīng)目錄即可,然后啟庫(kù)到mount)、恢復(fù)主庫(kù)rman備份。

  (2)配置DG相關(guān)參數(shù)(修改pfile文件,以下列出主要參數(shù)),然后重新生成spfile,重啟數(shù)據(jù)庫(kù)到mount。

  *.db_name=dbpro

  *.db_unique_name=dbsty

  *.log_archive_config=dg_config=(dbpro,dbsty,dbdr)

  *.log_archive_dest_1=location=/dbarch/dbpro

  valid_for=(all_logfiles,all_roles) db_unique_name=dbsty

  *.log_archive_dest_2=service=dbpro async

  valid_for=(online_logfiles,primary_role) db_unique_name=dbpro

  *.log_archive_dest_3=service=dbdr async compression=enable

  valid_for=(standby_logfiles,standby_role) db_unique_name=dbdr

  *.log_archive_dest_state_1=enable

  *.log_archive_dest_state_2=enable

  *.log_archive_dest_state_3=enable

  (3)配置主庫(kù)的TNS解析,在備庫(kù)tnsnames.ora中添加主庫(kù)的TNS解析。

  (4)配置standby redo log。

  ALTER DATABASE ADD STANDBY LOGFILE GROUP 21 (/dbdata01/oradata/dbpro/styredo01a.log,/dbdata02/oradata/dbpro/styredo01b.log) SIZE 800M;

  ...

  (5)開啟數(shù)據(jù)庫(kù)閃回。

  SQL>ALTER DATABASE FLASHBACK ON;

  (6)啟動(dòng)redo數(shù)據(jù)同步。

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

  (7)驗(yàn)證redo數(shù)據(jù)同步。

  備庫(kù)確認(rèn)現(xiàn)有的歸檔redo日志文件:

  SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM VMYMARCHIVED_LOG ORDER BY SEQUENCE#;

  主庫(kù)強(qiáng)制切換日志:

  SQL> ALTER SYSTEM SWITCH LOGFILE;

  備庫(kù)驗(yàn)證新的redo數(shù)據(jù)是否歸檔:

  SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM VMYMARCHIVED_LOG ORDER BY SEQUENCE#;

  備庫(kù)驗(yàn)證接受的redo是否被應(yīng)用:

  SQL> SELECT SEQUENCE#,APPLIED FROM VMYMARCHIVED_LOG ORDER BY SEQUENCE#;

  4.3搭建DR配置

  關(guān)于災(zāi)備數(shù)據(jù)庫(kù),通過(guò)搭建級(jí)聯(lián)DG來(lái)實(shí)現(xiàn),具體就以備庫(kù)為源端,通過(guò)專線向異地災(zāi)備服務(wù)器傳輸redolog,在異地?cái)?shù)據(jù)庫(kù)進(jìn)行實(shí)時(shí)恢復(fù),從而達(dá)到異地容災(zāi)的目的。

  (1)基本配置。從主庫(kù)恢復(fù)參數(shù)文件、拷貝密碼文件、恢復(fù)控制文件,然后啟庫(kù)到mount、恢復(fù)主庫(kù)rman備份。

  (2)配置相關(guān)參數(shù)(修改pfile文件,以下列出主要參數(shù)),然后重新生成spfile,重啟數(shù)據(jù)庫(kù)。

  *.db_name=dbpro

  *.db_unique_name=dbdr

  *.log_archive_config=dg_config=(dbpro,dbsty,dbdr)

  *.log_archive_dest_1=location=/dbarch/dbpro

  valid_for=(online_logfiles,all_roles) db_unique_name=dbdr

  *.log_archive_dest_2=location=dbpro

  alid_for=(standby_logfiles,standby_role) db_unique_name=dbdr

  *.log_archive_dest_state_1=enable

  *.log_archive_dest_state_2=enable

  (3)配置主庫(kù)備庫(kù)的TNS解析、配置standby redo log、開啟閃回、啟動(dòng)redo數(shù)據(jù)同步、驗(yàn)證redo數(shù)據(jù)同步,和DG搭建是一樣的部署,這里不再贅述。

  4.4DG Broker和FastStart Failor配置

  4.4.1Broker配置過(guò)程

  Broker是管理DataGuard的命令行工具,為使用快速放障切換(Fast-Start Failover,F(xiàn)SFO)功能,必須將Broker配置在Broker管理服務(wù)器HOST-DGMT-1上。

  (1)主、備庫(kù)配置監(jiān)聽(tīng)服務(wù)。

  修改主、備庫(kù)監(jiān)聽(tīng)配置文件,重啟監(jiān)聽(tīng)檢查**_DGMGRL服務(wù)。

  主數(shù)據(jù)庫(kù):

  SID_LIST_LISTENER=

  (SID_LIST=

  (SID_DESC=

  (GLOBAL_DBNAME=dbpro_DGMGRL) (ORACLE_HOME=/dbu01/app/oracle/product/11.2.0/dbhome_1)

  (SID_NAME=dbpro)

  )

  )

  備數(shù)據(jù)庫(kù):

  SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbsty_DGMGRL)(ORACLE_HOME=/dbu01/app/oracle/product/11.2.0/dbhome_1)

  (SID_NAME=dbpro)

  )

  )

  (2)主、備庫(kù)設(shè)置Broker配置文件位置。

  參數(shù)dg_broker_config_file1規(guī)定Broker配置文件的位置,默認(rèn)就在MYMORACLE_HOME/dbs下,主備庫(kù)采用默認(rèn)配置即可。

  (3)主、備庫(kù)啟用Broker。

  SQL>ALTER SYSTEM SET DG_BROKER_START=TRUE scope=both;

  檢查dmon進(jìn)程,存在即可。

  (4)Broker服務(wù)器配置主、備庫(kù)的TNS解析。

  修改Broker服務(wù)器上tnsname.ora文件,添加主、備庫(kù)的TNS解析,此處省略。

  (5)從Broker服務(wù)器連接主庫(kù),添加主備庫(kù)信息:

  DGMGRL>connect sys/xxxxxxx@dbpro;

  創(chuàng)建主庫(kù)配置信息:

  DGMGRL> CREATE CONFIGURATION 'dbproconf' AS PRIMARY DATABASE IS 'dbpro' CONNECT IDENTIFIER IS dbpro;

  添加備庫(kù)配置:

  DGMGRL> ADD DATABASE 'dbsty' AS CONNECT IDENTIFIER IS dbsty MAINTAINED AS PHYSICAL;

  (6)啟用Broker配置:

  DGMGRL> ENABLE CONFIGURATION;

  4.4.2Fast-Start Failover 配置過(guò)程

  FastStart Failover功能實(shí)現(xiàn)主數(shù)據(jù)庫(kù)異常情況下快速切換到備數(shù)據(jù)庫(kù),在Broker管理工具基礎(chǔ)上增加了一個(gè)單獨(dú)的observer,在Broker服務(wù)器上進(jìn)行配置。

  (1)配置數(shù)據(jù)庫(kù)failover的目標(biāo)。

  配置dbpro failover的目標(biāo):

  DGMGRL>edit database dbpro set property FastStartFailoverTarget=dbsty;

  配置dbsty failover的目標(biāo):

  DGMGRL>edit database dbsty set property FastStartFailoverTarget=dbpro;

  (2)設(shè)置FastStartFailoverThreshold閾值和FastStartFailoverLagLimit閾值。

  FastStartFailoverThreshold閾值設(shè)置為120秒(默認(rèn)30秒),如果observer和備庫(kù)在120秒內(nèi)無(wú)法連接上主數(shù)據(jù)庫(kù),則啟動(dòng)FastStart Fallouer。

  DGMGRL>EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 120;

  FastStartFailoverLagLimi閾值設(shè)置為180秒(默認(rèn)30秒),備數(shù)據(jù)庫(kù)與主數(shù)據(jù)庫(kù)的數(shù)據(jù)丟失在180秒之內(nèi)才能啟動(dòng)FastStart Failover。

  DGMGRL>EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit = 180;

  (3)啟用Fast-Start Failover。

  DGMGRL> ENABLE FAST_START FAILOVER;

  4.4.3switchover和手動(dòng)failover測(cè)試

  (1)switchover切換測(cè)試

  切換前檢查狀態(tài)是否正常,如果數(shù)據(jù)同步不正常,將不能進(jìn)行switchover。

  DGMGRL> SHOW FAST_START FAILOVER;

  從主庫(kù)switchover到備庫(kù):

  DGMGRL> switchover to dbsty;

  從備庫(kù)switchover回切到主庫(kù):

  DGMGRL> switchover to dbpro;

  (2)手動(dòng)failover切換測(cè)試

  切換前檢查狀態(tài)是否正常, 如果備庫(kù)狀不正常,將不能進(jìn)行failover。

  DGMGRL> SHOW FAST_START FAILOVER;

  從主庫(kù)手動(dòng)failover到備庫(kù):

  DGMGRL> FAILOVER TO dbsty;

5結(jié)論

  本文主要介紹了Oracle11g的DataGuard以及Broker管理工具的基本概念以及功能,最后結(jié)合實(shí)際業(yè)務(wù),給出了在Linux平臺(tái)上搭建DG以及DR環(huán)境的實(shí)際案例,經(jīng)過(guò)生產(chǎn)運(yùn)行的實(shí)際測(cè)試,證明利用DG搭建的高可用架構(gòu)以及容災(zāi)環(huán)境可以滿足實(shí)際業(yè)務(wù)需求。

  參考文獻(xiàn)

  [1] RICH K.Oracle DataGuard concepts and administrator 11g release 2 (11.2) E25608-03,2012[EB/OL].(2012xx)http://docs.oracle.com/cd/E11882_01/server.112/e41134/toc.htm.

  [2] RICH K.Oracle DataGuard broker 11g release 2 (11.2) E17023-07,2012[EB/OL].(2012xx)http://docs.oracle.com/cd/E11882_01/server.112/e40771/toc.htm.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 国产亚洲高清在线精品不卡| 三大高傲校花被调教成好文| 人妻尝试又大又粗久久| 国产av无码专区亚洲a∨毛片| 午夜人妻久久久久久久久| 国产不卡免费视频| 国产乱子伦精品视频| 国产一级片在线| 国产白嫩美女在线观看| 性色AV无码中文AV有码VR| 成年人在线免费看| 成人免费视频69| 好吊妞视频免费观看va| 国产精品亚洲产品一区二区三区| 国产va欧美va在线观看| 丝袜高跟浓精受孕h文| 最新国产精品精品视频| 亚洲老妈激情一区二区三区| 胸奶好大好紧好湿好爽| 国产欧美日韩综合精品一区二区 | 日韩电影免费在线观看| 日韩精品欧美亚洲高清有无| 日本黄线在线播放免费观看| 无人区免费高清在线观看| 性做久久久久久免费观看| 天天躁夜夜踩狠狠踩2022| 国产精品R级最新在线观看| 国产成人午夜高潮毛片| 国产乱理伦片在线观看| 午夜剧场1000| 亚洲欧美日韩丝袜另类| 亚洲AV无码精品国产成人| 久久777国产线看观看精品| heyzo朝桐光在线播放| 6一13小幻女| 里番acg全彩本子在线观看| 美国式禁忌矿桥矿网第11集| 激情内射日本一区二区三区| 极品少妇被啪到呻吟喷水| 把水管开水放b里是什么感觉| 处破女18分钟完整版|