• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    在線圖表更新技術(shù)的改進(jìn)與應(yīng)用

    2016-02-09 08:27:30王雪梅張少波
    關(guān)鍵詞:全量觸發(fā)器拷貝

    王雪梅,張少波

    (南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)

    在線圖表更新技術(shù)的改進(jìn)與應(yīng)用

    王雪梅,張少波

    (南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)

    針對MySQL數(shù)據(jù)庫在進(jìn)行數(shù)據(jù)定義語言(DDL)操作時(shí)因鎖表動作引起長時(shí)間業(yè)務(wù)阻塞的問題,實(shí)現(xiàn)了一種不阻塞讀寫事務(wù)的在線圖表更新(OSC)方法??紤]到電商數(shù)據(jù)庫對讀寫事務(wù)的可用性要求,OSC系統(tǒng)將具有原子性的DDL語句拆分成若干步驟,創(chuàng)建臨時(shí)表分片拷貝全量數(shù)據(jù),并利用觸發(fā)器保證增量數(shù)據(jù)的一致性,在實(shí)現(xiàn)無鎖更改表結(jié)構(gòu)的同時(shí),解決了業(yè)務(wù)長時(shí)間阻塞的問題。另外,針對OSC技術(shù)在應(yīng)用場景中遇到的系列問題,提出了相應(yīng)的改進(jìn)方法,如預(yù)檢測、防并發(fā)執(zhí)行等,并結(jié)合淘寶實(shí)際數(shù)據(jù)庫架構(gòu),提供了復(fù)雜場景下OSC技術(shù)的應(yīng)用分析。

    數(shù)據(jù)一致性;影子表;在線圖表更新;觸發(fā)器

    互聯(lián)網(wǎng)電商平臺一般以“n個(gè)9”作為指標(biāo),對其業(yè)務(wù)提出高可用性要求;如“5個(gè)9”指一年內(nèi)系統(tǒng)不能正常工作的時(shí)間少于5′15″。但早期的MySQL數(shù)據(jù)庫在執(zhí)行更改表結(jié)構(gòu)的DDL操作時(shí)因?qū)φ麖埍硪腈i表動作,導(dǎo)致較長時(shí)間的業(yè)務(wù)阻塞[1-3]。2010年,為了解決這個(gè)問題,F(xiàn)acebook的數(shù)據(jù)庫技術(shù)團(tuán)隊(duì)首次提出在線圖表更新(online schema change,OSC)[4]解決方案。2011年,阿里巴巴的數(shù)據(jù)庫團(tuán)隊(duì)研發(fā)出了類似OSC技術(shù)的產(chǎn)品MyDDL。同時(shí),MySQL在5.1版本中提供了Fast Index Creation的功能,以InnoDB插件的形式在Optimized Create Index和Drop Index上避免表拷貝行為[5-7]。MySQL的5.6版本引入DDL Online Operate[8],雖然在大部分表更新操作中避免了表拷貝,一定程度上緩解了表鎖定的問題,但由于不能支持全部的DDL操作[9],例如,更改字段類型等,仍然不能徹底消除因日常運(yùn)維的頻繁表結(jié)構(gòu)更改對業(yè)務(wù)可用性的影響。

    本文基于Facebook提出的OSC基本思想,實(shí)現(xiàn)了一個(gè)在InnoDB引擎層之上的server層工具,通過將具有原子性的DDL語句拆分成若干原子性操作,創(chuàng)建臨時(shí)表分片拷貝全量數(shù)據(jù),并利用觸發(fā)器保證增量數(shù)據(jù)一致性,因只有極少部分操作會進(jìn)行鎖表從而極大減少了對原表的鎖表時(shí)間。另外,結(jié)合淘寶實(shí)際數(shù)據(jù)庫架構(gòu),針對“讀寫分離架構(gòu)”“單元化架構(gòu)”等復(fù)雜場景下基于OSC的數(shù)據(jù)庫運(yùn)維過程中出現(xiàn)的系列問題,提出了相應(yīng)的優(yōu)化方法,分析了不同場景下OSC技術(shù)的可行性。

    1 OSC系統(tǒng)的基本設(shè)計(jì)

    為盡量減少鎖表時(shí)間,OSC將原生DDL操作分成15個(gè)原子性步驟,如圖1所示。除了步驟13)

    圖1 OSC系統(tǒng)主要流程圖

    為了滿足表結(jié)構(gòu)變更需求,OSC系統(tǒng)構(gòu)造影子表(ghost)拷貝原表中的全量數(shù)據(jù),并創(chuàng)建3個(gè)觸發(fā)器(INSERT、UPDATE、DELETE),保證在全量數(shù)據(jù)拷貝過程中對原表新加入數(shù)據(jù)的拷貝,或者在原表上執(zhí)行更改、刪除操作后,實(shí)現(xiàn)影子表與原表數(shù)據(jù)的一致。由于對原表進(jìn)行插入、更新、刪除的操作發(fā)生在全量數(shù)據(jù)拷貝過程中的任意時(shí)刻,因此需要引入輔助表dk(DELETE KEY)用來在整個(gè)全量數(shù)據(jù)拷貝過程結(jié)束后修正原表與影子表不一致數(shù)據(jù)。

    圖2為INSERT觸發(fā)器設(shè)計(jì)圖。INSERT觸發(fā)器設(shè)計(jì)如下:

    圖2 INSERT觸發(fā)器設(shè)計(jì)圖

    在original表全量數(shù)據(jù)拷貝到ghost表中時(shí),當(dāng)有數(shù)據(jù)插入original表時(shí),會通過INSERT觸發(fā)器將數(shù)據(jù)同時(shí)插入到ghost表中,并判斷dk表中是否有該條記錄(DELETE觸發(fā)器可能會將數(shù)據(jù)插入到dk表),若有則從dk表中刪除該記錄。INSERT觸發(fā)器保證了拷貝過程中對增量數(shù)據(jù)的拷貝,每一條在拷貝過程中插入到original表中的數(shù)據(jù)都會通過INSERT觸發(fā)器插入到ghost表。

    UPDATE觸發(fā)器將對original表修改的數(shù)據(jù)以“REPLACE INTO”的方式插入ghost表。DELETE觸發(fā)器在刪除ghost表中相應(yīng)數(shù)據(jù)的同時(shí)需要在dk表中插入刪除數(shù)據(jù)主鍵以做標(biāo)記。如果需要刪除的數(shù)據(jù)正在拷貝到ghost表中,并且在delete觸發(fā)器準(zhǔn)備將ghost表中該數(shù)據(jù)刪除的時(shí)刻ghost尚未包含該數(shù)據(jù),但刪除完后數(shù)據(jù)又拷貝到ghost表,此時(shí)會發(fā)現(xiàn)原表中數(shù)據(jù)已被刪除,但ghost表中仍然包含該數(shù)據(jù),從而出現(xiàn)原表與ghost表數(shù)據(jù)不一致的問題。為此,引入輔助表(dk)記錄了DELETE觸發(fā)器的刪除操作,在完成全量拷貝過程后對ghost表進(jìn)行修正。這樣可以有效防止刪除的數(shù)據(jù)仍滯留在ghost表中,從而保證原表數(shù)據(jù)與ghost表數(shù)據(jù)的一致性。

    上述問題還存在于全量拷貝過程中。全量數(shù)據(jù)拷貝有可能再次把INSERT觸發(fā)器插入的增量數(shù)據(jù)當(dāng)作全量數(shù)據(jù)進(jìn)行二次拷貝,會出現(xiàn)“ERROR 1062(23000):Duplicate entry”的錯(cuò)誤。因此,全量拷貝需要進(jìn)行“INSERT IGNORE INTO”。INSERT IGNORE INTO與INSERT INTO的區(qū)別就是INSERT IGNORE INTO會忽略數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),如果數(shù)據(jù)庫沒有數(shù)據(jù),就插入新的數(shù)據(jù),如果數(shù)據(jù)庫中有數(shù)據(jù)就跳過這條數(shù)據(jù)。這樣就可以保留數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),達(dá)到在間隙中插入數(shù)據(jù)的目的。

    2 OSC系統(tǒng)改進(jìn)

    雖然OSC系統(tǒng)一定程度上解決了原生DDL的鎖表問題,但由于OSC本身獨(dú)立于MySQL,在不同場景下運(yùn)行時(shí),如不加限制或優(yōu)化仍然會帶來無法忽視的邏輯錯(cuò)誤,可能會引發(fā)數(shù)據(jù)丟失、數(shù)據(jù)不一致等系列問題。下文著重介紹主備復(fù)用、并發(fā)執(zhí)行等實(shí)際場景中可能出現(xiàn)的問題,并給出相應(yīng)的解決方案。

    2.1 主備復(fù)制問題

    為了提高容災(zāi)能力,減少系統(tǒng)壓力,電商數(shù)據(jù)庫往往設(shè)計(jì)成主從架構(gòu)。正常情況下,主服務(wù)器端執(zhí)行所有的寫入操作,并將所有寫操作記錄到二進(jìn)制日志文件(binlog)中。為了保證主從服務(wù)器數(shù)據(jù)的一致,從服務(wù)器會定時(shí)從binlog中拷貝日志信息到自身的中繼日志(Relay log)中,并重演Relay log中的所有新發(fā)生的操作或事件。

    現(xiàn)在考慮OSC系統(tǒng)在數(shù)據(jù)庫主從架構(gòu)下的應(yīng)用。若在主庫中使用OSC技術(shù),OSC執(zhí)行過程中的每一條語句都將記錄在主庫的binlog文件中,通過上文所述的主從復(fù)制模式,相應(yīng)語句會復(fù)制到從庫中的Relay log中,從庫通過執(zhí)行Relay log操作,實(shí)現(xiàn)主從數(shù)據(jù)庫的數(shù)據(jù)一致性。但是,如果在從庫執(zhí)行OSC系統(tǒng),當(dāng)全量數(shù)據(jù)全部拷貝到影子表中后,交換原表與影子表表名,會出現(xiàn)主庫中表結(jié)構(gòu)與從庫中表結(jié)構(gòu)不一致的情形。當(dāng)有數(shù)據(jù)寫入主表時(shí),再通過主從拷貝機(jī)制往從表插入數(shù)據(jù)就會出現(xiàn)錯(cuò)誤!因此,OSC系統(tǒng)應(yīng)當(dāng)嚴(yán)禁在從庫中執(zhí)行。

    為防止因OSC系統(tǒng)在從庫執(zhí)行帶來的數(shù)據(jù)丟失的問題,可以通過將從庫的READ_ONLY變量設(shè)置為ON,禁止SUPER權(quán)限之外的從服務(wù)器線程或用戶執(zhí)行更新操作。非SUPER權(quán)限用戶對READ_ONLY為ON的從庫進(jìn)行數(shù)據(jù)插入、刪除或更改操作時(shí),會出現(xiàn)如下報(bào)錯(cuò):

    ERROR 1290(HY000):The MySQL server is running with the--read-only option so it cannot execute this statement.

    所以,在OSC系統(tǒng)執(zhí)行之前,需要通過對執(zhí)行庫的READ_ONLY進(jìn)行檢查,以避免OSC系統(tǒng)在從庫上執(zhí)行,從而防止數(shù)據(jù)丟失。

    2.2 并發(fā)執(zhí)行

    OSC系統(tǒng)不支持同一張表上的并發(fā)執(zhí)行。事實(shí)上在同一張表上并發(fā)執(zhí)行OSC,可能會給整個(gè)數(shù)據(jù)庫帶來災(zāi)難性影響。OSC在執(zhí)行過程中可能會因?yàn)楦鞣N原因中途被迫退出,來不及清理殘留的觸發(fā)器(INSERT、UPDATE、DELETE)、影子表和dk表。為了每次執(zhí)行OSC系統(tǒng)不受這些殘留觸發(fā)器和臨時(shí)表的影響,在OSC系統(tǒng)正式執(zhí)行之前需要對這些觸發(fā)器和臨時(shí)表進(jìn)行清理。但是,當(dāng)在同一張表上并發(fā)執(zhí)行OSC時(shí),如果后執(zhí)行的OSC對先執(zhí)行的OSC的觸發(fā)器和影子表進(jìn)行刪除重建的話,已拷貝進(jìn)影子表的全量數(shù)據(jù)以及增量數(shù)據(jù)會丟失,造成數(shù)據(jù)不一致性問題。

    為了防止并發(fā)執(zhí)行OSC系統(tǒng)帶來的不良影響,可以在每次執(zhí)行OSC系統(tǒng)前加上一個(gè)“表名鎖”:

    "SELECT GET_LOCK(′{$key}′,{$timeout})AS get_lock";

    執(zhí)行OSC的線程會占用“表名鎖”直到整個(gè)OSC系統(tǒng)執(zhí)行完畢。在OSC執(zhí)行過程中,若有其他的OSC系統(tǒng)對該表進(jìn)行操作會因得不到“表名鎖”而出錯(cuò)退出。注意,這里的鎖僅對字符串加鎖,并不影響業(yè)務(wù)讀寫。

    2.3 與原生DDL行為不一致問題

    如上所述,設(shè)計(jì)OSC系統(tǒng)旨在替代原生DDL,防止因在大表上執(zhí)行DDL操作長時(shí)間阻塞讀寫業(yè)務(wù)。然而,對于某些數(shù)據(jù)表結(jié)構(gòu)的更改操作,往往會出現(xiàn)OSC與原生DDL執(zhí)行結(jié)果不一致的情形。例如,原數(shù)據(jù)表“t1”中包含兩個(gè)字段{ID,name},其中ID設(shè)置為主鍵?!皀ame”列中有若干條數(shù)據(jù)且有部分?jǐn)?shù)據(jù)一致。假設(shè)現(xiàn)在對“t1”表進(jìn)行如下原生DDL操作:

    Mysql>ALTER TABLE T1 ADD UNIQUE KEY UK(name)

    由于該操作試圖對擁有重復(fù)性的列加唯一索引,系統(tǒng)會報(bào)告“1062”錯(cuò)誤:

    ERROR 1062(23000):Duplicate entry′0′for key′UK′

    如果應(yīng)用OSC執(zhí)行該功能,OSC首先會根據(jù)原表表結(jié)構(gòu)更改需求創(chuàng)建影子表,將原表數(shù)據(jù)通過insert ignore into拷貝到影子表中。如果原表的“name”列中出現(xiàn)重復(fù)項(xiàng),向影子表進(jìn)行拷貝時(shí)會因?yàn)槲ㄒ凰饕募s束造成數(shù)據(jù)丟失。

    事實(shí)上,OSC系統(tǒng)與原生DDL的行為不一致問題很難通過程序的邏輯判斷來檢測出來,這時(shí)有必要引入前置檢查,即在原表中取少部分樣本數(shù)據(jù),分別進(jìn)行原生DDL操作與OSC操作,檢查兩種行為的一致性,若兩種行為一致則通過,否則放棄OSC操作。

    統(tǒng)計(jì)學(xué)中對樣本有如下要求:1)總體內(nèi)所有觀察單位必須是同質(zhì)的;2)在抽取樣本的過程中,必須遵守隨機(jī)化原則,并且達(dá)到足夠的數(shù)量。事實(shí)上,若在大表中執(zhí)行select count(*)操作需要對全表進(jìn)行掃描,造成長時(shí)間阻塞,脫離了OSC系統(tǒng)的初衷。另外,前置檢查的主要目的是檢測OSC與原生DDL的一致性,需要抽取原表中可能會造成OSC與原生DDL不一致行為的數(shù)據(jù)樣本,無須通過隨機(jī)抽樣覆蓋原表中的不同數(shù)據(jù)種類。經(jīng)驗(yàn)表明,大部分造成OSC與原生DDL行為不一致性的數(shù)據(jù)出現(xiàn)于表的開頭與結(jié)尾即邊緣數(shù)據(jù)??紤]到數(shù)據(jù)多樣性,在數(shù)據(jù)表中間部分也應(yīng)抽取少量樣本。樣本提取的具體做法是:在數(shù)據(jù)表中的前、中、后各取3 000條數(shù)據(jù)表項(xiàng)作為樣本,根據(jù)主鍵排序limit 3 000來獲得頭與尾的數(shù)據(jù)(通過主鍵索引并不會影響效率)。中間部分的數(shù)據(jù)由于無法獲得數(shù)據(jù)總量,只能對數(shù)據(jù)量進(jìn)行估算;若是數(shù)據(jù)型主鍵(多主鍵情況下只考慮最左主鍵),則對最小值和最大值取平均數(shù)作為中間數(shù)據(jù)起始點(diǎn);對于非數(shù)據(jù)項(xiàng)數(shù)據(jù),如日期型、字符串型,可以忽略中間樣本。獲得中間數(shù)據(jù)起始點(diǎn)后,通過主鍵排序以及l(fā)imit n,m語句可獲得中間部分?jǐn)?shù)據(jù)。但這樣會對整個(gè)表通過索引進(jìn)行半表掃描,通過where限定可以有效提高效率。

    獲得最小主鍵:select key_name from original_ table order by key_name limit1;

    獲得最大主鍵:select key_name from original_ table order by key_name desc limit 1;

    獲得估算中間值:middle_num=(min_ num+max_num)/2;

    獲得中間數(shù)據(jù):

    insert into test_table

    select*from original_table

    order by key_name

    limit middle_num,3000

    where key_name>middle_name;

    一般情況下,通過引入前置檢查確實(shí)可以避免OSC與原生DDL行為在執(zhí)行表結(jié)構(gòu)更新操作上的不一致性,但在某些極端情況下仍然存在不一致情形,比如,如果在進(jìn)行預(yù)檢查時(shí)表中無數(shù)據(jù),而檢查后對表中插入若干數(shù)據(jù)(加唯一索引列存在重復(fù)項(xiàng)),此時(shí)執(zhí)行OSC仍會出現(xiàn)上述問題,并且該問題難以通過編程解決。

    2.4 多版本行為的一致性

    MySQL不同版本之間存在差異,如果不對這些差異進(jìn)行處理,OSC系統(tǒng)在不同版本的MySQL執(zhí)行下會有行為不一致問題。

    以MySQL 5.1.50為例,#Bug 56226導(dǎo)致My-ISAM引擎在alter table后binlog文件出錯(cuò)。官方描述”After ALTER TABLE without column size change,binlog gets corrupted since the tablemap is unexpectedly set to 0 in subsequent updates.The problem can be avoided by flushing table after ALTER TABLE command.The problem happens on MyISAM table only.”例如在test庫的t1表中進(jìn)行alter table操作,binlog日志記錄如下:

    |binlog.000001|1329|Table_map|1|1371|table_id:0(test.t1)

    |binlog.000001|1371|Update_rows|1|1419|table_id:0 flags:STMT_END_F

    此時(shí),table_id被意外地設(shè)置為0,這對數(shù)據(jù)恢復(fù)、主從備份都有較大的影響。

    為了在不同版本下的MySQL都能良好地運(yùn)行OSC系統(tǒng),需要針對不同的版本做出相應(yīng)的調(diào)整。主要有以下兩個(gè)方面:

    對于MySQL 5.1.50之前的版本,在ALTER TABLE之后對表進(jìn)行FLUSH操作;在MySQL 5.6版本以后,由于內(nèi)置DDL Online operate,一些DDL操作運(yùn)用原生DDL較之OSC系統(tǒng)更具可靠性;所以,可以對DDL語句進(jìn)行智能判斷,若DDL Online operate操作能夠在不鎖表的情況下完成DDL操作,則選擇原生DDL進(jìn)行,否則繼續(xù)選擇OSC系統(tǒng)。

    3 OSC在復(fù)雜場景下的應(yīng)用

    OSC通過將一條DDL語句分解為若干原子性步驟,有效緩解了原生DDL操作鎖表帶來的業(yè)務(wù)阻塞問題,可以應(yīng)用在具有容災(zāi)需求的一些復(fù)雜應(yīng)用場景中。下面將分析OSC在讀寫分離的主從架構(gòu)[11-12]和單元化架構(gòu)[13-14]下的應(yīng)用。

    3.1 讀寫分離的主從架構(gòu)

    簡單的讀寫分離主從架構(gòu)由一個(gè)中心服務(wù)器(主庫)和若干個(gè)單元服務(wù)器(從庫)組成,中心服務(wù)器主要負(fù)責(zé)寫操作,單元服務(wù)器負(fù)責(zé)讀操作,主從服務(wù)器都保存全部數(shù)據(jù)量。由于主從數(shù)據(jù)庫中的數(shù)據(jù)都是相同的,而從庫端無寫入操作。因此,觸發(fā)器的創(chuàng)建無須復(fù)制到從庫端,除了觸發(fā)器之外,所有其他DDL操作均需復(fù)制到從庫端,ghost表和dk表的數(shù)據(jù)也復(fù)制到從庫端。具體來說,在從庫端,無須執(zhí)行圖1中的第8)~第10)步驟。執(zhí)行主庫對ghost表、dk表的DDL語句就能保證從庫端ghost表、dk表與主庫端一致,在完成圖1的步驟14)后即可保證主從端數(shù)據(jù)一致性。所以,在配置復(fù)制任務(wù)時(shí),只需通過在從庫端執(zhí)行臨時(shí)表的創(chuàng)建,并且過濾掉從庫端觸發(fā)器相關(guān)的DDL操作即可。

    圖3 讀寫分離的簡單主從架構(gòu)下從庫OSC系統(tǒng)

    3.2 單元化架構(gòu)

    單元化架構(gòu)是從并行計(jì)算領(lǐng)域發(fā)展而來。在分布式服務(wù)設(shè)計(jì)領(lǐng)域,一個(gè)單元(cell)就是滿足某個(gè)分區(qū)所有業(yè)務(wù)操作的自包含的安裝。而一個(gè)分區(qū)(shard),則是整體數(shù)據(jù)集的一個(gè)子集,如果你用尾號來劃分用戶,那同樣尾號的那部分用戶就可以認(rèn)為是一個(gè)分區(qū)。單元化就是將一個(gè)服務(wù)設(shè)計(jì)改造讓其符合單元特征的過程。

    為了解決單機(jī)瓶頸問題,淘寶數(shù)據(jù)庫從最初的單機(jī)MySQL升級形成IOE架構(gòu)。近幾年,不斷擴(kuò)展的業(yè)務(wù)規(guī)模和用戶規(guī)模對數(shù)據(jù)庫的并發(fā)性、可用性和擴(kuò)展性等方面提出了更高的要求,阿里引入sharding的思想,將數(shù)據(jù)庫分布到多個(gè)物理節(jié)點(diǎn),讓多節(jié)點(diǎn)并發(fā)處理不同的寫請求。并且考慮到容災(zāi)需要,阿里內(nèi)部基于MySQL已建設(shè)完成了單元化架構(gòu)。

    單元化式架構(gòu)由一個(gè)中心和若干單元組成,與簡單的讀寫分離架構(gòu)不同,單元化式架構(gòu)的中心、單元均能承擔(dān)讀寫業(yè)務(wù),中心保存100數(shù)據(jù)量,單元保存部分?jǐn)?shù)據(jù)量。在單元化式架構(gòu)中,DDL操作可以在中心,也可以在某個(gè)單元;每個(gè)單元保存部分?jǐn)?shù)據(jù),并且它們保存的數(shù)據(jù)不完全一樣。

    由于單元化式架構(gòu)下各個(gè)單元保存數(shù)據(jù)的差異性,導(dǎo)致系列問題:1)圖1步驟11)中全量遷移的數(shù)據(jù),可能包括目的端不需要的數(shù)據(jù);2)步驟8)~步驟10)中由觸發(fā)器產(chǎn)生的增量數(shù)據(jù),可能并不是目的端需要的數(shù)據(jù);3)步驟8)~步驟12)中目的端也許有源端沒有的數(shù)據(jù),沒有正確地被遷移到ghost表中,刪除的primary key也沒有正確地被記錄到dk表;4)在步驟13)中,由于目的端的數(shù)據(jù)和源端數(shù)據(jù)不一樣,則不一樣的那一部分隨著rename操作而丟失。

    總之,如果按照上面的OSC復(fù)制方案,目的端的表數(shù)據(jù)最終會變得和源端一模一樣。導(dǎo)致數(shù)據(jù)不一樣的主要是步驟8)~步驟12),因此這些步驟需要重構(gòu)。

    步驟8)~步驟12)主要完成全量數(shù)據(jù)、增量數(shù)據(jù)的拷貝工作,ghost表和dk表數(shù)據(jù)不能像讀寫分離結(jié)構(gòu)下直接從源端復(fù)制過來,要直接從目的端生成,需要在配置復(fù)制任務(wù)時(shí)加入數(shù)據(jù)同步黑名單中,即在源端的ghost表與dk表的DDL操作不復(fù)制到目的端。由于增量數(shù)據(jù)部分主要由步驟8)~步驟10)這3步所建的3個(gè)trigger產(chǎn)生的,所以只需要在目的端同步這3個(gè)trigger的創(chuàng)建操作,目的端就可以直接產(chǎn)生自己的增量數(shù)據(jù)到ghost表和dk表。

    步驟11)主要是搬遷原表的全量數(shù)據(jù)到ghost表,我們需要將這個(gè)搬遷邏輯在目的端按照源端一樣的邏輯規(guī)則搬遷,但不是直接復(fù)制源端的數(shù)據(jù),因此需要復(fù)制源端全量遷移的算法在目的端執(zhí)行。這個(gè)算法是OSC實(shí)現(xiàn)的,因此有如下兩種方法可以實(shí)現(xiàn)算法的搬遷:

    1)將OSC的全量遷移算法代碼集成到復(fù)制數(shù)據(jù)的中間件中,這樣在目的端就可以按照這個(gè)邏輯來實(shí)現(xiàn)數(shù)據(jù)全量遷移;

    2)將OSC的全量遷移算法代碼從源端往目的端復(fù)制,一個(gè)可行的方法是,將算法以MySQL的存儲過程來實(shí)現(xiàn),然后OSC以創(chuàng)建存儲過程的形式將算法復(fù)制到目的端。

    4 結(jié)束語

    OSC技術(shù)是解決企業(yè)數(shù)據(jù)庫日常運(yùn)維過程中鎖表之痛的實(shí)用工具,在OSC技術(shù)之前,企業(yè)在運(yùn)維數(shù)據(jù)庫過程中如果要對表結(jié)構(gòu)有變更需求,一般只能選擇在業(yè)務(wù)低峰期去變更或在主備架構(gòu)下分次變更,這對運(yùn)維工作帶來了極大的不便。雖然MySQL官方也一直致力于解決此類問題,相繼推出Fast Index Creation和DDL Online Operate功能,但仍然不能徹底解決全部的DDL鎖表問題。OSC系統(tǒng)依舊是未來一段時(shí)間內(nèi)解決DDL操作鎖表問題的不可或缺的手段。

    雖然OSC技術(shù)思想簡單,但在實(shí)際運(yùn)用過程中由于業(yè)務(wù)場景的復(fù)雜性,以及表變更需求的多樣化,往往會出現(xiàn)一系列問題,如OSC變更與原生DDL變更行為不一致。本文針對OSC在實(shí)際應(yīng)用過程中遇到的系列問題,提出了相應(yīng)的改進(jìn)方法,并對兩種典型的復(fù)雜應(yīng)用場景下OSC系統(tǒng)的應(yīng)用進(jìn)行分析。

    [1]AXMARK D,LARSSON A,WIDENIUSM,et al.MySQL 5.0 reference manual[M].first edition.Sweden:MySQLAB,2006,56-200.

    [2]AXMARK D,LARSSON A,WIDENIUS M,et al. MySQL internals manual[M].Sweden:MySQLAB,2006.32-135.

    [3]Paul DuBois.MySQL技術(shù)內(nèi)幕[M].楊曉云,王建橋,楊濤,譯.4版.北京:人民郵電出版社,2011.

    [4]NOACH Shlomi.Online schema change[Z/OL].America:Facebook,2010.https://code.google.com/p/openarkkit/.

    [5]MySQL 5.5 Reference Manual.InnoDB Fast Index Creation[EB/OL].[2016-02-12].http://dev.mysql.com/doc/refman/5.5/en/innodb-create-index.htm l,2015.

    [6]姜承堯.MySQL技術(shù)內(nèi)幕:InnoDB存儲引擎[M].北京:機(jī)械工業(yè)出版社,2011.

    [7]陳小輝,文佳,鄧杰英.MySQL的體系結(jié)構(gòu)及InnoDB表引擎的配置[J].福建電腦,2009,25(7):162-162.

    [8]MySQL 5.6 Reference Manual.DDLOnline Operate[EB/OL].[2016-02-12].http://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.htm l,2015.

    [9]MySQL 5.6 Reference Manual.Limitations of online DDL[EB/OL].[2016-02-12].http://dev.mysql.com/doc/refman/5.6/en/innodb-create-indexlimitations.htm l,2015.

    [10]MySQL 5.6 Overview of Online DDL[EB/OL].[2016-02-12].http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.htm l,2015.

    [11]沙光華,陳泳,張長江.讀寫分離技術(shù)在運(yùn)營支撐系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2015,51(12):107-110.

    [12]劉小俊,徐正全,潘少明.一種讀寫分離的分布式元數(shù)據(jù)管理方法——以“數(shù)字城市”應(yīng)用為例[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2013,38(10):1248-1252.

    [13]華竹軒,王桂榮,徐楠,等.支持海量數(shù)據(jù)的分布式數(shù)據(jù)庫架構(gòu)設(shè)計(jì)與驗(yàn)證[J].河南科學(xué),2014(9):1719-1725.

    [14]梁宇鵬.單元化架構(gòu),為什么要用以及我們?nèi)绾巫龅剑跡B/OL].[2016-02-12].http://www.infoq.com/cn/articles/how-weibo-do-unit-architecture,2014.

    表1 實(shí)際與計(jì)算對比

    圖6 實(shí)際效果圖

    7 結(jié)束語

    本文開發(fā)的智能輔助飲食系統(tǒng)可以幫助無臂殘疾人進(jìn)行自主飲食。本系統(tǒng)對二值化圖像進(jìn)行數(shù)字圖像處理,由算法可進(jìn)行嘴部定位,精度較高,全程通過語音進(jìn)行交互,減少了系統(tǒng)的使用難度。該系統(tǒng)具有自動添水和溫度異常警告功能。另外本系統(tǒng)還具有良好的可拓展性,可以在未來進(jìn)行功能的添加和結(jié)構(gòu)的改進(jìn)。

    參考文獻(xiàn)

    [1]潘松.黃繼業(yè).陳龍.EDA技術(shù)與Verilog HDL[M].北京:清華大學(xué)出版社,2010.

    [2]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.

    [3]王曉明.電動機(jī)的單片機(jī)控制[M].北京:北京航空航天大學(xué)出版社,2011.

    [4]朱文佳.戚飛虎.快速人臉檢測與特征定位[J].中國圖像圖形學(xué)報(bào),2005,10(11):1454-1457.

    [5]王軍南.叢爽.基于視覺定位的二自由度機(jī)械臂控制系統(tǒng)[J].機(jī)械與電子,2008(2):49-52.

    [6]張培仁.楊興明.機(jī)器人系統(tǒng)設(shè)計(jì)與算法[M].安徽;中國科學(xué)技術(shù)大學(xué)出版社,2008.

    [7]薛丹丹.基于眼和嘴定位的人臉歸一化算法研究[J].電子測試,2012(9);53-57.

    [8]徐光輝.程東旭.黃如.基于FPGA的嵌入式開發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2006.

    [9]江國強(qiáng).SOPC技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.

    [10]彭澄廉.挑戰(zhàn)SoC——基于Nios的SOPC設(shè)計(jì)與實(shí)[M].北京:清華大學(xué)出版社,2004.

    The Improvement and Application of Online Schema Change

    WANG Xuemei,ZHANG Shaobo
    (College of Computer Science,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)

    To solve the business blocking problem caused by DDL operation in MySQL database,an online schema change(OSC)method is implemented with non-blocking operation in reading and writing transactions.Considering the availability requirement of the electronic commerce database on the read and write transaction,OSC system divides atomic DDL statements into several successive steps,creates a temporary ghost table to make a copy of all data from the original table fragment by fragment,and adopts triggers to ensure data consistency incrementally,so as to realize schema change with non-lock and solve the problem of business long time blocking.In addition,aiming at solving the problems of the OSC system encountered in practical applications,a series of solutions are presented,such as pre-detection,concurrency execution prevention etc.Moreover,combined with the Taobao's database architecture,the analysis on the OSC's application in complex business scenarios is provided.

    data consistency;ghost table;online schema change;trigger

    TP311.1

    A

    10.3969/j.issn.1672-4550.2016.06.019

    2016-03-03;修改時(shí)間:2016-03-16

    江蘇省研究生創(chuàng)新計(jì)劃(CXZZ13_0476);南京郵電大學(xué)校級科研基金(NY215169)。

    王雪梅(1978-),女,碩士,講師,主要從事現(xiàn)代通信網(wǎng)絡(luò)、信息處理技術(shù)的研究工作。和步驟14)對原表進(jìn)行了可忽略的輕量級鎖表操作,其余操作規(guī)避了對原表的鎖表行為,從而達(dá)到避免阻塞業(yè)務(wù)讀寫的目的。與MySQL5.6的新特性DDL Online Operate相比,OSC不依賴于某個(gè)具體的存儲引擎,具有更為廣泛的適用性;例如,DDL Online Operate無法完成對表進(jìn)行存儲引擎的更改以及列類型的變化,但OSC系統(tǒng)卻可以做到。詳細(xì)的Summary of Online Status for DDL Operations,見MySQL5.6官方文檔14.10.1 Overview of Online DDL[10],該表記錄了DDL Online Operate的適用范圍。

    猜你喜歡
    全量觸發(fā)器拷貝
    成都市溫江區(qū)全力推進(jìn)醫(yī)保全量數(shù)據(jù)采集試點(diǎn)工作
    中國生殖健康(2018年1期)2018-11-06 07:14:38
    主從JK觸發(fā)器邏輯功能分析
    電子世界(2017年22期)2017-12-02 03:03:45
    使用觸發(fā)器,強(qiáng)化安全性
    土壤重金屬污染調(diào)查與評估的誤區(qū)及其改進(jìn)方法
    麥秸全量還田下氮肥運(yùn)籌對水稻產(chǎn)量及其產(chǎn)量構(gòu)成的影響
    水稻冠層光譜變化特征的土壤重金屬全量反演研究
    遙感信息(2015年3期)2015-12-13 07:26:54
    對觸發(fā)器邏輯功能轉(zhuǎn)換的分析
    觸發(fā)器邏輯功能轉(zhuǎn)換的兩種方法
    文件拷貝誰最“給力”
    成人亚洲精品一区在线观看| 老熟女久久久| 亚洲欧美一区二区三区国产| 黄色视频在线播放观看不卡| 青春草亚洲视频在线观看| 国产成人精品久久久久久| 国产精品熟女久久久久浪| 亚洲免费av在线视频| 美女脱内裤让男人舔精品视频| 熟妇人妻不卡中文字幕| 婷婷成人精品国产| 黄色 视频免费看| 看十八女毛片水多多多| 亚洲精品视频女| 精品久久蜜臀av无| 老司机深夜福利视频在线观看 | 久久人人97超碰香蕉20202| 中国三级夫妇交换| 亚洲人成电影观看| 国产免费福利视频在线观看| 亚洲第一青青草原| 日韩 欧美 亚洲 中文字幕| 午夜影院在线不卡| 老司机在亚洲福利影院| 国产精品一区二区在线不卡| 日韩制服骚丝袜av| 日韩中文字幕视频在线看片| 国产亚洲欧美精品永久| 国产激情久久老熟女| 国产日韩一区二区三区精品不卡| 中文字幕最新亚洲高清| 日日撸夜夜添| 91国产中文字幕| 肉色欧美久久久久久久蜜桃| 日韩熟女老妇一区二区性免费视频| 在线亚洲精品国产二区图片欧美| 午夜精品国产一区二区电影| 极品少妇高潮喷水抽搐| 久久国产精品男人的天堂亚洲| 久久久欧美国产精品| 国产深夜福利视频在线观看| 久久影院123| 亚洲一级一片aⅴ在线观看| 亚洲国产欧美一区二区综合| 日韩熟女老妇一区二区性免费视频| 久久鲁丝午夜福利片| videosex国产| 成人亚洲欧美一区二区av| 久久99一区二区三区| 亚洲人成电影观看| bbb黄色大片| 一级毛片黄色毛片免费观看视频| 国产一卡二卡三卡精品 | 在线亚洲精品国产二区图片欧美| 一边摸一边做爽爽视频免费| 一区二区三区激情视频| 婷婷色av中文字幕| 咕卡用的链子| 伦理电影免费视频| 亚洲av男天堂| 精品国产乱码久久久久久小说| 色视频在线一区二区三区| 一边摸一边做爽爽视频免费| 在线观看人妻少妇| 天天躁夜夜躁狠狠躁躁| 国产高清国产精品国产三级| 最新在线观看一区二区三区 | 美女视频免费永久观看网站| a级毛片黄视频| 久久人人爽人人片av| 美国免费a级毛片| 高清av免费在线| 中文字幕色久视频| 最近最新中文字幕免费大全7| 亚洲欧洲国产日韩| 观看av在线不卡| 午夜日本视频在线| 狠狠婷婷综合久久久久久88av| 在线看a的网站| 纵有疾风起免费观看全集完整版| 97在线人人人人妻| 老熟女久久久| 亚洲av成人不卡在线观看播放网 | 国产伦人伦偷精品视频| 亚洲美女黄色视频免费看| 一本色道久久久久久精品综合| 午夜激情久久久久久久| av免费观看日本| 亚洲中文av在线| 五月开心婷婷网| 国产精品久久久av美女十八| 2021少妇久久久久久久久久久| 老司机影院成人| 一级爰片在线观看| 欧美日韩综合久久久久久| 国产探花极品一区二区| 国产成人啪精品午夜网站| 日韩大码丰满熟妇| 丝袜人妻中文字幕| av网站在线播放免费| www日本在线高清视频| 日日啪夜夜爽| 黄色一级大片看看| 亚洲精品日韩在线中文字幕| 亚洲伊人久久精品综合| 久久综合国产亚洲精品| 侵犯人妻中文字幕一二三四区| 亚洲欧美色中文字幕在线| 欧美黑人欧美精品刺激| 黄片无遮挡物在线观看| 国产日韩一区二区三区精品不卡| 国产精品99久久99久久久不卡 | 欧美97在线视频| 精品一品国产午夜福利视频| 欧美黄色片欧美黄色片| 国产伦人伦偷精品视频| 国产黄色免费在线视频| 少妇的丰满在线观看| av国产精品久久久久影院| 在线 av 中文字幕| netflix在线观看网站| 久久久久久免费高清国产稀缺| 亚洲精华国产精华液的使用体验| 国产伦理片在线播放av一区| 国产av码专区亚洲av| 黄片无遮挡物在线观看| 精品久久蜜臀av无| 亚洲,一卡二卡三卡| av国产久精品久网站免费入址| 久久久精品区二区三区| 日韩视频在线欧美| 女人久久www免费人成看片| 日韩大码丰满熟妇| 日韩制服骚丝袜av| 七月丁香在线播放| 免费在线观看视频国产中文字幕亚洲 | av在线老鸭窝| 久久精品国产亚洲av涩爱| 1024视频免费在线观看| 可以免费在线观看a视频的电影网站 | 在线观看www视频免费| 美女午夜性视频免费| 午夜福利免费观看在线| 成人黄色视频免费在线看| 久久ye,这里只有精品| 久久久久久久精品精品| 好男人视频免费观看在线| 这个男人来自地球电影免费观看 | 欧美国产精品一级二级三级| av一本久久久久| 亚洲 欧美一区二区三区| 王馨瑶露胸无遮挡在线观看| 丝袜脚勾引网站| 99久国产av精品国产电影| 久久人人爽av亚洲精品天堂| 91精品国产国语对白视频| 丝袜在线中文字幕| 午夜福利,免费看| 在线天堂最新版资源| 久久国产精品大桥未久av| 欧美日韩综合久久久久久| 国产成人精品久久久久久| 欧美在线一区亚洲| 大陆偷拍与自拍| 十八禁人妻一区二区| 午夜日本视频在线| 满18在线观看网站| 美女脱内裤让男人舔精品视频| 交换朋友夫妻互换小说| 一级,二级,三级黄色视频| 最近中文字幕2019免费版| 亚洲精品自拍成人| 91国产中文字幕| 女人高潮潮喷娇喘18禁视频| 亚洲欧洲日产国产| 国产麻豆69| 少妇人妻久久综合中文| 亚洲av成人精品一二三区| 黄片无遮挡物在线观看| 免费在线观看黄色视频的| 日韩不卡一区二区三区视频在线| 国产麻豆69| 又粗又硬又长又爽又黄的视频| 一级毛片电影观看| 日韩大码丰满熟妇| 黄片无遮挡物在线观看| 午夜福利一区二区在线看| 侵犯人妻中文字幕一二三四区| 欧美亚洲日本最大视频资源| 国产一区有黄有色的免费视频| 国产毛片在线视频| 51午夜福利影视在线观看| 男的添女的下面高潮视频| 99国产精品免费福利视频| 不卡视频在线观看欧美| 蜜桃在线观看..| 精品国产乱码久久久久久男人| 欧美亚洲日本最大视频资源| 中文字幕亚洲精品专区| 丝袜喷水一区| 亚洲国产看品久久| 午夜福利,免费看| 90打野战视频偷拍视频| 岛国毛片在线播放| 亚洲一区二区三区欧美精品| 菩萨蛮人人尽说江南好唐韦庄| 91精品伊人久久大香线蕉| 黄色视频在线播放观看不卡| 亚洲第一av免费看| 不卡av一区二区三区| 曰老女人黄片| 亚洲伊人色综图| 不卡视频在线观看欧美| 久久久国产精品麻豆| 亚洲精品在线美女| 国产爽快片一区二区三区| 精品视频人人做人人爽| 亚洲在久久综合| 亚洲精品自拍成人| 美女主播在线视频| 最近最新中文字幕免费大全7| 亚洲欧美一区二区三区久久| 亚洲国产精品999| 成人国语在线视频| 久久久精品区二区三区| 久久久久久久久久久久大奶| 一级毛片我不卡| 亚洲国产看品久久| 男女免费视频国产| 欧美日韩成人在线一区二区| 欧美精品一区二区免费开放| 日本wwww免费看| 亚洲av电影在线观看一区二区三区| 久久影院123| 日本av手机在线免费观看| 老汉色∧v一级毛片| 亚洲欧美精品自产自拍| 国产成人免费无遮挡视频| 秋霞伦理黄片| 18禁裸乳无遮挡动漫免费视频| 超碰97精品在线观看| 90打野战视频偷拍视频| 各种免费的搞黄视频| 亚洲情色 制服丝袜| 各种免费的搞黄视频| 18禁裸乳无遮挡动漫免费视频| 最近最新中文字幕免费大全7| 欧美精品av麻豆av| 精品少妇久久久久久888优播| 美女国产高潮福利片在线看| 久久鲁丝午夜福利片| 美女扒开内裤让男人捅视频| 精品亚洲成国产av| 精品国产乱码久久久久久小说| 午夜激情av网站| 亚洲av电影在线进入| 搡老乐熟女国产| 久久久国产欧美日韩av| 日本午夜av视频| 亚洲成人手机| 少妇人妻精品综合一区二区| 国产黄色视频一区二区在线观看| 亚洲欧美激情在线| 亚洲成人免费av在线播放| 国产又爽黄色视频| 国产伦理片在线播放av一区| 青草久久国产| 免费黄色在线免费观看| 午夜福利网站1000一区二区三区| 人妻人人澡人人爽人人| 国产成人一区二区在线| 看非洲黑人一级黄片| 久久99热这里只频精品6学生| 侵犯人妻中文字幕一二三四区| 另类亚洲欧美激情| 亚洲激情五月婷婷啪啪| 国产熟女午夜一区二区三区| 中文精品一卡2卡3卡4更新| 一边亲一边摸免费视频| 亚洲综合精品二区| 99久久人妻综合| 大话2 男鬼变身卡| 男女高潮啪啪啪动态图| 亚洲精品国产区一区二| 韩国精品一区二区三区| 人妻一区二区av| 国产av码专区亚洲av| 十分钟在线观看高清视频www| 婷婷色综合www| 乱人伦中国视频| 亚洲国产看品久久| 久久久欧美国产精品| 女人久久www免费人成看片| 91国产中文字幕| 少妇被粗大猛烈的视频| 精品一区在线观看国产| 欧美日韩精品网址| 久久女婷五月综合色啪小说| 免费久久久久久久精品成人欧美视频| 天堂俺去俺来也www色官网| 蜜桃在线观看..| 亚洲精品aⅴ在线观看| 日本午夜av视频| 中文欧美无线码| 日韩av免费高清视频| 精品久久久精品久久久| 久久久久久久国产电影| 美女高潮到喷水免费观看| 国产男人的电影天堂91| 国产精品久久久av美女十八| 一本—道久久a久久精品蜜桃钙片| 亚洲国产成人一精品久久久| 如日韩欧美国产精品一区二区三区| 亚洲四区av| 天天添夜夜摸| 一区二区三区四区激情视频| 国产在线视频一区二区| av天堂久久9| 国产淫语在线视频| 最新的欧美精品一区二区| 久久久精品94久久精品| 91精品伊人久久大香线蕉| 亚洲一区中文字幕在线| 日本欧美视频一区| 欧美激情 高清一区二区三区| 肉色欧美久久久久久久蜜桃| 欧美日韩一级在线毛片| 亚洲精品国产av成人精品| 成人免费观看视频高清| 久久韩国三级中文字幕| 午夜福利免费观看在线| 色播在线永久视频| 波野结衣二区三区在线| av国产久精品久网站免费入址| 啦啦啦 在线观看视频| 两个人看的免费小视频| 欧美日韩一级在线毛片| av国产精品久久久久影院| 秋霞在线观看毛片| 秋霞伦理黄片| 男女之事视频高清在线观看 | 久久ye,这里只有精品| 一级爰片在线观看| 国产精品.久久久| 91aial.com中文字幕在线观看| 日本av免费视频播放| 制服诱惑二区| 国产亚洲欧美精品永久| 黄色怎么调成土黄色| 久久精品久久久久久久性| 久久久欧美国产精品| 在线看a的网站| 午夜福利视频精品| 国产精品一区二区在线观看99| 亚洲色图综合在线观看| 日本黄色日本黄色录像| 人人妻人人添人人爽欧美一区卜| av在线app专区| 亚洲精品日韩在线中文字幕| 中文字幕人妻熟女乱码| 男女边吃奶边做爰视频| 侵犯人妻中文字幕一二三四区| 亚洲欧美成人精品一区二区| 一区在线观看完整版| 欧美国产精品va在线观看不卡| 久久国产精品大桥未久av| 嫩草影院入口| 看十八女毛片水多多多| 国产免费一区二区三区四区乱码| 最近中文字幕2019免费版| 天美传媒精品一区二区| 国产野战对白在线观看| 国产不卡av网站在线观看| 亚洲欧美一区二区三区黑人| 国产成人免费观看mmmm| 水蜜桃什么品种好| 人妻 亚洲 视频| 国产极品粉嫩免费观看在线| 色播在线永久视频| 国产精品蜜桃在线观看| 热99久久久久精品小说推荐| 亚洲色图 男人天堂 中文字幕| 咕卡用的链子| 日日啪夜夜爽| 成人毛片60女人毛片免费| 久久久久视频综合| 一级a爱视频在线免费观看| 人人妻人人爽人人添夜夜欢视频| 亚洲一卡2卡3卡4卡5卡精品中文| 国产免费一区二区三区四区乱码| 一区二区日韩欧美中文字幕| 国产精品 国内视频| 桃花免费在线播放| 老司机影院成人| 丁香六月天网| 1024视频免费在线观看| 免费观看性生交大片5| 亚洲精品国产区一区二| 亚洲色图 男人天堂 中文字幕| 亚洲精品中文字幕在线视频| 操出白浆在线播放| 99久久人妻综合| 99久久精品国产亚洲精品| 人人妻,人人澡人人爽秒播 | 最近最新中文字幕大全免费视频 | 中国三级夫妇交换| av电影中文网址| 午夜免费男女啪啪视频观看| 亚洲一卡2卡3卡4卡5卡精品中文| 国产精品嫩草影院av在线观看| av在线app专区| 亚洲一码二码三码区别大吗| 亚洲精品av麻豆狂野| 欧美av亚洲av综合av国产av | 一级黄片播放器| 亚洲av中文av极速乱| 久久久久网色| 啦啦啦 在线观看视频| 国产国语露脸激情在线看| 大片免费播放器 马上看| 亚洲国产毛片av蜜桃av| 丝袜人妻中文字幕| 久久精品国产综合久久久| videos熟女内射| 国产福利在线免费观看视频| 亚洲情色 制服丝袜| 伊人久久大香线蕉亚洲五| 中文字幕人妻熟女乱码| 极品少妇高潮喷水抽搐| 中文欧美无线码| 亚洲欧美清纯卡通| 国产亚洲精品第一综合不卡| 叶爱在线成人免费视频播放| 男女高潮啪啪啪动态图| 男女午夜视频在线观看| 在线天堂最新版资源| 一级片'在线观看视频| 国产乱来视频区| 女性生殖器流出的白浆| 国产精品 欧美亚洲| 亚洲欧美色中文字幕在线| 18在线观看网站| 午夜福利影视在线免费观看| 黄片小视频在线播放| 精品一区二区免费观看| 久久影院123| 国产深夜福利视频在线观看| 美女大奶头黄色视频| 欧美乱码精品一区二区三区| 亚洲第一青青草原| 国产精品秋霞免费鲁丝片| 欧美日韩av久久| 美女高潮到喷水免费观看| 九草在线视频观看| 婷婷色综合大香蕉| 在现免费观看毛片| 国产精品一区二区在线观看99| 亚洲精品av麻豆狂野| 国产高清不卡午夜福利| 亚洲国产精品成人久久小说| 又大又爽又粗| 三上悠亚av全集在线观看| 色婷婷av一区二区三区视频| 一区福利在线观看| 夫妻午夜视频| 丁香六月天网| 操出白浆在线播放| 国产精品嫩草影院av在线观看| 人人妻人人澡人人爽人人夜夜| 男女国产视频网站| 国产视频首页在线观看| 国产一区有黄有色的免费视频| 国产欧美日韩综合在线一区二区| 国产亚洲一区二区精品| 黄频高清免费视频| 色播在线永久视频| 男女床上黄色一级片免费看| 可以免费在线观看a视频的电影网站 | 韩国av在线不卡| 国产精品国产三级专区第一集| 欧美日韩亚洲高清精品| 成人国语在线视频| 考比视频在线观看| √禁漫天堂资源中文www| 日本欧美视频一区| 久久这里只有精品19| 九色亚洲精品在线播放| 在线天堂最新版资源| 最近中文字幕高清免费大全6| 考比视频在线观看| 一边亲一边摸免费视频| 免费黄网站久久成人精品| 麻豆av在线久日| 欧美日韩国产mv在线观看视频| 亚洲中文av在线| 青青草视频在线视频观看| 国产精品二区激情视频| 丝袜美足系列| 老司机影院毛片| 高清不卡的av网站| kizo精华| 哪个播放器可以免费观看大片| 曰老女人黄片| 中文字幕另类日韩欧美亚洲嫩草| 亚洲色图综合在线观看| 亚洲国产精品999| 各种免费的搞黄视频| 天堂俺去俺来也www色官网| 久久99一区二区三区| 一本久久精品| 亚洲av电影在线进入| 久久97久久精品| 国产欧美亚洲国产| 最近中文字幕高清免费大全6| 欧美变态另类bdsm刘玥| 一级毛片 在线播放| 999精品在线视频| 18在线观看网站| a 毛片基地| 狠狠婷婷综合久久久久久88av| 卡戴珊不雅视频在线播放| 午夜福利,免费看| 午夜激情久久久久久久| 自线自在国产av| 制服诱惑二区| 99热全是精品| 久久天躁狠狠躁夜夜2o2o | 免费观看性生交大片5| 久久精品熟女亚洲av麻豆精品| 色吧在线观看| av在线app专区| 操出白浆在线播放| 亚洲精品第二区| 天天躁夜夜躁狠狠久久av| 五月天丁香电影| 国产成人精品久久二区二区91 | 日韩一区二区视频免费看| 欧美国产精品一级二级三级| 国产av一区二区精品久久| 成人三级做爰电影| 国产xxxxx性猛交| √禁漫天堂资源中文www| 考比视频在线观看| 亚洲欧洲精品一区二区精品久久久 | 久久久久久人人人人人| 一区二区三区精品91| 国产精品久久久久久精品电影小说| 狠狠婷婷综合久久久久久88av| 女人爽到高潮嗷嗷叫在线视频| 国产在线视频一区二区| 看免费av毛片| 美女高潮到喷水免费观看| 久久 成人 亚洲| 国产精品.久久久| 热re99久久国产66热| 国产高清不卡午夜福利| 亚洲欧美清纯卡通| 国产福利在线免费观看视频| 97人妻天天添夜夜摸| 日韩av不卡免费在线播放| 国产乱来视频区| 日本色播在线视频| 亚洲国产成人一精品久久久| av免费观看日本| 超碰97精品在线观看| 制服诱惑二区| 一边摸一边做爽爽视频免费| 免费高清在线观看视频在线观看| 青春草国产在线视频| 成人手机av| 女人被躁到高潮嗷嗷叫费观| 亚洲色图 男人天堂 中文字幕| 亚洲成人一二三区av| 波多野结衣一区麻豆| 国产精品99久久99久久久不卡 | www.精华液| 精品视频人人做人人爽| 亚洲综合色网址| 无遮挡黄片免费观看| 啦啦啦在线观看免费高清www| 日韩欧美一区视频在线观看| svipshipincom国产片| 人妻 亚洲 视频| 久久久久精品国产欧美久久久 | 99香蕉大伊视频| 精品一区二区三卡| 少妇猛男粗大的猛烈进出视频| 国产成人精品无人区| 精品少妇一区二区三区视频日本电影 | 色94色欧美一区二区| 高清不卡的av网站| 亚洲人成77777在线视频| 欧美日韩国产mv在线观看视频| 在线天堂最新版资源| 亚洲国产欧美网| 国产免费福利视频在线观看| 久久久久国产精品人妻一区二区| 国产极品天堂在线| 国产精品国产三级国产专区5o| 青草久久国产| 老汉色∧v一级毛片| 日韩精品有码人妻一区| av线在线观看网站| 成人国语在线视频| 欧美在线黄色| 搡老乐熟女国产| 国产成人一区二区在线| 免费观看性生交大片5| 亚洲成色77777| 咕卡用的链子| 久久久久久久久久久久大奶| 老司机靠b影院| 日本猛色少妇xxxxx猛交久久| 黑丝袜美女国产一区| 国产精品久久久久久精品古装|