婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 深入理解MongoDB分片的管理

深入理解MongoDB分片的管理

熱門標(biāo)簽:呼和浩特電銷外呼系統(tǒng)加盟 電銷機(jī)器人是什么軟件 濟(jì)南電銷機(jī)器人加盟公司 怎么投訴地圖標(biāo)注 蘋(píng)果汽車租賃店地圖標(biāo)注 云南外呼系統(tǒng) 杭州人工電銷機(jī)器人價(jià)格 廣州長(zhǎng)安公司怎樣申請(qǐng)400電話 老虎洗衣店地圖標(biāo)注

前言

在MongoDB(版本 3.2.9)中,分片集群(sharded cluster)是一種水平擴(kuò)展數(shù)據(jù)庫(kù)系統(tǒng)性能的方法,能夠?qū)?shù)據(jù)集分布式存儲(chǔ)在不同的分片(shard)上,每個(gè)分片只保存數(shù)據(jù)集的一部分,MongoDB保證各個(gè)分片之間不會(huì)有重復(fù)的數(shù)據(jù),所有分片保存的數(shù)據(jù)之和就是完整的數(shù)據(jù)集。分片集群將數(shù)據(jù)集分布式存儲(chǔ),能夠?qū)⒇?fù)載分?jǐn)偟蕉鄠€(gè)分片上,每個(gè)分片只負(fù)責(zé)讀寫(xiě)一部分?jǐn)?shù)據(jù),充分利用了各個(gè)shard的系統(tǒng)資源,提高數(shù)據(jù)庫(kù)系統(tǒng)的吞吐量。

數(shù)據(jù)集被拆分成數(shù)據(jù)塊(chunk),每個(gè)數(shù)據(jù)塊包含多個(gè)doc,數(shù)據(jù)塊分布式存儲(chǔ)在分片集群中。MongoDB負(fù)責(zé)追蹤數(shù)據(jù)塊在shard上的分布信息,每個(gè)分片存儲(chǔ)哪些數(shù)據(jù)塊,叫做分片的元數(shù)據(jù),保存在config server上的數(shù)據(jù)庫(kù) config中,一般使用3臺(tái)config server,所有config server中的config數(shù)據(jù)庫(kù)必須完全相同。通過(guò)mongos能夠直接訪問(wèn)數(shù)據(jù)庫(kù)config,查看分片的元數(shù)據(jù);mongo shell 提供 sh 輔助函數(shù),能夠安全地查看分片集群的元數(shù)據(jù)信息。

對(duì)任何一個(gè)shard進(jìn)行查詢,只會(huì)獲取collection在當(dāng)前分片上的數(shù)據(jù)子集,不是整個(gè)數(shù)據(jù)集。Application 只需要連接到mongos,對(duì)其進(jìn)行的讀寫(xiě)操作,mongos自動(dòng)將讀寫(xiě)請(qǐng)求路由到相應(yīng)的shard。MongoDB通過(guò)mongos將分片的底層實(shí)現(xiàn)對(duì)Application透明,在Application看來(lái),訪問(wèn)的是整個(gè)數(shù)據(jù)集。

一,主分片

在分片集群中,不是每個(gè)集合都會(huì)分布式存儲(chǔ),只有使用sh.shardCollection()顯式將collection分片后,該集合才會(huì)分布式存儲(chǔ)在不同的shard中。對(duì)于非分片集合(un-sharded collection),其數(shù)據(jù)只會(huì)存儲(chǔ)在主分片(Primary shard)中,默認(rèn)情況下,主分片是指數(shù)據(jù)庫(kù)最初創(chuàng)建的shard,用于存儲(chǔ)該數(shù)據(jù)庫(kù)中非分片集合的數(shù)據(jù)。每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)主分片。

Each database in a sharded cluster has a primary shard that holds all the un-sharded collections for that database. Each database has its own primary shard.

例如,一個(gè)分片集群有三個(gè)分片:shard1,shard2,shard3,在分片shard1創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)blog。如果將數(shù)據(jù)庫(kù)bolg分片,那么MongoDB會(huì)自動(dòng)在shard2,shard3上創(chuàng)建一個(gè)結(jié)構(gòu)相同的數(shù)據(jù)庫(kù)blog,數(shù)據(jù)庫(kù)blog的Primary Shard是Shard1。

