99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Redis主從復(fù)制原理與Docker實戰(zhàn):全量/增量同步及故障排查

Redis主從復(fù)制原理與Docker實戰(zhàn):全量/增量同步及故障排查 1. 主從復(fù)制到底在解決什么問題先說結(jié)論Redis 主從復(fù)制replication本質(zhì)上是把一臺實例上的寫命令流按順序、可重放地同步到一臺或多臺實例上讓多份內(nèi)存數(shù)據(jù)保持一致。它不是什么黑魔法也不依賴共享存儲就是一套快照 命令流的組合拳。第一次接觸這個概念的人容易把它和大數(shù)據(jù)領(lǐng)域的副本機(jī)制混在一起其實 Redis 這套設(shè)計非常土味、非常直接主庫把 RDB 文件丟給從庫之后每一條寫命令都轉(zhuǎn)發(fā)一遍就這樣。這套機(jī)制撐起了三件事一是數(shù)據(jù)冗余主庫那臺機(jī)器磁盤掛了、內(nèi)存炸了從庫還有一份完整數(shù)據(jù)二是讀寫分離把讀流量分到從庫上主庫專心寫QPS 能拉高好幾倍三是高可用地基沒有復(fù)制就沒有哨兵Sentinel和 Cluster 的故障自動切換所有主掛了自動頂上去的承諾都是空話。所以別看主從復(fù)制自己不帶自動故障轉(zhuǎn)移它卻是整個 Redis 高可用體系里最底層的那塊磚。這篇文章面向的讀者很具體你可能是剛學(xué)完redis 數(shù)據(jù)類型、裝完redis desktop manager、跑通了一個單機(jī)實例接下來想搞清楚為什么生產(chǎn)環(huán)境非要搞兩臺以上也可能是被redis面試題里的說說主從復(fù)制的原理問懵了只會背全量同步、增量同步六個字。我會從協(xié)議交互細(xì)節(jié)講到 Docker 里搭三節(jié)點的完整操作再把你線上大概率會遇到的坑攤開講??赐昴阒辽倌茏龅絻杉伦约耗艽钜惶啄苡玫闹鲝囊约翱吹絤aster_link_status:down時知道往哪個方向查。1.1 單機(jī) Redis 的三道坎單機(jī) Redis 的問題不在于性能不夠而在于它把所有的賭注都押在一臺機(jī)器和一個進(jìn)程上。第一道坎是容量Redis 是內(nèi)存數(shù)據(jù)庫單機(jī)內(nèi)存受物理內(nèi)存限制一臺 64G 的機(jī)器你撐死給它 40G 左右的數(shù)據(jù)量再往上 fork 和 RDB 就會很難受。第二道坎是吞吐單線程模型下所有命令排隊執(zhí)行讀多寫少的場景里大量 CPU 時間浪費在無意義的讀操作上。第三道坎最要命是可用性進(jìn)程 OOM 被殺、機(jī)器斷電、內(nèi)核 panic任何一個環(huán)節(jié)出問題服務(wù)就直接不可用而且數(shù)據(jù)可能只剩上次 RDB 或 AOF 落盤的快照。主從復(fù)制對這三道坎的回應(yīng)是分別的容量問題它解決不了每臺從庫都是全量副本不是分片吞吐問題它能解決一大半讀請求分散到 N 臺從庫理論讀能力乘以 N可用性問題它提供了有人能接班的前提但接班的動作得靠哨兵或者你自己寫腳本。我見過不少團(tuán)隊在項目初期直接上 Cluster結(jié)果發(fā)現(xiàn)數(shù)據(jù)量才 5G、QPS 才兩千白白背上了分片帶來的運維復(fù)雜度。這種場景老老實實一主兩從加哨兵省事得多。順帶說一句很多人會搞混的主從不是備份。從庫上執(zhí)行的FLUSHALL會被原樣同步到所有從庫主庫誤刪數(shù)據(jù)從庫跟著一起沒。真正的備份是定期把 RDB 文件拷到另一臺不參與復(fù)制的機(jī)器或?qū)ο蟠鎯ι线@件事別偷懶。1.2 復(fù)制、哨兵、集群的分工邊界剛上手的人最容易把這三個概念攪成一鍋粥。我習(xí)慣這樣給同事解釋復(fù)制Replication負(fù)責(zé)數(shù)據(jù)有幾份只管同步不管誰死誰活。哨兵Sentinel負(fù)責(zé)誰掛了誰頂上它自己也是一組進(jìn)程監(jiān)控主從節(jié)點主庫失聯(lián)后選一個從庫提升為新主然后通知其他從庫改跟隨。集群Cluster負(fù)責(zé)數(shù)據(jù)怎么分片把 16384 個哈希槽分給多個主節(jié)點每個主節(jié)點下面還能掛從庫做冗余。三者的關(guān)系是層層疊加的Cluster 內(nèi)部也用復(fù)制來實現(xiàn)主從冗余Sentinel 完全建立在復(fù)制之上。所以你把復(fù)制原理吃透后面兩個都是順藤摸瓜。提示不要用 Sentinel 去管理 Cluster 節(jié)點也不要在 Cluster 模式下用REPLICAOF手動改拓?fù)銫luster 的槽位和復(fù)制關(guān)系由集群自己維護(hù)手動干預(yù)極容易搞出數(shù)據(jù)不一致。還有一點值得提前說主從復(fù)制是異步的。主庫執(zhí)行完寫命令、返回客戶端成功然后才把命令發(fā)給從庫。這意味著主庫在返回成功到命令真正到達(dá)從庫之間存在一個時間窗口如果此時主庫宕機(jī)且沒有做持久化這條數(shù)據(jù)就永遠(yuǎn)丟了。這不是 Redis 的缺陷是異步復(fù)制的固有代價理解了這一點你才能看懂后面講的WAIT命令和min-replicas-to-write參數(shù)到底在防什么。2. 復(fù)制鏈路是怎么建立的從 REPLICAOF 到 PSYNC討論協(xié)議之前先約定叫法。Redis 5.0 之前命令叫SLAVEOF節(jié)點叫 slave5.0 之后官方全面改用REPLICAOF和 replica老命令還保留兼容。但你在INFO replication的輸出里看到的字段名依然是slave0:、slave1:這是歷史包袱別以為是版本裝錯了。下面我統(tǒng)一用從庫/replica。整條鏈路建立起來分兩大階段握手建連和數(shù)據(jù)同步。數(shù)據(jù)同步里又分全量同步full resynchronization和增量同步partial resynchronization具體走哪條路由從庫斷線前記住的 offset 決定。2.1 建連與握手PING、AUTH、REPLCONF從庫在配置里寫了replicaof 192.168.1.10 6379之后或者運行時執(zhí)行了這條命令會立刻做這幾件事順序很固定保存主庫的 IP 和端口建立 TCP 連接。發(fā)送PING期待主庫回PONG。如果超時或者回的是別的說明網(wǎng)絡(luò)或端口有問題重連。如果主庫配了requirepass從庫必須配masterauth它會發(fā)AUTH password認(rèn)證。從庫發(fā)送自己的監(jiān)聽端口REPLCONF listening-port 6380主庫記錄下來INFO replication里顯示的port就是這個值。Redis 4.0 之后還會發(fā)REPLCONF capa eof capa psync2告訴主庫自己支持無盤傳輸?shù)?EOF 標(biāo)記和 PSYNC2 協(xié)議。這幾個步驟看著很啰嗦但每一步都有存在的理由。REPLCONF listening-port尤其關(guān)鍵——主庫需要通過這個端口去連從庫如果你在 Docker 或者 NAT 環(huán)境里沒把端口映射對主庫記下來的是容器內(nèi)端口外部根本連不上后面做故障轉(zhuǎn)移時哨兵會一臉懵。我踩過這個坑容器里從庫上報listening-port 6379主庫和哨兵都按 6379 去連結(jié)果連到的是主庫自己。握手完成后進(jìn)入真正的同步協(xié)商從庫發(fā)PSYNC replid offset第一次連接時是PSYNC ? -1意思是我沒有歷史給我全量。主庫收到后有兩種回復(fù)FULLRESYNC replid offset走全量同步replid是主庫當(dāng)前復(fù)制流的 ID40 位十六進(jìn)制字符串offset是主庫當(dāng)前的復(fù)制偏移量。CONTINUE replid走增量同步只需要把斷線期間丟失的那部分命令補(bǔ)發(fā)。2.2 全量同步RDB 快照與復(fù)制緩沖區(qū)全量同步是整個流程里最重的環(huán)節(jié)也是最容易出問題的地方。主庫收到PSYNC ? -1之后的動作是執(zhí)行BGSAVE或者BGREWRITEAOF如果 AOF 正在重寫會等它結(jié)束生成 RDB 快照文件。同時開啟一個復(fù)制緩沖區(qū)replication buffer把 BGSAVE 期間新進(jìn)來的所有寫命令都追加進(jìn)去。RDB 生成完畢后把文件通過網(wǎng)絡(luò)發(fā)給從庫。從庫收到后先落盤再清空自己的舊數(shù)據(jù)然后載入 RDB。載入完成后主庫把復(fù)制緩沖區(qū)里堆積的命令發(fā)過去從庫執(zhí)行至此雙方數(shù)據(jù)追平進(jìn)入穩(wěn)定的命令傳播階段。第二步是很多人忽略的細(xì)節(jié)BGSAVE 可能要跑幾秒甚至幾十秒這期間主庫不能停止服務(wù)新寫入的命令必須先緩存起來否則從庫拿到的就是一份過期快照。這部分緩存占用的就是復(fù)制緩沖區(qū)內(nèi)存如果從庫接收 RDB 的速度太慢緩沖區(qū)會一直漲漲到超過client-output-buffer-limit replica的限制主庫會強(qiáng)制斷開這個從庫然后從庫重連、再來一次全量同步形成惡性循環(huán)。RDB 的傳輸方式在 Redis 7.x 里默認(rèn)變成了無盤模式repl-diskless-sync yes。有盤模式是主庫先把 RDB 寫到磁盤再讀文件發(fā)送無盤模式是 BGSAVE 的子進(jìn)程直接把 RDB 字節(jié)流寫進(jìn) socket省掉一次磁盤 IO。無盤模式對大內(nèi)存實例特別友好因為省下了幾 GB 的臨時磁盤文件但也有代價它會讓主庫多開一個 socket 連接repl-diskless-sync-delay默認(rèn) 5 秒是為了等更多從庫一起來好讓一次 RDB 喂給多個從庫——這個延遲在小規(guī)模場景下會讓人誤以為從庫怎么半天不同步。從庫載入 RDB 期間是阻塞的這期間的讀請求會被掛起。如果你用的是repl-diskless-load swapdb從庫會先把數(shù)據(jù)加載到一塊臨時空間加載完再原子替換減少阻塞時間但會額外占用一份內(nèi)存。生產(chǎn)環(huán)境里從庫的規(guī)格不要比主庫小太多否則加載 RDB 那幾分鐘你的讀流量會全部超時。2.3 增量同步replid 與 offset 的賬本增量同步是 Redis 2.8 引入 PSYNC 之后才有的能力在這之前斷線重連只能全量非常痛苦。它的核心是兩個變量replid和offset。replid主庫的復(fù)制流標(biāo)識。主庫每次重啟或者被提升為新主都會重新生成一個 replid從庫看到 replid 變了就知道換人了賬本作廢。offset復(fù)制流的字節(jié)偏移量。主庫每傳播 N 個字節(jié)的命令offset 就加 N從庫每收到 N 字節(jié)自己的 offset 也加 N。兩邊一對比就知道差多少數(shù)據(jù)。光有兩個變量還不夠主庫還得把最近發(fā)出去的這些字節(jié)存著這就是復(fù)制積壓緩沖區(qū)repl backlog由repl-backlog-size控制默認(rèn)只有 1MB注意單位是 MB 不是 GB。從庫斷線重連時發(fā)PSYNC replid offset主庫檢查replid 對得上并且 offset 之差小于 backlog 里現(xiàn)存的數(shù)據(jù)量回CONTINUE只補(bǔ)發(fā)差值部分。其他情況一律FULLRESYNC全量重來。所以repl-backlog-size這個參數(shù)直接決定了從庫短暫抖動一下需不需要全量重同步。默認(rèn) 1MB 在高寫入場景下幾乎等于沒有網(wǎng)絡(luò)抖兩秒就撐爆了。這也是后面第 3 章我要專門算一遍的原因。Redis 4.0 把協(xié)議升級到了 PSYNC2解決了主從切換后無法增量同步的老問題。老版本里主庫一重啟replid 變了所有從庫必須全量PSYNC2 引入了replid2和second_replid_offset讓從庫在新主庫上仍有機(jī)會走增量。這個改進(jìn)在哨兵故障轉(zhuǎn)移時價值巨大因為轉(zhuǎn)移過程中最怕的就是新主剛上來所有從庫排隊全量同步把新主壓垮。2.4 心跳、超時與延遲判定數(shù)據(jù)同步完之后鏈路不會閑著雙方一直在對暗號靠的就是心跳主庫每隔repl-ping-replica-period默認(rèn) 10 秒給從庫發(fā)一個PING確認(rèn)連接還活著。從庫每秒給主庫發(fā)一次REPLCONF ACK offset匯報自己處理到哪兒了。主庫如果repl-timeout默認(rèn) 60 秒內(nèi)沒收到從庫的 ACK就判定從庫下線斷開連接從庫同理超時沒收到主庫數(shù)據(jù)就認(rèn)為主庫掛了master_link_status變成down。這里有個很隱蔽的坑repl-timeout管的東西不止心跳還包括 RDB 傳輸、命令傳播等多個階段的超時。如果你的實例內(nèi)存很大、RDB 有幾 GB在慢網(wǎng)絡(luò)下傳 60 秒根本傳不完主庫會誤判超時然后反復(fù)斷開重傳永遠(yuǎn)同步不上。這種情況不是加大repl-timeout就完事的更該做的是排查網(wǎng)絡(luò)帶寬、考慮換無盤模式或者干脆在從庫本地做一份 RDB 冷啟動。INFO replication里的lag字段是從庫視角看的延遲含義是距離上次收到主庫數(shù)據(jù)過了幾秒正常值應(yīng)該是 0 或 1。如果它持續(xù)大于 3說明鏈路有壓力。更精確的延遲要用 offset 差值來算master_repl_offset - slave_repl_offset這個差值乘以平均命令字節(jié)數(shù)大致就是落后的數(shù)據(jù)量。做監(jiān)控的時候我一般兩個都采lag 反映的是卡不卡offset 差反映的是差多少。3. Docker 三節(jié)點主從實操從零到跑通紙上談兵沒意思這一章我們把一主兩從在本地 Docker 里完整搭一遍。選 Docker 不是因為它是唯一方案而是因為它能讓你在五分鐘內(nèi)擁有一套可反復(fù)銷毀重建的環(huán)境練習(xí)故障場景特別方便。docker安裝redis主從這個關(guān)鍵詞能搜出一堆教程但大多數(shù)只告訴你跑起來不告訴你為什么這么配也不告訴你哪些參數(shù)上線前必須改。3.1 環(huán)境準(zhǔn)備與配置文件先拉鏡像用 7.2 這個版本穩(wěn)定且默認(rèn)參數(shù)比較現(xiàn)代docker pull redis:7.2然后準(zhǔn)備三個配置文件放在./conf下分別是master.conf、replica1.conf、replica2.conf。為什么不直接用docker run redis-server --replicaof ...這種命令行傳參因為生產(chǎn)里你要配的東西遠(yuǎn)不止一個replicaof用配置文件能讓你把參數(shù)固化下來也方便版本管理。master.confport 6379 bind 0.0.0.0 protected-mode no appendonly yes appendfsync everysec requirepass redis123456 masterauth redis123456 repl-backlog-size 64mb repl-backlog-ttl 7200 min-replicas-to-write 1 min-replicas-max-lag 10replica1.confport 6380 bind 0.0.0.0 protected-mode no appendonly yes appendfsync everysec requirepass redis123456 masterauth redis123456 replicaof redis-master 6379 replica-read-only yes replica-serve-stale-data yes replica-priority 100 repl-backlog-size 64mb幾個配置項值得單獨解釋。masterauth從庫必須配不然主庫有密碼時握手直接失敗報NOAUTH Authentication required這個錯誤在日志里一點都不明顯很多人查半天以為是網(wǎng)絡(luò)問題。protected-mode no只在容器這種受控網(wǎng)絡(luò)里開物理機(jī)上千萬別這么干。replica-read-only yes是默認(rèn)值但顯式寫出來提醒自己從庫默認(rèn)拒絕寫命令這是保護(hù)機(jī)制不是安全邊界有CONFIG SET權(quán)限的人照樣能關(guān)掉它。min-replicas-to-write 1和min-replicas-max-lag 10這兩個參數(shù)是主庫側(cè)的保險絲意思是至少有 1 個從庫、且它的延遲不超過 10 秒我才接受寫請求否則直接報錯。它的作用是避免主庫網(wǎng)絡(luò)分區(qū)變成孤島之后還在傻傻接寫等網(wǎng)絡(luò)恢復(fù)把臟數(shù)據(jù)同步下去。注意這兩個參數(shù)一開從庫全部掉線時主庫會直接拒寫業(yè)務(wù)會報錯。上線前一定要和業(yè)務(wù)方確認(rèn)這個行為可接受或者把它當(dāng)成降級開關(guān)通過配置中心動態(tài)調(diào)整。3.2 啟動編排與狀態(tài)驗證用 docker-compose 一把梭docker-compose.yml內(nèi)容如下version: 3.8 services: redis-master: image: redis:7.2 container_name: redis-master ports: - 6379:6379 volumes: - ./conf/master.conf:/usr/local/etc/redis/redis.conf - ./data/master:/data command: [redis-server, /usr/local/etc/redis/redis.conf] redis-replica1: image: redis:7.2 container_name: redis-replica1 ports: - 6380:6380 volumes: - ./conf/replica1.conf:/usr/local/etc/redis/redis.conf - ./data/replica1:/data depends_on: - redis-master command: [redis-server, /usr/local/etc/redis/redis.conf] redis-replica2: image: redis:7.2 container_name: redis-replica2 ports: - 6381:6381 volumes: - ./conf/replica2.conf:/usr/local/etc/redis/redis.conf - ./data/replica2:/data depends_on: - redis-master command: [redis-server, /usr/local/etc/redis/redis.conf]replica2.conf把 port 換成 6381、replicaof指向同一個主庫即可內(nèi)容我就不重復(fù)貼了。啟動docker compose up -d docker compose ps三個容器都 Up 之后開始驗證。先看主庫docker exec -it redis-master redis-cli -a redis123456 info replication期望看到role:master connected_slaves:2 slave0:ip172.20.0.3,port6380,stateonline,offset1234,lag0 slave1:ip172.20.0.4,port6381,stateonline,offset1234,lag0 master_failover_state:no-failover master_replid:8f3a1c... master_repl_offset:1234stateonline是關(guān)鍵如果是statewait_bgsave說明 RDB 還在生成等幾秒再刷如果connected_slaves:0八成是masterauth沒配對或者網(wǎng)絡(luò)不通。再看從庫docker exec -it redis-replica1 redis-cli -a redis123456 info replicationrole:slave、master_link_status:up、master_last_io_seconds_ago:0這三項對了就說明鏈路健康。寫條數(shù)據(jù)驗證同步docker exec -it redis-master redis-cli -a redis123456 set hello from-master docker exec -it redis-replica1 redis-cli -a redis123456 get hello docker exec -it redis-replica2 redis-cli -a redis123456 get hello兩個從庫都能讀到from-master最基礎(chǔ)的主從就通了。這時候你再試試從庫寫入docker exec -it redis-replica1 redis-cli -a redis123456 set test 1 # (error) READONLY You cant write against a read only replica.這個報錯是對的說明replica-read-only生效了。3.3 斷線重連與手動切換演練搭完不練等于白搭我建議至少做三個演練。第一個是驗證增量同步。先把某個從庫的網(wǎng)絡(luò)斷掉模擬短暫抖動docker network disconnect redis_default redis-replica1 docker exec -it redis-master redis-cli -a redis123456 set k1 v1 docker exec -it redis-master redis-cli -a redis123456 set k2 v2 docker network connect redis_default redis-replica1Docker 的 bridge 網(wǎng)絡(luò)名一般是目錄名_default用docker network ls查一下。重連后立刻看從庫的INFO replication重點看sync_full和sync_partial_ok兩個計數(shù)器docker exec -it redis-replica1 redis-cli -a redis123456 info stats | grep sync # sync_full:0 # sync_partial_ok:1sync_full:0且sync_partial_ok:1說明走的是增量同步backlog 起作用了。如果你看到sync_full漲了那就是斷線時間太長或者 backlog 太小差值已經(jīng)超出緩沖區(qū)范圍。第二個演練是手動故障轉(zhuǎn)移。假設(shè)主庫真的掛了我們手動把 replica1 提升為新主docker stop redis-master docker exec -it redis-replica1 redis-cli -a redis123456 replicaof no one docker exec -it redis-replica1 redis-cli -a redis123456 info replication # role:master然后讓 replica2 改跟新主docker exec -it redis-replica2 redis-cli -a redis123456 replicaof redis-replica1 6380注意這一步replicaof運行時執(zhí)行不會落盤到配置文件容器重啟就丟了。生產(chǎn)里做這類變更必須同步改配置文件。第三個演練是觀察全量同步的開銷。刪掉一個從庫的 data 目錄再重啟讓它從頭全量同步同時盯著主庫的INFO stats里的rdb_bgsave_in_progress和latest_fork_usec。你會發(fā)現(xiàn) fork 那一瞬間主庫是阻塞的latest_fork_usec會飆到幾百微秒甚至毫秒級內(nèi)存越大越明顯。這就是為什么我前面強(qiáng)調(diào)從庫重建要錯峰別三個從庫同時重啟。3.4 關(guān)鍵參數(shù)的量級估算前面反復(fù)提到repl-backlog-size默認(rèn) 1MB 太小現(xiàn)在來算一遍該怎么定。邏輯很簡單backlog 容量 主庫寫入速率 × 可容忍的最長斷線時間舉個數(shù)主庫 QPS 5000其中寫命令占 40% 也就是 2000 條/秒平均每條命令含命令名、參數(shù)、協(xié)議頭約 200 字節(jié)那么寫入速率約 400 KB/s。假設(shè)你希望從庫斷線 60 秒內(nèi)還能增量恢復(fù)需要的容量是 400 KB/s × 60 s 24 MB??紤]到協(xié)議開銷的波動和突發(fā)流量取 2 到 3 倍余量配 64MB 比較穩(wěn)。這不是拍腦袋是按峰值估算再留冗余。如果你不確定寫入速率可以用這個命令粗算redis-cli -a redis123456 info stats | grep instantaneous_input_kbpsinstantaneous_input_kbps是最近一次采樣周期內(nèi)的入站速率采樣周期由INFO調(diào)用間隔決定。它只反映瞬時值做容量規(guī)劃時要抓業(yè)務(wù)高峰期的數(shù)據(jù)多采幾次取最大值。其他幾個參數(shù)的經(jīng)驗值我整理成表方便你直接抄參數(shù)默認(rèn)值生產(chǎn)建議說明repl-backlog-size1mb64mb 起按寫入速率和容忍斷線時間算高寫入場景可到 256mbrepl-backlog-ttl36007200從庫全斷后 backlog 保留多久太短會導(dǎo)致重連必須全量repl-timeout6060-120大實例慢網(wǎng)絡(luò)適當(dāng)加大但要和網(wǎng)絡(luò)抖動情況匹配repl-ping-replica-period1010改小會增加心跳開銷一般不動repl-diskless-sync-delay50-5從庫少且啟動分散時設(shè) 0避免等待client-output-buffer-limit replica256mb/64mb/60512mb/128mb/60全量同步期間從庫太慢會被踢大實例要放寬最后一行是很多線上事故的根因。默認(rèn)硬限制 256MB一個 5000 萬 key、寫入又猛的主庫在給慢從庫傳 RDB 時復(fù)制緩沖區(qū)幾秒鐘就能頂?shù)?256MB然后主庫主動斷鏈從庫重連再全量無限循環(huán)。加大這個限制是權(quán)宜之計根子上要看從庫為什么慢——是磁盤 IO 不行還是網(wǎng)絡(luò)帶寬不夠。4. 踩坑實錄常見故障與排查手冊這一章是我這些年攢下來的問題清單按癥狀 → 排查方向 → 解決的順序?qū)懩憧梢援?dāng)成速查表用。4.1 反復(fù)全量同步的定位思路最常見的癥狀是從庫看起來連上了但過一會兒又?jǐn)郔NFO stats里sync_full一路漲主庫的 RDB 生成日志刷個不停。這個問題的排查順序應(yīng)該是第一步確認(rèn)是網(wǎng)絡(luò)抖動還是容量不足??磸膸烊罩纠飻噙B的時間間隔如果規(guī)律性地每隔幾十秒斷一次多半是repl-timeout或者緩沖區(qū)溢出如果是隨機(jī)的更可能是網(wǎng)絡(luò)。第二步量 offset 差值。用master_repl_offset - slave_repl_offset算落后字節(jié)數(shù)和repl-backlog-size一比就知道有沒有超。超了就把 backlog 調(diào)大。第三步看主庫是否踢過從庫。主庫日志里搜Client ... scheduled to be closed ASAP for overcoming of output buffer limits有這句就是輸出緩沖區(qū)超限。第四步看從庫加載 RDB 的耗時。從庫日志會有MASTER - REPLICA sync: Loading DB in memory和Done loading RDB兩條中間的時間差如果超過repl-timeout的一半建議用無盤加載repl-diskless-load swapdb或者提升從庫規(guī)格。還有一個容易漏的點主庫是不是在頻繁做 RDB。如果你既有save策略又有從庫全量同步兩個 BGSAVE 撞一起fork 兩次主庫會非??āU_做法是把從庫同步觸發(fā)的 RDB 和定時 RDB 錯開或者干脆在主庫上關(guān)掉定時 RDB讓從庫承擔(dān)持久化職責(zé)。4.2 典型故障速查表我把高頻問題整理成一張表遇到問題先對號入座現(xiàn)象可能原因處理方式master_link_status:down網(wǎng)絡(luò)不通、端口映射錯、masterauth缺失用telnet測端口檢查兩側(cè)密碼配置NOAUTH Authentication required主庫有requirepass從庫沒配masterauth從庫補(bǔ)上masterauth并重啟從庫讀不到數(shù)據(jù)從庫在replica-serve-stale-data no下與主庫失聯(lián)恢復(fù)鏈路或臨時改配置允許讀舊數(shù)據(jù)READONLY You cant write against a read only replica應(yīng)用誤連從庫做寫操作檢查客戶端路由配置寫請求走主庫sync_full持續(xù)增長backlog 太小、從庫處理慢、網(wǎng)絡(luò)抖動加大repl-backlog-size排查從庫性能lag持續(xù)大于 5從庫負(fù)載高、網(wǎng)絡(luò)帶寬不足、主庫寫入過猛排查從庫慢查詢、加帶寬、考慮級聯(lián)復(fù)制主庫 fork 時間過長內(nèi)存大、頁表大、透明大頁未關(guān)關(guān)閉 THP控制單實例內(nèi)存不超過 16-20GB從庫內(nèi)存暴漲repl-diskless-load swapdb造成雙份數(shù)據(jù)關(guān)掉該選項或擴(kuò)容主從數(shù)據(jù)不一致從庫曾被寫入、主庫誤操作被同步用redis-cli --bigkeys等工具比對重建從庫關(guān)于透明大頁THP這是 Linux 上的一個老坑。THP 會把內(nèi)存頁從 4KB 合并成 2MBRedis 的 fork 走的是寫時復(fù)制頁越大復(fù)制的代價越高fork 耗時會從毫秒級變成幾百毫秒。關(guān)掉的方式是echo never /sys/kernel/mm/transparent_hugepage/enabled這條命令我每次部署新機(jī)器都要執(zhí)行一遍寫進(jìn)初始化腳本里別指望運維記得。4.3 生產(chǎn)環(huán)境的幾條經(jīng)驗除了參數(shù)和排錯還有些只有踩過才知道的東西。別讓從庫承擔(dān)唯一備份。我見過團(tuán)隊把從庫當(dāng)成備份策略結(jié)果主庫誤執(zhí)行了FLUSHALL一分鐘內(nèi)所有從庫全空了。備份必須是獨立的、離線的、有版本歷史的。從庫只能算副本。讀寫分離不要生搬硬套。寫后立即讀的場景比如用戶下單后馬上查訂單狀態(tài)走從庫會讀到舊數(shù)據(jù)這類請求必須強(qiáng)制走主庫。Lettuce 客戶端里有ReadFrom.MASTER、ReadFrom.REPLICA_PREFERRED這類策略Spring Boot 里可以通過LettuceClientConfiguration配置。我的做法是默認(rèn)全部走主庫只對明確能容忍延遲的查詢比如排行榜、統(tǒng)計報表開從庫讀寧可少省點資源也別讓業(yè)務(wù)同學(xué)半夜排查數(shù)據(jù)怎么對不上。級聯(lián)復(fù)制可以救命但不能濫用。一主掛八從的時候主庫要為每個從庫維護(hù)一份輸出緩沖全量同步時 fork 一次就要喂八個。這時候可以讓兩三個從庫直接跟主庫剩下的跟從庫即從庫的從庫。代價是多一跳延遲而且鏈路越長越容易斷。我的經(jīng)驗是一層足夠別搞三層。監(jiān)控必須采這幾項。光看 Redis 進(jìn)程活著沒用要采master_link_status、master_repl_offset差值、sync_full增量、latest_fork_usec、connected_slaves數(shù)量。前兩個反映健康度后三個反映成本和風(fēng)險。用 Prometheus redis_exporter 都能拿到配個告警規(guī)則offset 差值超過閾值或者sync_full五分鐘內(nèi)漲了兩次就報警。升級版本的時候先看協(xié)議變化。Redis 6.0 引入了多線程 IO但復(fù)制鏈路還是單線程處理的7.0 把復(fù)制緩沖區(qū)和 backlog 的內(nèi)存模型改成了共享結(jié)構(gòu)多個從庫共用一份 backlog內(nèi)存占用大幅下降。升級前值得讀一遍 release notes 里 Replication 那一段能省掉很多怎么升級完內(nèi)存掉了的困惑。5. 數(shù)據(jù)一致性與延遲應(yīng)用該怎么寫原理和運維講完了最后聊聊應(yīng)用側(cè)。畢竟主從復(fù)制最終是要服務(wù)于業(yè)務(wù)代碼的代碼寫不對前面配得再漂亮也白搭。5.1 復(fù)制延遲的度量與監(jiān)控延遲不是有或沒有的問題是多少的問題。測量延遲有兩個維度字節(jié)維度就是master_repl_offset - slave_repl_offset。這個值最直觀但要注意它只反映還沒處理的字節(jié)數(shù)不等于業(yè)務(wù)上感知的數(shù)據(jù)條數(shù)差異。要換算成條數(shù)得再除以平均命令大小。時間維度從庫上的master_last_io_seconds_ago和lag字段。前者的含義是距離上次收到主庫數(shù)據(jù)過了幾秒后者是主庫視角的最后一次 ACK 距今秒數(shù)。正常應(yīng)該都是 0 到 1。想精確測端到端延遲可以這么干在主庫上寫一個帶時間戳的 key然后在從庫上輪詢讀讀到之后用當(dāng)前時間減時間戳。這個方法我用過很多次比看 INFO 的計數(shù)器更貼近真實業(yè)務(wù)感受因為它把命令傳播、從庫排隊、網(wǎng)絡(luò)往返全算進(jìn)去了。# 主庫 redis-cli -h master -a pass set delay:probe $(date %s%3N) # 從庫 redis-cli -h replica -a pass get delay:probe監(jiān)控的告警閾值我一般設(shè)成這樣slave_repl_offset差值超過 5MB 持續(xù) 30 秒報警master_link_status變成 down 立即報警sync_full十分鐘內(nèi)增長超過 1 次報警。這三個覆蓋了絕大多數(shù)異常。5.2 讀寫分離的坑與兜底策略最后說說讀寫分離真正落地時的問題。理論上寫走主、讀走從很簡單實際上一堆細(xì)節(jié)連接池要分開配。主庫的連接池和從庫的連接池不能共用因為主庫要為每個從庫開一個復(fù)制連接從庫還要處理讀請求混在一起容易互相擠占。Spring Boot 里常見做法是配兩個LettuceConnectionFactory用Primary標(biāo)記主庫的那個再配一個只讀的供特定場景注入。事務(wù)里的讀必須走主庫。Redis 事務(wù)MULTI/EXEC和 Lua 腳本里的讀操作如果被路由到從庫可能讀到主庫還沒同步過來的中間狀態(tài)導(dǎo)致邏輯錯誤。這類操作的封裝層一定要硬編碼走主庫。延遲敏感的業(yè)務(wù)要有降級。從庫掛了的時候如果讀請求全部失敗用戶體驗會很差??梢宰鲆粚佣档讖膸熳x超時自動回落到主庫讀代價是主庫壓力上升但至少服務(wù)不中斷。這個邏輯別寫死在客戶端庫里放在業(yè)務(wù)層的 Repository 里更好控制。別用從庫做限流和計數(shù)。分布式限流的計數(shù)器、秒殺庫存這類強(qiáng)一致需求的場景必須走主庫。從庫的延遲意味著你的計數(shù)器可能不準(zhǔn)導(dǎo)致超賣或者限流失效。用 Lua 腳本做原子操作的場景尤其要注意腳本本身會在主庫執(zhí)行但如果你讀的數(shù)據(jù)是從庫的就是兩回事了。從庫數(shù)量不是越多越好。每加一個從庫主庫就多一份輸出緩沖、多一次網(wǎng)絡(luò)分發(fā)。三個從庫和八個從庫的差別在寫入高峰期會非常明顯。我的經(jīng)驗是單主掛三個從庫是舒服的區(qū)間再多就上級聯(lián)或者考慮 Cluster 分片。提示從庫做只讀查詢時記得避開KEYS、FLUSHALL這類危險命令。生產(chǎn)環(huán)境用rename-command把它們改掉或者禁用比事后追責(zé)有用得多。這套東西我在幾個日活百萬級的項目里跑過從最早的一主一從手動切換到現(xiàn)在一主三從加哨兵自動切中間踩的坑基本都在上面了。主從復(fù)制本身不難難的是把參數(shù)調(diào)到和自己的業(yè)務(wù)量匹配把監(jiān)控做到能提前發(fā)現(xiàn)問題把應(yīng)用側(cè)的路由規(guī)則寫對。這三件事做好了Redis 的可用性會有質(zhì)的提升。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97色综合视频| 天天天干夜夜夜操| 久久98| 一级片操逼视频| av在线中文| 五月婷婷影视| 另类色网| a色色片| 欧美日韩国产日本精品四虎网网站物| 色亭亭丁香五月天| 亚洲网综合在线| 九九AV| 99热在线观看精品| 丁香5月婷婷| 这里只有精品日韩精品| 噜噜噜噜婷婷五月天| 秋霞少妇毛片| 停停六月 综合| 欧美三级巜人妻互换| 亚洲欧洲国产精品| 操逼视频一区| 人人97碰| 人人爱国产| 狠狠色成人影片| 婷婷娱乐丁香综合网| 婷婷五月天色| 婷婷五月天色| 色五月婷婷激情综合网| 操操操www.com| 亚洲AV中文在线| 日本操B片| 久久在线视频免费观看| 亚洲欧洲中文日韩久久AV乱码| 久久丁香五月| 天天做天天爱天天爽| 六月色色| 久久久久久欧美精品se一二三四| 综合色色网| 色色色99| 中国丰满熟女A片免费观| 99精品久久| 大香蕉久久婷婷精品综合| 中文AV网站| 色丁香影院| 丁香五月激情澎湃一区| 天天色,天天日,天天做| 99免费视频| 婷婷五月丁香六月| 成人婷99最新| 激情五月天色色| 99热精品在线播放| 强辱丰满人妻HD中文字幕| www.婷婷| 久久九九99视频| 91精品刘玥| 久草九一| 婷婷激情四射网| 日韩日比视频| 婷婷六月丁香在线| 五月丁香六月婷婷手机无线| 婷婷天天婷婷天天澡| 五月天激情视频五月天| 大香蕉久热| 丁香五月中文字幕| 裸体做A爰片毛片A片免费| 1024人妻| 五月丁香婷婷激情四射迷人| 九久9精品| 狠狠香蕉| 俺去也在线www色官网| 99在线精品视频免费观看20| 亚洲成人网在线观看| 五月丁香天堂网| 五月色综合| 国自产拍偷拍精品啪啪一区二区| 99热在线网站| 天天插综合在线| 激情二色月| 噜噜久| 深爱五月激情| 九九在线精品| 欧美日本97| 婷婷五月天激情电影| 国产成人网址| 五月婷婷第四色| 久久WW| 91九色首页| 欧洲色区| 97操碰碰无码视频| 另类小说婷婷色| 思思热在线播放| 婷婷五月综合网| 久久五月天婷婷| 丁香激情综合| 97久久久| 直接看的AV| 中文字幕av久久爽一区| 91制片厂久久久国产电影| www.com.色色| 九九九九九九九热| 亚洲综合色色色| 国产成人精品123区免费视频| 色99视| 久久婷婷五月| 九九热最新| 丁香六月啪啪| 4399在线日本A片| 一區四區歐美日韓| 日本精品99| 九久久婷婷| 成人免费在线电影| 五月丁香啪啪伦理电影| 日本女色人人| 婷丁五月| 玖玖精品视频| 精品人妻在线| 五月丁香淫淫婷婷婷| 强伦轩人妻一区二区电影| 爱穴久久| 婷婷激情五月综合在线视频| 天天插天天插| 久热中文字幕| 丁香婷婷情色五月天| 色五月综合| 狠狠情色| 五月天另类小说| 日本一级黄色电影| www.99热| 97人人操| 97九色视频| 人妻操在线看| 香蕉AV777XXX色综合一区| 99色在线观看视频| 婷婷丁香小说| 青青999| 久久五月丁香激情综合| 婷婷五月天激情网| 99精品视频免费在线播放| 五月天亚洲综合网| 婷婷伊人视婷婷婷| 亚洲视频99| 91性交在线播放| 久色网| 夜夜躁爽日日| 五月天怕怕| 五月丁香婷婷激情在线| 精品久久久久成人码免费动漫| 日本久久99| 久久这里只有精品热在99| 国产精产国品一二三在观看 | 26uuuu精品一区二区| 亚洲av综合网| 日韩九区| 五月婷婷在线视频| 国产噜一噜天天噜| 免费无码毛片一区二区A片| 操操人人| 99热久| 六月婷久久| 五月婷婷六月丁香在线| 婷婷色吧| 九九亚洲视频| 色久婷婷五月| 午夜精品人妻无码一区二区三区| 人人爽人人爽人人爽人人爽| 色综合77777| 婷婷六月插屄激情| 偷拍九九热| xxx综合在线| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | www.婷婷,com| 亚洲无线视频| 丁香六月激情| 婷婷色五月色妇| 国产又爽又猛又粗的视频A片 | 婷婷导航| 久久五月人人摸| 99ri精品| 永久地址 色| 色欲五月丁香| 国产无人区大片| 激情久久久久久久久久| 五月在线| 婷婷激情丁五月| 91人久| 开心五月婷婷激情网| 欧美顶级少妇做爰HD| 天天婷婷操| 激情五月婷婷| 99A片| 97色色综合| 猫咪伊人久久| 久草五月天电影网| 日韩有码久久| 九九99精品视频在线观看| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 精品香蕉99久久久久网站| 婷婷激情五月天色| 99日在线观看视频| 色播五月天激情| 欧洲亚洲免费视频区| 男人的天堂婷婷色五月| www.久久久久久久| 六月婷婷激情小说网| 影音先锋AV男人站| 丁香五月天堂| 激情五月婷婷丁香| 台湾综合丁香五月蜜桃| 9色免费网| 97资源欧美日韩大香蕉超碰一区| 丁香五月亚洲无码| 婷婷丁香激情综合色情| www.99精品日操伊人乱碰在线| 99久久综合| 日本九九视频| 教师性爱毛片| 色5月婷婷| 五月天婷婷爱丁香中文字幕| www,com,五月色色| 丁香五月第四色88| 性色婷婷| 五月婷久久综合| 五月丁香好婷婷A片网| 77799热| 美女xx不卡| 色欲av伊人久久大香线蕉影院| 千人斩操逼| 激情五月天婷婷色色色色色色色色色色色 | av国产精品| 日日操夜夜骑| 五月丁香999| 91久草五月天婷婷| 婷婷视频在线| 99热这里只有精品在线观看| 五月天婷婷久久视频| 五月久久五月激情| 色五月天丁香婷婷| 99人人干人人操| 五月婷婷久久综合| 翔田千里 50岁 无码| 人人舔人人色人人高潮| 大香蕉九操| 68热超碰在线| 国产做爰视频免费播放| 天天影院色| 久色婷婷200| 丁香婷婷激情五月| 丁香婷婷色五月| 色吊操色妞| 中文字幕按摩做爰| 大香蕉久| www婷婷| 激情六月综合| www,婷婷| 婷婷射图五月天| 婷婷成人综合| 久久99婷婷| 婷婷97C| 亚洲另类在线观看| 色五月首页| yellow视频在线观看91| 激情五月天开心| 深爱激情av| av 一区三区四区| 五月丁香六月色| 婷婷激情六月中文| 激情五月天。| 久久六月婷婷| 亚州男人天堂婷婷五月| 香蕉久日夜| 婷婷综合激情| 91久热| 亚洲激情综合网| 色爱亚洲| 丁香六月欧美| 丁香六月婷| 秋霞三及片| 99久久综合网| 五月婷婷狠狠干| 婷婷日| 色五月婷婷 成人| 五月色丁香| 五月丁香毛片| 成人av在线网站| 色色色在线观看| 丁香六月色| 丁香婷婷影院| 色色丁香五月天社区| www超碰com| 96自拍视频九色在线观看| 久久伊人大香蕉| 天天做天天爱| 色婷婷基地 | 99国产精品久久久久久久久久久| 91精品激情9| 九九九九操逼| 99热九九九九| 91热视频色网站| www,超碰| 六月婷婷天天操夜夜爽视频| 99综合婷婷五月| 五月婷婷久久开心网| 天天做天天要天天爽| ,99视频久久| 丁香婷婷丁香五月欧美人| 丁香六月中文| 五月天婷婷丁香社区| 婷婷色五月综合| 婷婷五月天激情电影小说| 这里只有精品在线视频在线观看| 99精品热视频| 97碰| 日韩免费乱轮网站| 天天日天天做天天操| 六月丁香婷婷五月| 六月婷婷综合激情| 九九热在线视频| 久久久国产精品黄毛片| 九月大香蕉| 色婷婷88| 五月丁香综合伦理片| 开心五月婷| 天天日,天天射,天天舔| 操人无码| 久久曰9| 五月婷婷www| 9色在线视频精品观看| 9久久精品| 九九99精品视频在线观看| 狠狠干,狠狠操| 丁香五月综合网| 六月综合婷婷开心伊人| 9.1综合网| 美女主播野战视步页| 五月天色婷婷激情| 色婷婷电影网| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 99久久网站| 亚洲乱码日产精品BD| 99热超碰人| 狠狠色噜噜狠狠| 五月综合视频在线| 五月婷婷婷| 开心五月网| 操日本99| 日木狠狠干| 日韩精品无码99| 91丨九色丨白浆秘| 九九热内射| 色五月天堂| 九九色99| 日韩aaaaa| 激情玖玖综合网| 超碰大香蕉网| 六月久久狠狠| 另类小说五月天| 婷婷之玖玖| 爱之国产色情综合| 亚洲婷婷基地| 久久天堂色| 99久久久国产大片| 欧美激情综合色综合啪啪五月| 久久99久久99精品免视看婷婷| 久久区区一二三av| 激情综合另类| 久久激情视频| 九九久久精品| 极品另类| 97色视频网| 五月社区婷婷激情| 综合色图区| 性爱人人网| 综合视频五月| 99热这里只有精品99| 色婷婷a v| 五月天黄色激情小说| 日韩中文欧美| 久久网日本| 丁香婷婷视频| 26uuu成人网| 色综合色婷婷色伊人| 久久久久久久久久久-久五月天婷婷| 色综合久久中文| 狠色狠色综合久久| 九九热123| 五月丁香六月婷婷精品| 久久HD| 欧美婷婷九月| 丁香婷婷基地| 婷婷激情97| 99色播| 丁香九月激情| 综合激情啪啪| 五月丁香影视| 91热er| www.婷婷| 天天综合激情| 五月天偷拍| 久久欧洲久久| 亚洲综合色婷婷| www婷婷| 人人妻人人澡| 97操操操| 97香蕉碰碰人妻国产欧美| 色琪琪一综合久久激情五月视频| 任你爽精品免费视频6| 综合五月丁香97| av操一操| 五月婷婷丁香网| 激情五月色播五月| 99久久6| 亚洲av电影在线| 欧洲高清免费久久| 婷婷九月丁香中文| 日狠狠| 9久久久| EEUSS鲁片一区二区三区| 中文在线视频久9| 夜夜骑夜夜撸| 九九热自拍| 九九综合伊人| 五月婷婷六月丁香激情深爱| WWW.桔色成人.COM| 天天干天天干天天干天天干天天| 欧美一级a | 97操操| 99热8| 天天操夜夜夜夜爽| 色色五月天 亚洲| 久久久精品色色色| 日本精品干| 91色在线/日韩| 丁香花色色网| 性做爰A片免费视频A片直播| 激情五月综合网最新 | 97色色婷婷五月天| www.久久| 天天色天天爱天天爱天天爱y| 伊人久久大香天蕉亚洲特级| 久久精品五月| 亚洲免费99| 五月久久五月激情| 九色综合网| 久久婷婷六月综合综合色| 99人人操人人操人人精| 欧美性爱五月天| 五月人妻婷婷| 影音先锋天天日| 亚洲五月婷婷| 五月婷婷丁香六月在线| 99热精品观看| 日本人妻伦在线中文字幕| 激情五月com| 成人在线观看一区| 色婷视频| 婷婷激情视频欧美视频自拍视频欧美剧| 大香蕉五月| 99热精品在线| 五月丁香亚洲综合| 五月色婷婷亚洲| 日本综合99| 六月婷婷啪啪| 9999色色色色| 国产精品成人AV在线| 极品少妇高潮啪啪AV无码| 婷婷六月激情综合| 五月婷婷,六月婷婷| 色五月丁香五月激情五月激情| 碰碰人人人| 99激情在线| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 婷婷综合在线| 青草久久五月婷伊人| Aα在线免费观看| 久久婷婷成人综合色怡春院| 第四色婷婷丁香五月| 久久婷婷视频| 人人干人人操外国| 大伊香蕉精品视频在线| 欧美色色色色色色色| 免费试看小视频 99| 久久久久亚洲AV成人无码电影| 五月天电影网| 涩涩涩五月天| 91色吧网| 深爱婷婷丁香五月激情| 六月丁香深深爱| 99在线资源| 2050人人操免费工开爱| 九九碰九九爱97超碰| 激情五月天激情五月天| 涩五月丁香| a网站免费观看| 日韩天堂久久| 东京热五月婷婷| 色色色免费视频| 看久久性爱99视频| 99成人无码| 九九热这里只有精品首页| 99视频91| 97操男人的天堂| 欧美搡BBBBB摔BBBBB| 午夜成人天堂久久无码日韩久久| 天天插综合网| 六月丁香色婷婷| 激情五月天综合图片小说网站| 色热久| 青青日韩| 久久色午夜在线导航| 成人在线观看精品| 亚洲妇女熟BBW| 九九热最新| www.婷婷亚洲基地| 99热碰碰| 综合色影院| 五月婷婷综合丁香视频| 99爱视频在线观看这里只有精品| av操一操| se影音资源在线观看| 欧美综合五月丁香五月天| 免费日韩99| 欧美激情综合| 超碰免费在线| 五月天激情黄色小说在线观看| 九艹在线| 色五月婷婷在线| 丁香久月| 丁香五月AV| 久久区区一二三av| 欧美色色色色色色| 91精品久久久久久久久久久久| 欧美日韩五月婷婷| 日韩美女羞羞网站在线观看| 婷婷中文字幕网| 狠狠干在线| 伊人婷婷91| 五月天婷婷丁香花| 性生活视频98791| 玖玖在线| 五月开心婷婷网| 久久激情视频| 丁香婷婷五月天色综合| 日本色婷婷五月天成人电影| 很很干五月天| 丁香成人色情五月天| 开心五月激情婷婷| 五月色综合| 欧美色久| 99视频自拍| 另类少妇人与禽zOZZ0性伦| 97五月天| 婷婷九月久久| 日韩欧美成人片| 婷婷成人综合| 99热这里只有精品10| 五月婷婷网久久| 婷婷涩五月天综合| 99这里有精品视频| 天天日,天天插| 久久久久久人妻| 丁香五月天操B| 991自拍视频| 夜色综合网| 成人丁香五月| 五月综合在线婷婷图片| 91午夜激情| 日韩性视频| 丁香五月色情| 九月婷婷综合在线| 中文字幕成人| 亚洲综合在线丁香五月| 超碰93在线观看| 亚洲五月婷婷| 国产永久一黄| 丁香五月天AV在线| 夜丁香五月婷婷| 色欲五月婷婷| 成人亚洲精品久久久久 | 亚洲秘 无码一区二区三区妃光/1| AV在线大香蕉| 婷婷五月天伊人网在线观看视频| 天天色天天日| 婷婷99| 丁香五月很很肏| 啊V视频在线观看| 一本久久亚洲五月婷婷| 99无码精品| 婷婷丁香在线| 4438国产免费看| www.夜夜操.con| 午夜五月天| 99超级碰免费视频| 色婷婷av综合网| 亚洲永久四色| 日日操天天| 强伦轩人妻一区二区电影| www日本熟妇99在线视频| 九九99九九99九九99视频网| 丁香六月亚洲综合| 99热8| 欧美超碰亚洲| 激情com| 第四色五月婷婷| 中文字幕免费高清电视剧| 人人操 色| 激情五月综亚网| 色丁香五月| 久久久天堂国产精品女人| 99热这里都是精品| 噜噜噜久久亚洲精品国产品91| 99re8在这里只有精品| 婷婷激情97| 色婷婷丁香五月天在线视频 | 99久久综合精品五月天| 久久伊人五月天| 免费看片操逼| 日日肏天天操| 五月丁香久久| 亚洲综合字幕色色| 一区二区免费看| 色婷小说| 亚洲激情区| www.夜夜操| 色婷婷成人网| 久久五月天网| 99视频在线看| 丁香五月婷婷天| 俺去也婷婷| 色色色色综合网| 五月丁香婷婷爱| 91男人资源站| 五月婷婷丁香av| 五月婷婷六月丁香| 欧美天天爽| 久色网| 狼友视频在线观看18| 婷婷丁香五月色| 狠婷婷五月| 97人人草| 五月婷婷开心深| www色色色com| 99视频自拍| 欧美视频五区| 99热综合在线| 九九99九九99九九99视频网| 五月天丁香婷婷社区| 99久久综合| 丁香99| 久久色这里只有精品| 色婷婷呢狠禁久禁| 五月天婷婷五月| 大香蕉220| 婷婷九月激情网| 中文字幕欧美日韩VA免费视频| 99re思思| 亚洲精品色| 欧洲激情五月天婷婷| 九月色婷婷| 天天拍夜夜撸| 人妻熟女一区二区AV| 久久婷婷六月综合资源| 色狠狠色噜噜AV天堂五区| 成人婷婷深爱综合网| 成人午夜视频精品一区| 99热这里有精品2| 五月丁小婷婷激情四射| 天天摸人人摸| 亚洲一级AV在线免费播放| 99精品无码| 久9免费视频| 婷婷99狠狠躁天天| 亭亭丁香aV| 99热在线观看| 色婷婷五月天小说网| 久久婷婷一级片| 五月丁香婷婷色| 99惹在线精品免费观看| 99精品国产乱码久久久人妻| 婷婷香五月| 无码动漫AV| 激情六月丁香| 琪琪理论片| 久久A极片| 狠狠五月综合在线| 91人操人人人操人| 色五月婷婷色| 伊人色综在线| 色九月欧美| 99精品视频在线观看| 亚洲五月综合色播| 伊人久热91| 九九热黄色| 天天 日综合| 久久婷婷大香蕉| 综合网啪啪| 99re这里只有精品国产99| 这里只有精品96| 超碰天堂网| 色婷婷A| 天天日天天插| 激情五月综合网最新| 欧美在线看| 噼里啪啦在线观看免费完整版视频| 五月婷丁香亚洲| 操逼六区| 国产精品色情AAAAA片软件| 开心激情网五月天| 成人五月天在线观看| 久久这里只有精品视频15| 97九色视频| 情欲综合网| 综合色吧| 校花娇喘呻吟校长陈若雪视频| 亚洲中文乱字字幕在线永久| 亚洲综合视频天天精品| 美女xx不卡| 狠狠色综合网| 天天爱天天操| 2020夜夜操天天爽| 五月停停色色丁香| 大香蕉 婷婷| 97干在线视频| 狠狠狠夜夜夜| 日日操夜夜操狠狠操| 日本欧特黄色刺激一区影视久精品无码| 五月激情六月宗合| 丁香五月婷婷日本| 久久伊人日日夜夜| 97人人超| 99在线视频女女视频| 99国产精品白浆在线观看免费 | tingtingcaobi| 九九99精品视频在线观看| 天天日,天天射,天天舔| 五月天另类综合网| 97av在线视频| 人妖色AV色综合| 国产精品A成V人在线播放| 色综合久久44| 丁香婷婷月| 色婷婷五月天小说网| 99热九九这里只有精品| 1区2区视频| 91碰免费视频| 成人无码精品1区2区3区免费看| 99狠狠色| 丁香成人五月天| 只有久久精品免费| 婷五月天在线草| 91一起操| 久久新| 亚洲AV永久无码影院黑人| 婷婷99狠狠躁天天久久久九九九| 夜夜爽天天爽| 色情五月丁香| 99碰网站| 久色| 成人va视频| 激情亚洲网| 狠狠色综合网站| 青草久久五月婷伊人| 9九热视频| 日本人妻A片成人免费看片| 中文字幕丰满人妻无码专区| 玖玖爱导航| 大香人妻| 一区中文字幕电影| 另类图片五月天激情| 亚洲欧美成人在线观看| 新激情婷婷| 99re欧美精品| 婷婷五月久久| 五月婷三级片| 久久久aaa| 激情五月黄色| 操大屄五月天视频| 亚洲av另类在线观看| 欧美性爱丁香五月| 在线不卡AC| 婷婷字幕在线| 久久月天堂| 亚洲天堂玖玖| 超碰色人妾| 天天综合91入口| 亚洲综合999| 丁香五月婷婷Av| 亚洲AV第二区国产精品| www.色婷婷.com| 九九狠狠干| 天天久综合网永久入口17v| 九九狠狠干| 色丁香五月婷婷| 丁香色情五月综合激情| 99re这里只有精品视频6| 五月天色婷婷av| 激情五月天网页| 天天操天天日天天操| 婷婷金品综合视频| 成人网在线视频| 国产成人AV在线| 久久九九色| 色爱综合网| 丁香五月天AV在线 | 79精品在线视频| 免费久久这里只有精品99| 国产乱妇乱子伦| 五月丁香六月情| 99精品在线观看视频| 丁香五月香蕉| 少妇搡BBBB搡BBB搡毛茸茸| 欧美在线ee日韩| 色99婷婷五月天| 婷综合| 婷婷五月天va| 丁香六月久| 中文字幕在线免费| 少妇高潮呻吟A片免费看软件| 黄色网址五月婷婷| 9 99免费视频| 欧美成人无码一区二区三区| 亚洲丁香五月| 色欲天天综合| 国产肥白大熟妇BBBB视频| 亚洲韩国日产综合AV| 97干免费视频| 这里只有国产精品在线| 六月激情综合| 狠狠干婷婷| 男人的天堂在线婷婷| 99久久婷| 九九热这里只有精品一| 久久色五月天| 国产成人精品亚洲线观看| 激情网色五月| 国产中文亚洲欧美日韩性交| 久久久久久五月天| 六月婷婷综合| 99re欧美精品| 任我肏| 女力报到正好爱上你| 亚洲精品V天堂中文字幕| 日本三级色| 金桔一区二区ab地址| 欧美日韩aaaa| 丁香五月天之婷婷影院| 日韩AV免费| 99国产小视频2013| 激情综合网五月| 爱射综合| 91久久五月天| 玖玖福利视频资源| www.日日夜夜.com| AV免费在线网站| 婷婷五月丁香狠狠| 综合色影| 九九九干精品| 婷婷的激情五月| 色偷偷五月天| 4438亚洲欧美| www久久久| 色色日本| 人人人操 超碰| 91丨九色丨东北熟女| 99热精品在这里| 欧美性生交A片免费看| 婷婷无码视频| 夜夜骑夜夜撸| 黄色国久久| site:xiongshengzz.com| 五月欧美丁香在线观看| 久久久宗合视频88| 日韩砖区| 婷婷在线视频| 久久婷婷五月综合啪| 五月婷婷在线观看| 中字幕视频在线永久在线观看免费| 五月婷婷人人人操| 热99在线| 一本到不卡高清DVD| 怕怕av| 婷婷五月天AV| 色情五月天丁香社区| 狠狠色噜噜| 字幕网AV中文字幕| 婷婷天天舔| 综合网五月| 最新久久网址| 五月婷婷激情日本| 98热精品| 婷婷 月 丁香| 青青草青青草五月天| 婷婷五月激情基地| 五月天大香蕉| 人妻狠狠操| 大香蕉520| 六月丁香大香蕉| 激情爱爱网站超大免费| 久久婷婷激情四射五月天| 丁香五月区| 国产av第一专区| 99福利视频| 国产午夜伦鲁鲁| 十月丁香婷婷| 亚洲综合色网| 99er免费在线观看| 99在线精品视频| 九九综合精品| 图片区 小说区 区 亚洲五月| 99热色无码| 五月天成人综合| 五月天激情综合首页| 婷婷五月激情五月激情| 亚洲免费看片| 久久99热这里只有精品| 色情五月天小说| 激情五月影院| 日日日日做夜夜夜夜无码| 久久五月天婷婷| site:wpjngj.com| 欧美在线| 99爱免费在线视频| 91九色超碰| 色色网五月激情| 开心久久网婷婷| 激情丁香五月婷婷| 激情五月天综合网| 丁香六月婷婷综合| 99久热在线精品| 五月天丁香网| 伊人狠狠狠综合| 中文字幕人妻一区二区| 丁香色婷婷| 九九色色色| 丁香五月自拍| 2050人人操免费工开爱| 久久这里只有精品久久| 秋霞三及片| 色婷婷影音| 超碰在线超碰| 婷婷色综合| www.99在线| 午夜精品777| 九九九AAA热视频| 开心婷婷五月| 大香蕉五月丁香| 六月丁香婷| 99热的无码| 婷婷五月天久久综合88| 五月天综合视频| 91婷婷五月天综合视频| 亚洲最大视频网站| 欧美综合五月丁香六月婷| 丁香 婷婷 激情 综合 五月 | 97成人在线视频精品| 九九RE视频在线精品| 五月色丁香成人| 97超级碰碰碰久久久| 991精品在线视频| 久久久久久天天日天天爱| seuuu婷婷| 激情综合五月天| 五月天另类小说亚洲| 久久91久久精品久久| 狠狠色97| 五月情综合| 综合激情sV| 五月天激情国产综合婷婷婷| 亚洲欧州色情在线观看| 4399亚洲视频| 色www久视频| 综合99久久天天综合| 99热九九这里只有精品10| 色婷婷精品视频在线播放| 99热最新| 日日夜夜综合| 欧美色色色| 97超级碰人人| 激情五月天色色| 丁香婷婷色六月| 色情综合| 色级婷婷| 狠狠狠狠狠狠| 久久99激情| 久久这里只有精品视频26| 久久电影4399| 色综合77777| 丁香午夜天| 99这里都是精品6| 亚洲综合色网站| 超碰97免费在线| 欧美情色电影一区二区| 狠狠爱综合| 亚洲色综合性| 99热免费精品热久久66| 色婷婷瘦婷婷日韩| 99色爱| 99久久综合网| 婷婷五月天狠狠搞干| 婷婷五月天av网| 秋霞日本免费毛片A片| 婷婷丁香中文字幕| 色五月AV| 综合性爱网| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪| 九九成人精品免费视频| 五月综合丁| 婷婷丁香色五月天| 99热精品在线播放| 91婷婷搞| 婷婷狠狠干| 精品成人无码A片观看香草视频| 丁香五月激情综合| 久久激情五月网| 欧美日韩国产一二区| 亚洲乱码日产精品BD在线观看| 综合久久97| www.五月丁香| 国内精品玖玖| 综合网激情五月天| 日日爱678| 激情床戏| 色九月国产| 色九九九综合| 婷婷五月欧美综合| 天堂成人A片永久免费网站| 精品久热| 婷婷久久五月丁香| 色色99| 五月婷婷在线视频观看| 丁香五月开心五月激情| 开心激情久久久久久久| 激情精品久久| 欧美狠狠草| 九九热AV| 久婷五月| 久久99久久99精品免视看婷| 久久与婷婷| 五夜丁香| 99啪啪网| 国产熟女大叫受不了| 人人操操| 丁香五月网| 亚洲无aV在线中文字幕| 天天综合91入口| 婷婷成人在线| 激情丁香久久久久久| 久草网大香视频| 亚洲久艹| 激情图片婷婷丁香五月| 色婷婷瘦婷婷日韩| 亚洲AV第二区国产精品| 婷婷综合网性| 六月婷婷综合激情| Av九九| www.99视频| 97亚洲色 torrent magnet| 无码色色色色色| 天天做天天爱天天摸| 色五月激情问网站| 五月婷婷就去色| 亚洲射激情| 我要射综合| 婷婷五月天六点丁香五月| 2025色婷婷| 天天干天天干天天干| 91人人网| 丁香成人五月天| 蜜桃人妻无码AV天堂三区| 国产偷人爽久久久久久老妇APP| 91无码色色| 天天久久婷婷| www.99精品视频| 激情综合五月天| 日本a片网址| 六月五月久久丁香| 婷婷色激情五月天| 99爱视频| 九九热只有精品| 丁香六月天| 九九精品9| 狠狠色网| 91丨九色丨43老版熟女| 人人操Av| 五月之婷婷| 婷婷娌伦网| 99热免费精品| 丰满人妻妇伦又伦精品国产| 久久久全国免费视频| 第四色网婷婷| 久久黄A片| 九九爱看亚洲| 天天干电影| 五月在线| 五月停视频天堂| 九九综合网色全集 | 五月激情久久综合| 婷婷深爱五月丁香| 97操操操| 中文成人在线| 人人看人人97| 国产亚洲99| 丁香五月激情鲁| 97资源欧美日韩大香蕉超碰一区| 思思热在线视频精品| 久久婷婷五月综合网| 久天综合| 婷婷五月天亚洲色| 丁香五月婷婷在线| 亚洲天堂热| 伊人超碰在线| 成人噜噜网| 久久精品亚洲一级牲爱综合| 日本色色图| 色欲五月丁香| 久久久久久综合88| 五月丁香六月婷婷在线播放| 五月丁香啪啪综合| 日韩黄在免| 婷婷爱爱蜜臀天天操| 久久五月婷婷开心网| 一区视频网站| 日韩在线观看网址| 天天射天天干天插色综合| 五月丁香花伦理电影| 日本在线视频播放91| 一本色综合色| 成人亚洲精品| va亚洲中文在线| 精品人妻久久久久久| 久久婷婷色综合老司机| 久久老码第一| www.色五月| 丁香性爱在线视频| 超碰在线成人| 超碰1999| 免费视频WWW在线观看网站| 婷婷五月丁香花综合| 婷婷激情五月综合丁| 丁香婷婷深情五月亚洲| 99啪视频在线观看| 婷婷舔| 97啪啪| 六月丁丁香| 婷婷五月丁香亚洲| 成久综合视频| 久久精品夜色噜噜亚洲a∨| 亚洲偷| 中文字幕婷婷五月天| 欧美日韩成人在线网站| 1024成人免费看| 天天爱天天日| 在线视频另类| 97超碰欧美中文字幕| 色情久久久| 五月婷丁香| 99精品热视频| 五月婷婷六月丁香在线视频免费在线观看| 国产露脸150部国语对白| 人妻AV在线| 五月停停999| 超级碰碰视频无码| 亚洲色综久久五月| 99热在线观看| ww亚洲ww在线观看| 中文字幕不卡+婷婷五月| 久久99精品久久久久久青青AR| 五月综合影院| 双性美人被调教到喷水A片| 九九综合视频在线观看| 久草A片| 97色婷婷在线观看| 五月丁香在线观看| 丁香五月婷婷香| 五月丁六月婷| 国产肥白大熟妇BBBB视频| 侠女刀之记忆电影在线看免费| 九九av| 欧美99热| 黄网在线免费观看| 五月天操逼网| 九月色婷婷综合| 欧美三级级99久久| 欧美α√| 性色综合网| 丁香五月成人av| 亚洲视频久久| 五月天激情婷婷久久| 亚洲影院婷婷色| 狠狠干综合网| Www.Av网9| 啪啪小说五月天| 久久无意婷婷| 日婷婷久久开心| 五月婷婷97| 66色在线日韩| 国产综合婷婷| www.日韩国产| 人妻九九九九| 日本久久网| 激情小说五月天社区丁香| www.夜夜操| 九九综合精品| 日本熟妇乱妇熟色A片蜜桃| 淫荡家庭AV| 色婷婷婷婷五月天| 久久六月综合| 婷婷激情综合| 婷婷五月天亚洲综合| 99久在线精品| ww亚洲ww在线观看| 99免费在线视频| 色五月五月天| 五月丁香婷婷激情爱爱| 五月丁香六月婷婷无码| 99热资源在线| 日韩啪啪视频| 激情综合五月激情XXXX| 极品人妻VIDEOSSS人妻 | 91 原创 在线 九色| 超碰免费99| 狠狠做六月爱婷婷综合aⅴ| 成人无码髙潮喷水A片| 丁香五月亚洲婷婷| 激情淫乱男女| 激情床戏| 侠女刀之记忆电影在线看免费| 少妇搡BBBB搡BBB搡毛茸茸| 乱色色色| 天天插天天射天天干| 激情综合网五月激情| 99综合婷婷五月| 91婷婷丁香五月亚洲| 2020日日干| 婷婷,五月天,丁香,第一| 玩熟女五十AV一二三区| 激情欧美丁香五月| 大香蕉网站,大香蕉综合| 美日韩成人| 人妻自慰高清合集| 国产成人高清| 97色色视频| 激情婷婷五月基地| 99热99精品| 欧美美女视频| 狠狠干夜夜干| 思思99热这里只有精品| 欧美婷婷色| 五月丁香六月婷婷久久肏| 五月丁香在线视频观看| 丁香五月伊人| 国产精品久久..4399| 激情WWW| 五月激情射| 极品少妇高潮啪啪AV无码| 五月丁香六月情| 99热最新地址在线| 一起操最新网址| 丁香婷婷五月综合色情| 夜夜夜叫天天天做| 影音先锋91| 亚洲A片成人无码久久精品青桔| 婷婷五月激情中文字幕| 激情丁香久久| 99久久.www| 亚洲精品又粗又大又爽A片 | 99爱免费在线视频|