圖示,Collection2的主分片是ShardA。

使用 movePrimary命令變更數(shù)據(jù)庫(kù)默認(rèn)的Primary shard,非分片集合將會(huì)從當(dāng)前shard移動(dòng)到新的主分片。

db.runCommand( { movePrimary : "test", to : "shard0001" } )

在使用movePrimary命令變更數(shù)據(jù)庫(kù)的主分片之后,config server中的配置信息是最新的,mongos緩存的配置信息變得過(guò)時(shí)了。MongoDB提供命令:flushRouterConfig 強(qiáng)制mongos從config server獲取最新的配置信息,刷新mongos的緩存。

db.adminCommand({"flushRouterConfig":1})

二,分片的元數(shù)據(jù)

不要直接到config server上查看分片集群的元數(shù)據(jù)信息,這些數(shù)據(jù)非常重要,安全的方式是通過(guò)mongos連接到config數(shù)據(jù)查看,或者使用sh輔助函數(shù)查看。

使用sh輔助函數(shù)查看

sh.status()

連接到mongos查看config數(shù)據(jù)庫(kù)中的集合

mongos> use config

1,shards 集合保存分片信息

db.shards.find()

shard的數(shù)據(jù)存儲(chǔ)在host指定的 replica set 或 standalone mongod中。

{
 "_id" : "shard_name",
 "host" : "replica_set_name/host:port",
 "tag":[shard_tag1,shard_tag2] 
}

2,databases集合保存分片集群中所有數(shù)據(jù)庫(kù)的信息,不管數(shù)據(jù)庫(kù)是否分片

db.databases.find()

如果在數(shù)據(jù)庫(kù)上執(zhí)行sh.enableSharding(“db_name”) ,那么字段partitioned字段值就是true;primary 字段指定數(shù)據(jù)庫(kù)的主分片(primary shard)。

{
 "_id" : "test",
 "primary" : "rs0",
 "partitioned" : true
}

3,collections集合保存所有已分片集合的信息,不包括非分片集合(un-sharded collections)

key是:分片的片鍵

db.collections.find()

{
 "_id" : "test.foo",
 "lastmodEpoch" : ObjectId("57dcd4899bd7f7111ec15f16"),
 "lastmod" : ISODate("1970-02-19T17:02:47.296Z"),
 "dropped" : false,
 "key" : {
  "_id" : 1
 },
 "unique" : true
}

4,chunks 集合保存數(shù)據(jù)塊信息,

ns:分片的集合,結(jié)構(gòu)是:db_name.collection_name

min 和 max: 片鍵的最小值和最大值

shard:塊所在的分片

db.chunks.find()

{
 "_id" : "test.foo-_id_MinKey",
 "lastmod" : Timestamp(1, 1),
 "lastmodEpoch" : ObjectId("57dcd4899bd7f7111ec15f16"),
 "ns" : "test.foo",
 "min" : {
  "_id" : 1
 },
 "max" : {
  "_id" : 3087
 },
 "shard" : "rs0"
}

5,changelog集合記錄分片集群的操作,包括chunk的拆分和遷移操作,Shard的增加或刪除操作

what 字段:表示操作的類型,例如:multi-split表示chunk的拆分,

"what" : "addShard",
"what" : "shardCollection.start",
"what" : "shardCollection.end", 
"what" : "multi-split",

6,tags 記錄shard的tag和對(duì)應(yīng)的片鍵范圍

{
 "_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } },
 "ns" : "records.users",
 "min" : { "zipcode" : "10001" },
 "max" : { "zipcode" : "10281" },
 "tag" : "NYC"
}

7,settings 集合記錄均衡器狀態(tài)和chunk的大小,默認(rèn)的chunk size是64MB。

{ "_id" : "chunksize", "value" : 64 }
{ "_id" : "balancer", "stopped" : false }

8,locks 集合記錄分布鎖(distributed lock),保證只有一個(gè)mongos 實(shí)例能夠在分片集群中執(zhí)行管理任務(wù)。

mongos在擔(dān)任balancer時(shí),會(huì)獲取一個(gè)分布鎖,并向config.locks中插入一條doc。

The locks collection stores a distributed lock. This ensures that only one mongos instance can perform administrative tasks on the cluster at once. The mongos acting as balancer takes a lock by inserting a document resembling the following into the locks collection.

{
 "_id" : "balancer",
 "process" : "example.net:40000:1350402818:16807",
 "state" : 2,
 "ts" : ObjectId("507daeedf40e1879df62e5f3"),
 "when" : ISODate("2012-10-16T19:01:01.593Z"),
 "who" : "example.net:40000:1350402818:16807:Balancer:282475249",
 "why" : "doing balance round"
}

三,刪除分片

刪除分片時(shí),必須確保該分片上的數(shù)據(jù)被移動(dòng)到其他分片中,對(duì)于以分片的集合,使用均衡器來(lái)遷移數(shù)據(jù)塊,對(duì)于非分片的集合,必須修改集合的主分片。

1,刪除已分片的集合數(shù)據(jù)

step1,保證均衡器是開(kāi)啟的

sh.setBalancerState(true);

step2,將已分片的集合全部遷移到其他分片

use admin
db.adminCommand({"removeShard":"shard_name"})

removeShard命令會(huì)將數(shù)據(jù)塊從當(dāng)前分片上遷移到其他分片上去,如果分片上的數(shù)據(jù)塊比較多,遷移過(guò)程可能耗時(shí)很長(zhǎng)。

step3,檢查數(shù)據(jù)塊遷移的狀態(tài)

use admin
db.runCommand( { removeShard: "shard_name" } )

使用removeShard命令能夠查看數(shù)據(jù)塊遷移的狀態(tài),remaining 字段表示剩余數(shù)據(jù)塊的數(shù)量

{
  "msg" : "draining ongoing",
 "state" : "ongoing",
 "remaining" : {
  "chunks" : 42,
  "dbs" : 1
 },
 "ok" : 1
}

step4,數(shù)據(jù)塊完成遷移

use admin
db.runCommand( { removeShard: "shard_name" } )

{
 "msg" : "removeshard completed successfully",
 "state" : "completed",
 "shard" : "shard_name",
 "ok" : 1
}

2,刪除未分片的數(shù)據(jù)庫(kù)

step1,查看未分片的數(shù)據(jù)庫(kù)

未分片的數(shù)據(jù)庫(kù),包括兩部分:

     1、數(shù)據(jù)庫(kù)未被分片,該數(shù)據(jù)沒(méi)有使用sh.enableSharding(“db_name”) ,在數(shù)據(jù)庫(kù)config中,該數(shù)據(jù)庫(kù)的partitioned字段是false

     2、數(shù)據(jù)庫(kù)中存在collection未被分片,即當(dāng)前的分片是該集合的主分片

use config
db.databases.find({$or:[{"partitioned":false},{"primary":"shard_name"}]})

對(duì)于partitioned=false的數(shù)據(jù)庫(kù),其數(shù)據(jù)全部保存在當(dāng)前shard中;對(duì)于partitioned=true,primary=”shard_name“的數(shù)據(jù)庫(kù),表示存在未分片(un-sharded collection)存儲(chǔ)在該數(shù)據(jù)庫(kù)中,必須變更這些集合的主分片。

step2,修改數(shù)據(jù)庫(kù)的主分片

db.runCommand( { movePrimary: "db_name", to: "new_shard" })

四,增加分片

由于分片存儲(chǔ)的是數(shù)據(jù)集的一部分,為了保證數(shù)據(jù)的高可用性,推薦使用Replica Set作為shard,即使Replica Set中只包含一個(gè)成員。連接到mongos,使用sh輔助函數(shù)增加分片。

sh.addShard("replica_set_name/host:port")

不推薦將standalone mongod作為shard

sh.addShard("host:port")

五,特大塊

在有些情況下,chunk會(huì)持續(xù)增長(zhǎng),超出chunk size的限制,成為特大塊(jumbo chunk),出現(xiàn)特大塊的原因是chunk中的所有doc使用同一個(gè)片鍵(shard key),導(dǎo)致MongoDB無(wú)法拆分該chunk,如果該chunk持續(xù)增長(zhǎng),將會(huì)導(dǎo)致chunk的分布不均勻,成為性能瓶頸。

在chunk遷移時(shí),存在限制:每個(gè)chunk的大小不能超過(guò)2.5萬(wàn)條doc,或者1.3倍于配置值。chunk size默認(rèn)的配置值是64MB,超過(guò)限制的chunk會(huì)被MongoDB標(biāo)記為特大塊(jumbo chunk),MongoDB不能將特大塊遷移到其他shard上。

MongoDB cannot move a chunk if the number of documents in the chunk exceeds either 250000 documents or 1.3 times the result of dividing the configured chunk size by the average document size.

1,查看特大塊

使用sh.status(),能夠發(fā)現(xiàn)特大塊,特大塊的后面存在 jumbo 標(biāo)志

 { "x" : 2 } -->> { "x" : 3 } on : shard-a Timestamp(2, 2) jumbo

2,分發(fā)特大塊

特大塊不能拆分,不能通過(guò)均衡器自動(dòng)分發(fā),必須手動(dòng)分發(fā)。

step1,關(guān)閉均衡器

sh.setBalancerState(false)

step2,增大Chunk Size的配置值

由于MongoDB不允許移動(dòng)大小超出限制的特大塊,因此,必須臨時(shí)增加chunk size的配置值,再將特大塊均衡地分發(fā)到分片集群中。

use config
db.settings.save({"_id":"chunksize","value":"1024"})

step3,移動(dòng)特大塊

sh.moveChunk("db_name.collection_name",{sharded_filed:"value_in_chunk"},"new_shard_name")

step4,啟用均衡器

sh.setBalancerState(true)

step5,刷新mongos的配置緩存

強(qiáng)制mongos從config server同步配置信息,并刷新緩存。

use admin
db.adminCommand({ flushRouterConfig: 1 } )

六,均衡器

均衡器是由mongos轉(zhuǎn)變的,就是說(shuō),mongos不僅負(fù)責(zé)將查詢路由到相應(yīng)的shard上,還要負(fù)責(zé)數(shù)據(jù)塊的均衡。一般情況下,MongoDB會(huì)自動(dòng)處理數(shù)據(jù)均衡,通過(guò)config.settings能夠查看balancer的狀態(tài),或通過(guò)sh輔助函數(shù)查看

sh.getBalancerState()

返回true,表示均衡器在正運(yùn)行,系統(tǒng)自動(dòng)處理數(shù)據(jù)均衡,使用sh輔助函數(shù)能夠關(guān)閉balancer

sh.setBalancerState(false)

balancer不能立即終止正在運(yùn)行的塊遷移操作,在mongos轉(zhuǎn)變?yōu)閎alancer時(shí),會(huì)申請(qǐng)一個(gè)balancer lock,查看config.locks 集合,

use config
db.locks.find({"_id":"balancer"})

--or 
sh.isBalancerRunning()

如果state=2,表示balancer正處于活躍狀態(tài),如果state=0,表示balancer已被關(guān)閉。

均衡過(guò)程實(shí)際上是將數(shù)據(jù)塊從一個(gè)shard遷移到其他shard,或者先將一個(gè)大的chunk拆分小的chunk,再將小塊遷移到其他shard上,塊的遷移和拆分都會(huì)增加系統(tǒng)的IO負(fù)載,最好將均衡器的活躍時(shí)間限制在系統(tǒng)空閑時(shí)進(jìn)行,可以設(shè)置balancer的活躍時(shí)間窗口,限制balancer在指定的時(shí)間區(qū)間內(nèi)進(jìn)行數(shù)據(jù)塊的拆分和遷移操作。

use config

db.settings.update(
  {"_id":"balancer"},
  "$set":{"activeWindow":{"start":"23:00","stop":"04:00"}}),
  true
)

均衡器拆分和移動(dòng)的對(duì)象是chunk,均衡器只保證chunk數(shù)量在各個(gè)shard上是均衡的,至于每個(gè)chunk包含的doc數(shù)量,并不一定是均衡的。可能存在一些chunk包含的doc數(shù)量很多,而有些chunk包含的doc數(shù)量很少,甚至不包含任何doc。因此,應(yīng)該慎重選擇分片的索引鍵,即片鍵,如果一個(gè)字段既能滿足絕大多數(shù)查詢的需求,又能使doc數(shù)量均勻分布,那么該字段是片鍵的最佳選擇。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)的大家可以留言交流。

您可能感興趣的文章:
  • 如何為MongoDB添加分片副本集
  • 分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù)之MongoDB分片集群的問(wèn)題
  • MongoDB搭建高可用集群的完整步驟(3個(gè)分片+3個(gè)副本)
  • Mongodb副本集和分片示例詳解
  • MongoDB分片集群部署詳解
  • MongoDB分片在部署與維護(hù)管理中常見(jiàn)的事項(xiàng)總結(jié)大全
  • 詳解MongoDB4.0構(gòu)建分布式分片群集
  • MongoDB分片鍵的選擇和案例實(shí)例詳解
  • MongoDB分片詳解
  • mongodb分片技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
  • mongodb3.4集群搭建實(shí)戰(zhàn)之高可用的分片+副本集
  • Mongodb 刪除添加分片與非分片表維護(hù)
  • MongoDB 主分片(primary shard)相關(guān)總結(jié)

標(biāo)簽:泰安 玉林 雞西 自貢 廈門 興安盟 無(wú)錫 遼陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入理解MongoDB分片的管理》,本文關(guān)鍵詞  深入,理解,MongoDB,分片,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入理解MongoDB分片的管理》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于深入理解MongoDB分片的管理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲一区二区三区在线看| 精品粉嫩超白一线天av| 亚洲欧美日韩中文播放| 99久久久国产精品| 亚洲欧美激情插| 日本韩国欧美三级| 日韩av电影免费观看高清完整版在线观看| 欧美午夜寂寞影院| 日本怡春院一区二区| 精品日韩一区二区| 不卡区在线中文字幕| 伊人夜夜躁av伊人久久| 欧美一区二区三区男人的天堂| 青青草成人在线观看| 久久久国产精品午夜一区ai换脸| 成人高清伦理免费影院在线观看| 亚洲天堂免费看| 欧美日韩在线三区| 久久国产精品区| 国产精品国产自产拍高清av| 欧美性感一区二区三区| 青青草国产精品亚洲专区无| 欧美激情在线免费观看| 欧美色图在线观看| 蜜桃av一区二区| 国产精品无圣光一区二区| 欧美日韩综合在线免费观看| 蜜桃视频一区二区| 中文字幕在线观看不卡视频| 欧美中文字幕久久| 精品系列免费在线观看| 亚洲欧美日韩国产成人精品影院 | 亚洲图片欧美激情| 欧美电影一区二区| 成人97人人超碰人人99| 丝袜美腿亚洲一区| 国产区在线观看成人精品| 欧美视频自拍偷拍| 国产精品77777竹菊影视小说| 另类小说色综合网站| 亚洲婷婷综合久久一本伊一区| 日韩一区二区免费视频| 91丨九色丨国产丨porny| 久久爱另类一区二区小说| 亚洲日本免费电影| 精品福利一区二区三区| 欧美精品久久天天躁| av在线不卡免费看| 国产精品夜夜嗨| 奇米精品一区二区三区在线观看一 | 国产在线精品免费| 亚洲福中文字幕伊人影院| 国产精品视频线看| 精品精品国产高清a毛片牛牛 | 日韩一区和二区| 日本高清不卡一区| 成人免费视频app| 国产剧情一区在线| 久久国产成人午夜av影院| 亚洲午夜一区二区三区| 国产精品网站一区| 国产午夜久久久久| 精品国产青草久久久久福利| 91精品久久久久久久久99蜜臂| 色婷婷av一区二区三区gif | 在线免费观看一区| 99在线视频精品| 不卡的电影网站| 成人国产精品免费观看动漫| 精品一区二区精品| 久久不见久久见免费视频7| 美女网站一区二区| 喷水一区二区三区| 日韩福利电影在线观看| 日日夜夜一区二区| 午夜影视日本亚洲欧洲精品| 亚洲国产wwwccc36天堂| 亚洲国产精品久久久久婷婷884| 亚洲一区二区在线免费看| 亚洲免费观看高清完整版在线| 亚洲天堂福利av| 亚洲国产美女搞黄色| 一区二区三区四区不卡在线| 亚洲欧美日韩在线不卡| 亚洲一区二区成人在线观看| 夜夜精品浪潮av一区二区三区| 亚洲成人免费在线| 欧美aaaaa成人免费观看视频| 免费看日韩精品| 国产一区二区在线影院| 国产91丝袜在线18| 91麻豆精品一区二区三区| 在线看不卡av| 91精品国产乱码久久蜜臀| 日韩一区二区三免费高清| 精品国产凹凸成av人导航| 久久九九99视频| 亚洲精品视频在线看| 午夜av电影一区| 黄网站免费久久| 日韩欧美国产一区二区在线播放 | 处破女av一区二区| 一本色道亚洲精品aⅴ| 欧美日本国产视频| 2023国产精品| 国产精品传媒入口麻豆| 一区二区三区精品视频| 麻豆传媒一区二区三区| 东方欧美亚洲色图在线| 欧美亚洲一区二区在线| 精品国产91洋老外米糕| 国产精品丝袜久久久久久app| 亚洲女性喷水在线观看一区| 日本午夜一区二区| 高清视频一区二区| 欧美日韩国产不卡| 国产精品色婷婷| 首页亚洲欧美制服丝腿| 国产精品99久久久久久久女警| 色婷婷精品久久二区二区蜜臀av| 91精品麻豆日日躁夜夜躁| 欧美国产精品一区| 日本网站在线观看一区二区三区 | 懂色av一区二区三区免费看| 精品视频1区2区| 中文字幕av一区二区三区高| 视频一区二区三区中文字幕| 不卡视频一二三| 精品国产伦一区二区三区观看方式| 亚洲精品国产精品乱码不99| 国产精品一区二区视频| 91精品综合久久久久久| **欧美大码日韩| 国产一区二区不卡在线| 欧美一区二区在线观看| 一区二区三区精品久久久| 国产一区二区剧情av在线| 欧美三级中文字幕| 综合在线观看色| 国产精品一卡二卡在线观看| 欧美一级搡bbbb搡bbbb| 亚洲视频在线一区二区| 高清成人在线观看| 26uuu亚洲婷婷狠狠天堂| 亚洲香肠在线观看| av不卡在线观看| 国产精品五月天| 国产成人免费av在线| 欧美tickling挠脚心丨vk| 亚洲bt欧美bt精品777| 91麻豆国产福利精品| 亚洲欧美在线视频| 不卡在线观看av| 国产精品日产欧美久久久久| 国产成人精品一区二区三区四区 | 中文一区一区三区高中清不卡| 久久99久久99小草精品免视看| 337p亚洲精品色噜噜狠狠| 午夜精品久久久久久久久| 在线一区二区三区| 一区二区在线观看视频| 色综合天天天天做夜夜夜夜做| 国产精品国产精品国产专区不片| 国产黄色精品视频| 国产色爱av资源综合区| 国产成都精品91一区二区三| 国产精品你懂的在线欣赏| 成人app软件下载大全免费| 中文字幕中文在线不卡住| eeuss鲁片一区二区三区在线看| 国产精品久久久久久亚洲伦| 欧美不卡视频一区| 免费观看91视频大全| 欧美精品一区在线观看| 国产成人aaa| 亚洲品质自拍视频网站| 91免费国产在线观看| 亚洲欧美日韩人成在线播放| 欧美日韩一区二区三区在线看| 天天色综合天天| 久久一日本道色综合| 国产不卡在线播放| 日韩一区在线播放| 色吧成人激情小说| 日本午夜一本久久久综合| 久久精品一二三| 白白色亚洲国产精品| 亚洲综合激情另类小说区| 欧美一区二区三区男人的天堂| 青娱乐精品视频| 国产精品久久久久久亚洲伦| 欧美日韩一本到| 精品一区二区免费在线观看| 国产精品灌醉下药二区| 在线观看日韩精品| 久久国产精品99精品国产 | www精品美女久久久tv| av亚洲精华国产精华精华| 午夜精品久久久久久久久久| 久久久亚洲高清|