久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

Canal實戰(zhàn):基于MySQL binlog的增量數(shù)據(jù)同步全解析

Canal實戰(zhàn):基于MySQL binlog的增量數(shù)據(jù)同步全解析 1. 先搞清楚canal到底在解決什么問題如果說這兩年數(shù)據(jù)同步領(lǐng)域哪個組件最值得花一個星期認真學(xué)一遍我的答案一定是canal。這名字你可能在簡歷上見過在招聘JD里見過甚至在同事的代碼評審里被吐槽過但真要問你它到底是干嘛的很多人的回答其實是模糊的嗯就是同步MySQL數(shù)據(jù)的——差不多對但不夠準確。我換個說法你就明白了canal做的是MySQL增量數(shù)據(jù)訂閱也就是監(jiān)聽MySQL的binlog日志每當(dāng)數(shù)據(jù)庫里發(fā)生insert、update、delete操作canal就能像裝了竊聽器一樣在毫秒級把這個變更事件推給你。注意關(guān)鍵詞是增量——它不是全量復(fù)制不是每天導(dǎo)一次數(shù)據(jù)而是從你部署那一刻開始實時關(guān)注每一條新變化。那它解決的到底是什么問題我舉個最常見的場景。你們系統(tǒng)里肯定有一張熱點表比如商品信息、用戶資料、配置數(shù)據(jù)業(yè)務(wù)方讀得很頻繁。為了扛住流量你引入了Redis做緩存查詢走緩存寫操作更新數(shù)據(jù)庫。聽起來沒問題但更新數(shù)據(jù)庫的同時同步緩存這一步寫法稍微不嚴謹就會出現(xiàn)緩存和數(shù)據(jù)庫不一致的臟數(shù)據(jù)。常見的做法有幾種雙寫、定時任務(wù)全量刷新、消息隊列異步通知。雙寫邏輯侵入業(yè)務(wù)代碼定時任務(wù)有延遲且浪費資源消息隊列異步通知倒是好但你需要手動把每一次數(shù)據(jù)變更封裝成消息發(fā)出去代碼量不小。canal的思路是我不碰你的業(yè)務(wù)代碼我在數(shù)據(jù)庫這一側(cè)偷聽binlog把變更事件統(tǒng)一抓出來再推給你的下游。無論你是想去同步緩存、同步到ES、同步到數(shù)據(jù)倉庫還是同步到另一個MySQL都不需要改業(yè)務(wù)代碼。這個解耦的價值用過的人都懂——只需要一次配置全公司的數(shù)據(jù)消費方都能受益。對小白來說canal最友好的一點是它自帶一個客戶端訂閱模型你只要能寫Java代碼幾行就能跑通一個Demo完全不需要一開始就理解它的存儲原理。但如果你想用好它光是會跑肯定不夠因為真正的坑全在細節(jié)里binlog格式?jīng)]配對、位點丟失導(dǎo)致重復(fù)消費、和多個訂閱端搶數(shù)據(jù)……這些問題我用后面幾個章節(jié)慢慢展開。順便說一句canal項目的名稱來自canal這個英文單詞中文意思是運河、水道寓意很直白數(shù)據(jù)從MySQL流向下游的通道。這個比喻特別貼切你越往后用越會覺得它真的就像一條管道把數(shù)據(jù)庫的血液輸送到各個需要的地方。2. 安裝前的三個關(guān)鍵開關(guān)JDK、binlog和權(quán)限安裝canal本身不難難的是準備工作。很多小白按照網(wǎng)上的教程一步步來結(jié)果客戶端連不上、收不到消息回頭一看全是配套環(huán)境沒弄對。所以這一章我把安裝前置條件拆成三個開關(guān)每個都要提前確認壞了哪一個都會讓你后面抓狂。2.1 第一個開關(guān)JDK版本canal的server端是Java寫的所以你機器上得有JDK。這里有個坑需要你避一下canal 1.1.x系列用JDK 8沒問題但如果你用的是比較新的canal 1.1.7版本或者想跑源碼調(diào)試建議直接用JDK 11。我遇到過用JDK 8跑新版本canal啟動的時候報了一些奇怪的并發(fā)類加載錯誤看起來像是代碼問題其實是編譯目標版本太高導(dǎo)致的。裝好之后確認一下版本java -version正常情況下你會看到類似openjdk version 1.8.0_***或openjdk version 11.0.***的輸出。如果你的機器上存在多個JDK建議用export JAVA_HOME/path/to/jdk指定清楚避免canal的啟動腳本拿到錯誤的版本。2.2 第二個開關(guān)MySQL必須開啟binlogcanal的工作原理是偽裝成MySQL的從節(jié)點向主庫請求binlog日志。所以你的MySQL必須開啟binlog這是整個鏈條的源頭。修改MySQL配置文件Linux下一般是/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] log-binmysql-bin binlog-formatROW server-id1這三行缺一不可尤其第二行binlog-formatROW。我見過有人在測試環(huán)境用了默認的STATEMENT格式結(jié)果canal解析出來一堆SQL語句根本拿不到精確的行級變更數(shù)據(jù)。因為canal的核心輸出是某行某個字段從舊值變成了新值而這種結(jié)構(gòu)化信息只有ROW格式才完整保留。改完之后記得重啟MySQLservice mysqld restart或者systemctl restart mysqld。然后進入MySQL命令行驗證SHOW VARIABLES LIKE log_bin; SHOW VARIABLES LIKE binlog_format;兩個結(jié)果都符合預(yù)期這個開關(guān)才算真正打開。還有一個細節(jié)容易被忽略server-id不能和canal實例配置的server-id重復(fù)。我用一個真實的踩坑經(jīng)歷說明第一次部署的時候我隨手給canal設(shè)置了server-id1和MySQL自己的server-id沖突結(jié)果canal連接主庫時直接被拒日志里報ERROR: Got error 1236。這個問題排查了很久才定位到因為報錯信息很不直觀。所以提前規(guī)劃好MySQL給一個server-idcanal給另一個比如101、102這種互不干擾。2.3 第三個開關(guān)MySQL授權(quán)賬號canal需要用一個專門的MySQL賬號連接主庫這個賬號要有REPLICATION SLAVE和REPLICATION CLIENT權(quán)限。很多人在這步直接用root賬號倒也能跑通但從規(guī)范角度不推薦尤其到了生產(chǎn)環(huán)境最少權(quán)限原則是底線。創(chuàng)建賬號的SQL如下CREATE USER canal% IDENTIFIED BY canal123; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal%; FLUSH PRIVILEGES;這里給%是允許任意主機連接實際生產(chǎn)建議限定為運行canal的那臺機器IP安全第一。另外注意如果數(shù)據(jù)庫里已有的表結(jié)構(gòu)比較復(fù)雜canal在解析DDL事件時可能還需要訪問表定義所以順手把SELECT權(quán)限也加上。這三件事做完環(huán)境準備基本就緒。老實說這個過程十分鐘都用不了但價值遠超十分鐘——它決定了你后面所有排查動作能不能有一個干凈的基礎(chǔ)。3. 一條數(shù)據(jù)從MySQL到客戶端的完整路徑很多教程上來就讓你裝canal、跑Demo等你跑通了還是一頭霧水它到底是怎么拿到數(shù)據(jù)的這一章我從原理層面完整講一遍大概需要你花五分鐘耐心讀讀完之后你就擁有了排查問題的底層地圖遇到任何詭異現(xiàn)象都能知道往哪個環(huán)節(jié)去查。3.1 先理解MySQL主從復(fù)制是怎么回事canal的核心機制其實是在模仿MySQL的從庫。MySQL的主從復(fù)制過程很簡單主庫把每一次變更寫入binlog從庫連接到主庫請求從某個binlog位點開始的數(shù)據(jù)拿到之后在本地重放。canal做的事情和從庫一模一樣只不過它拿到這些日志之后重放的不是SQL而是把日志解析成結(jié)構(gòu)化的數(shù)據(jù)變更事件交給下游程序處理。這個過程涉及binlog里的幾個概念我用大白話解釋一下binlog文件MySQL落盤生成的日志文件比如mysql-bin.000001達到一定大小后自動切換下一個文件。binlog位點position一條日志在文件中的偏移量它是唯一的??蛻舳嘶謴?fù)消費時只要記住上次消費到的position就能從斷點繼續(xù)。GTID全局事務(wù)ID是比position更高級的定位方式不依賴具體文件名和偏移量。新版本canal推薦用GTID模式主從切換時能自動適應(yīng)。3.2 canal內(nèi)部的三段式流水線canal從拿到binlog到吐出數(shù)據(jù)內(nèi)部經(jīng)歷了三個核心階段第一階段抓取Parser。canal偽裝成從庫向MySQL發(fā)送dump協(xié)議請求。MySQL就會從指定的binlog位點開始把日志一條條推送給canal。這個階段最純粹只負責(zé)拿。第二階段解析Sink。拿到的binlog是事件流需要解析。比如一個UPDATE事件會解析出舊值before和新值after這個是canal最有價值的輸出——下游可以直接拿到{id: 1, name: 舊值}變成{id: 1, name: 新值}這樣的JSON數(shù)據(jù)而不需要自己拼SQL去反查。第三階段存儲Store。解析完成后事件會寫入一個內(nèi)存環(huán)形隊列等待客戶端來拉取。canal內(nèi)置了一個基于內(nèi)存的存儲組件默認容量是16384個事件客戶端消費速度跟不上時事件會在內(nèi)存里排隊排滿了之后才會出現(xiàn)丟數(shù)據(jù)或者阻塞的情況。整個鏈條如下圖所示文字版MySQL binlog → canal Server 抓取 → 解析 → 內(nèi)存隊列 → 客戶端(Client) 拉取 → 你的業(yè)務(wù)代碼/ES/Redis...3.3 你眼里的canal組件Server、Instance和Client實際部署時你會接觸到幾個概念這里一次性講清楚避免后續(xù)被配置項繞暈canal Server一個獨立運行的Java進程核心服務(wù)。canal InstanceServer內(nèi)部的一個邏輯實例每個Instance對應(yīng)一個MySQL數(shù)據(jù)源。一個Server可以配置多個Instance每個Instance有獨立的配置、獨立的訂閱位點、獨立的隊列。canal Client你寫的消費端程序通過TCP協(xié)議從Server拉取數(shù)據(jù)。打個比方Server是餐廳Instance是廚房里的一個灶臺——每個灶臺對應(yīng)一個供應(yīng)商MySQLClient是來吃飯的顧客。一個餐廳有多個灶臺很正常每個灶臺負責(zé)炒不同的菜互不干擾。從部署角度小白剛開始只需要一個Server、一個Instance、一個Client后面需要訂閱多個庫或者對接多套下游時再考慮多Instance。4. 跑通第一個Demo用Java代碼訂閱一條insert前面講了那么多理論和準備這一章我們真正動手。我用一臺Linux機器做演示canal部署包從官方GitHub Release頁面下載最新穩(wěn)定版即可解壓后目錄結(jié)構(gòu)大致如下/canal ├── bin ├── conf │ ├── canal.properties │ ├── example │ │ └── instance.propertiesconf/canal.properties是全局配置conf/example是默認實例的配置目錄instance.properties是實例級配置。4.1 修改實例配置先改instance.properties這是核心# MySQL主庫地址 canal.instance.master.address127.0.0.1:3306 # 連接MySQL的賬號密碼 canal.instance.dbUsernamecanal canal.instance.dbPasswordcanal123 # 訂閱的數(shù)據(jù)庫和表*表示所有 canal.instance.filter.regextest\\..* # 位點定位方式 canal.instance.gtidfalse重點說明一下filter.regex這個配置。它的格式是數(shù)據(jù)庫名\\..*比如我只想訂閱test庫的所有表就寫test\\..*想訂閱test庫下的user表就寫test\\.user想訂閱多個庫用|分隔。這個正則很容易寫錯因為Java字符串本身也要轉(zhuǎn)義所以\\.寫成\\.而不是\.。我見過有人照抄配置把轉(zhuǎn)義符弄丟了結(jié)果canal直接不輸出任何數(shù)據(jù)查了半天才發(fā)現(xiàn)是正則匹配問題。4.2 修改全局配置再看canal.properties重點確認以下幾項canal.port11111 canal.destinationsexample canal.instance.global.modetcpcanal.port是客戶端連接的TCP端口默認11111不用改。canal.destinations指定啟動哪些實例默認example對應(yīng)conf目錄下的example文件夾。canal.instance.global.modetcp表示消費端通過TCP直連方式拉取數(shù)據(jù)——這是最簡單的方式后面聊MQ模式時再說。4.3 啟動Servercd /canal/bin ./startup.sh啟動后看日志確認沒有異常tail -f /canal/logs/canal/canal.log如果看到canal server is running now之類的字樣并且沒有報錯說明Server起來了。再檢查實例狀態(tài)tail -f /canal/logs/example/example.log正常情況下能看到start successful。這里有個新手最容易遇到的情況日志里顯示canal is starting然后卡住不動多半是MySQL連接沒通去查example.log里有沒有connect timeout或者Access denied字樣。4.4 寫一個最小客戶端canal官方提供了一個客戶端庫canal.client用Maven引入dependency groupIdcom.alibaba.otter/groupId artifactIdcanal.client/artifactId version1.1.7/version /dependency然后寫一個最簡單的Java類核心邏輯是建立連接 → 拉取消息 → 解析事件 → 打印變更內(nèi)容。import com.alibaba.otter.canal.client.CanalConnector; import com.alibaba.otter.canal.client.CanalConnectors; import com.alibaba.otter.canal.protocol.Message; import com.alibaba.otter.canal.protocol.CanalEntry; import com.alibaba.otter.canal.protocol.CanalEntry.EntryType; import java.net.InetSocketAddress; import java.util.List; public class CanalDemo { public static void main(String[] args) { // 連接canal server CanalConnector connector CanalConnectors.newSingleConnector( new InetSocketAddress(127.0.0.1, 11111), example, // instance名稱 , // 無認證時填空 ); connector.connect(); // 訂閱所有表這里要和instance的filter.regex對應(yīng) connector.subscribe(test\\..*); while (true) { // 一次拉取100條不設(shè)置超時 Message message connector.getWithoutAck(100); long batchId message.getId(); if (batchId -1 || message.getEntries().isEmpty()) { // 沒有數(shù)據(jù)睡1秒再試 try { Thread.sleep(1000); } catch (InterruptedException e) {} continue; } for (CanalEntry.Entry entry : message.getEntries()) { if (entry.getEntryType() ! EntryType.ROWDATA) { continue; } CanalEntry.RowChange rowChange CanalEntry.RowChange.parseFrom(entry.getStoreValue()); CanalEntry.EventType eventType rowChange.getEventType(); for (CanalEntry.RowData rowData : rowChange.getRowDatasList()) { if (eventType CanalEntry.EventType.INSERT) { System.out.println(INSERT: rowData.getAfterColumnsList()); } else if (eventType CanalEntry.EventType.UPDATE) { System.out.println(UPDATE before: rowData.getBeforeColumnsList()); System.out.println(UPDATE after: rowData.getAfterColumnsList()); } else if (eventType CanalEntry.EventType.DELETE) { System.out.println(DELETE: rowData.getBeforeColumnsList()); } } } // 確認消費成功 connector.ack(batchId); } } }這段代碼看著有點長但核心就三件事連接、拉取、確認。所有canal客戶端的骨架都是這個模式你以后無論用Spring Boot封裝還是寫其他語言的客戶端都逃不開這個套路。4.5 實測驗證運行上面的Java類然后在MySQL里執(zhí)行INSERT INTO test.user (name, age) VALUES (張三, 25);立刻就能在控制臺看到類似下面的輸出INSERT: [name: 張三, age: 25]看到這一行你的canal入門第一個Demo就算真正跑通了。從這一刻起任何數(shù)據(jù)庫變更都會實時出現(xiàn)在你的消費端面前剩下的就是你怎么利用這些數(shù)據(jù)了。5. 小白最容易踩的五個坑含完整排查思路說實話canal的部署和Demo真的很簡單但越是這種看起來簡單的組件越容易在細節(jié)上翻車。這一章我把自己和周圍人踩過的坑整理出來每一項都附上排查鏈路而不是直接給結(jié)論——因為下次你遇到的可能只是個相似但不完全一樣的問題思路比答案更重要。5.1 坑一binlog格式不是ROW解析結(jié)果全是SQL現(xiàn)象客戶端能連上能收到消息但解析出來的RowData是空的只有SQL語句。排查鏈路第一步回到MySQL執(zhí)行SHOW VARIABLES LIKE binlog_format;如果結(jié)果是STATEMENT或MIXED基本就是問題所在。第二步修改配置為ROW重啟MySQL。第三步重新執(zhí)行一條INSERT看canal是否輸出結(jié)構(gòu)化的列值。根因只有ROW格式才會記錄每一行變更的具體列值STATEMENT格式記錄的是原始SQL文本canal無法從中還原出行級別數(shù)據(jù)。5.2 坑二server-id沖突導(dǎo)致連接被拒現(xiàn)象canal日志里出現(xiàn)ERROR: Got error 1236或者直接連接不上MySQL。排查鏈路第一步檢查MySQL的server-idSELECT server_id;第二步檢查canal的canal.instance.properties里有沒有canal.instance.mysql.slaveId配置項這個值默認是123456。如果和MySQL的server-id一樣就改成一個不同的值比如654321。第三步重啟canal實例觀察日志。根因MySQL主從復(fù)制機制要求每個從節(jié)點的server-id必須全局唯一。canal偽裝成一個從節(jié)點如果它的server-id和MySQL主庫相同主庫會認為這是我自己直接拒絕復(fù)制請求。這里插一句生產(chǎn)中很多人會忽略這個參數(shù)因為它的默認值看起來沒存在感。建議部署清單里專門加一行確認slaveId與所有MySQL節(jié)點均不重復(fù)。5.3 坑三位點丟失導(dǎo)致重復(fù)消費或漏消費現(xiàn)象canal重啟后客戶端收到了之前已經(jīng)處理過的舊數(shù)據(jù)或者直接跳過了部分數(shù)據(jù)。排查鏈路第一步確認canal的meta信息存儲在哪里。默認情況下位點存在內(nèi)存中Server重啟就會丟失從當(dāng)前最新位置開始消費。如果你需要持久化要在canal.properties里配置canal.instance.global.spring.xmlclasspath:spring/memory-instance.xml改為file-instance.xml可以把meta寫到本地文件。第二步檢查客戶端代碼是否正確ack。只get不ack重啟后會從上次ack的位置重新拉取產(chǎn)生重復(fù)消費ack太快也可能出問題如果先ack再處理業(yè)務(wù)邏輯處理失敗時數(shù)據(jù)就再也拉不回來了這是至少一次語義下最常見的取舍。第三步設(shè)計消費冪等。無論位點多可靠分布式環(huán)境下重復(fù)消費幾乎不可避免所以消費端的冪等才是最終兜底。根因canal的位點機制是經(jīng)典的有且至少一次消費語義重復(fù)消費是常態(tài)漏消費是因為位點推進到了業(yè)務(wù)成功之前。5.4 坑四多個客戶端實例同時消費同一個instance現(xiàn)象多個服務(wù)實例都連了同一個canal destination結(jié)果每條數(shù)據(jù)只被其中一個實例收到而不是每個實例都收到。排查鏈路第一步確認你的業(yè)務(wù)訴求是廣播還是負載均衡。canal不保證多個client同時消費時每個client都能拿到全量數(shù)據(jù)默認是競爭消費——一條數(shù)據(jù)只會給一個client。第二步如果確實需要多個下游分別消費同一份數(shù)據(jù)可以有三種方案一是每個下游對應(yīng)一個獨立的instance二是通過MQ模式發(fā)布訂閱三是使用canal的CanalMQStarter配多個不同的group。根因canal的tcp模式的定位是一個destination對應(yīng)一個消費組多個client是在消費組內(nèi)競爭拉取不是復(fù)制分發(fā)。5.5 坑五DDL事件和事務(wù)邊界導(dǎo)致的數(shù)據(jù)異常現(xiàn)象執(zhí)行ALTER TABLE之后消費端收到的數(shù)據(jù)突然解析失敗或者一個事務(wù)內(nèi)的多變更變得不完整。排查鏈路第一步檢查消費端是否處理了EntryType.ROWDATA之外的事件。DDL事件屬于ENTRY_TYPE的其他類型如果你在消費端直接跳過所有非ROWDATA事件DDL對下游可能造成結(jié)構(gòu)不一致。第二步開啟canal的并行消費時要注意事務(wù)一致性。如果下游是數(shù)據(jù)庫或緩存建議按事務(wù)邊界整體提交避免同一個事務(wù)的變更被拆到不同地方執(zhí)行。根因canal按事務(wù)為單位讀取binlog但消費端如果并行處理事務(wù)邊界會被人為拆散。這五個坑基本覆蓋了我見過的90%小白問題。說實話每個坑背后都對應(yīng)一個理解盲區(qū)不是性能問題不是bug而是對canal是怎么工作的理解不到位。所以每次出問題先回到第3章的原理圖里定位是在哪個環(huán)節(jié)排查速度會快很多。6. 進階思路從單機Demo走向生產(chǎn)環(huán)境Demo跑通、坑也避開之后你可能會問那真實項目里一般怎么用這一章我講三個最常用的落地方向以及小白從單機走向生產(chǎn)時需要補的功課。6.1 實戰(zhàn)方向一數(shù)據(jù)庫變更同步到Redis這是canal最常見的用法。假設(shè)你的商品表product里有價格字段價格變了緩存也得變。傳統(tǒng)做法是改業(yè)務(wù)代碼在更新數(shù)據(jù)庫后刪除緩存用canal之后消費端收到UPDATE事件直接從JSON里提取最新值執(zhí)行SET key value或者刪除緩存。業(yè)務(wù)代碼零侵入。要注意兩點第一canal發(fā)來的是列名值的結(jié)構(gòu)不是SQL所以你需要自己把變更映射成業(yè)務(wù)對象這個映射邏輯一般寫在消費端一個獨立模塊里第二如果變更頻繁要注意給緩存加防抖比如1秒內(nèi)同一行的多次變更合并成一次刷緩存避免抖動。6.2 實戰(zhàn)方向二異構(gòu)數(shù)據(jù)同步到Elasticsearch把MySQL的數(shù)據(jù)同步到ES做全文檢索也是高頻場景。流程大致是canal監(jiān)聽MySQL變更 → 消費端把變更拼成ES文檔 → 調(diào)用ES的index/update接口。這里有個常見的設(shè)計問題ES里可能需要寬表比如訂單文檔里要包含用戶名、商品名而這些字段來自其他表。如果只訂閱訂單表拿不到關(guān)聯(lián)信息。解決思路有兩個一是訂閱多張表在消費端做內(nèi)存關(guān)聯(lián)二是讓業(yè)務(wù)方寫出包含所有所需字段的預(yù)聚合表canal只訂閱這一張。第二個方案更簡單可靠推薦小白先這么做。6.3 從單機到集群三個生產(chǎn)級配置生產(chǎn)環(huán)境不可能只跑一個單機canal但我也要提醒你一開始別急著上集群先把下面三件事做好比盲目加機器更有價值。第一個是位點持久化。前面說過默認位點在內(nèi)存在Server重啟就丟。生產(chǎn)環(huán)境務(wù)必配置成file模式或zookeeper模式。我用的是file模式最簡單但要注意磁盤空間和文件權(quán)限。第二個是訂閱粒度收斂。開發(fā)環(huán)境訂閱所有庫所有表沒問題生產(chǎn)環(huán)境一定要用filter.regex收窄到具體業(yè)務(wù)庫和表不然會白白消耗大量性能還可能把其他團隊的數(shù)據(jù)變更也帶進你的消費邏輯。第三個是監(jiān)控告警。canal是實時鏈路一旦它停了下游全部數(shù)據(jù)滯后。至少要做到進程存活監(jiān)控、消費延遲監(jiān)控canal有delayed指標、客戶端積壓消息數(shù)監(jiān)控。這些指標都可以通過JMX或者集成到現(xiàn)有監(jiān)控系統(tǒng)里別等業(yè)務(wù)方來問為什么數(shù)據(jù)還沒同步過來你才發(fā)現(xiàn)問題。至于集群模式canal支持多Server ZooKeeper的HA方案多個instance由ZK協(xié)調(diào)一臺掛了自動切換到另一臺。這個配置本身不復(fù)雜但我建議在你的業(yè)務(wù)真正需要高可用之前先把單機的監(jiān)控和運維做扎實因為集群也解決不了消費端邏輯的bug。7. 最后的實用建議這一章不聊原理、不聊配置就說一些零散但真實的經(jīng)驗。第一開發(fā)環(huán)境一定要把binlog打開。我見過不少團隊本地MySQL默認沒開binlog結(jié)果canal跑不起來排查半天發(fā)現(xiàn)是本地環(huán)境的鍋。你可以在MySQL配置里直接默認開啟對開發(fā)環(huán)境性能影響微乎其微。第二消費端一定要做冪等。不管你用哪種位點配置重復(fù)消費都是可能發(fā)生的所以消費邏輯必須能反復(fù)執(zhí)行而結(jié)果一致。比如同步到ES用文檔ID做upsert天然冪等同步到Redis覆蓋寫本來就冪等同步到另一個MySQL用主鍵做INSERT ... ON DUPLICATE KEY UPDATE就能保證不炸。第三binlog里的時間字段要小心。canal解析出的時間字段默認是字符串格式時區(qū)可能有偏移。如果你發(fā)現(xiàn)同步的數(shù)據(jù)在時間上差了8個小時去檢查canal的時區(qū)配置。第四測試的時候別只測INSERT。我見過有人Demo只驗證了insert就以為一切正常結(jié)果上線后update和delete全沒處理數(shù)據(jù)越差越多。測試至少覆蓋增刪改三種事件最好再測一個事務(wù)里多條變更的順序性。最后說一句掏心窩的話canal入門真的不難難的是你要理解它和業(yè)務(wù)系統(tǒng)的邊界在哪里。它能幫你解決數(shù)據(jù)同步但它不會幫你把下游的消費邏輯寫好也不會幫你兜住消費端拋出的異常。把它當(dāng)成一個可靠的數(shù)據(jù)搬運工真正干活的內(nèi)容還是要靠你精心設(shè)計消費端來處理。我用canal做了好幾個項目的增量同步從最開始照貓畫虎跑通Demo到現(xiàn)在能快速定位各種奇怪問題最大的感受就是工具本身只是管道關(guān)鍵還是對數(shù)據(jù)變化鏈路有一顆敬畏之心。希望你也能順著這篇文章跑通自己的第一個Demo然后在這個基礎(chǔ)上一步步把數(shù)據(jù)流動做得更穩(wěn)、更優(yōu)雅。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
AA丁香综合激情| 五月天伊人网| h在线看免费版在线看| 欧美色女人| 亚洲情色 无码专区| 色综合加勒比四四季| 亚洲AV秘 精品久久老牛影视| 99热99re6国产在线播放| 天美传媒国产原创中文字幕亚洲欧美另类 | 日本熟妇熟色97一本在线观看| 人妻81p| 国产精品久久久| 99最新日韩偷拍视频| 一区二区三区男女操逼黄色小电影| 欧亚性爱视频免费看| 粉嫩av在线| 天天日天天舔东京热| 国产精品色色| 激情五月综合网| 久久天天艹| 亚洲高清视频在线免费观看| 九九九九九九综合| 69丨亚洲丨精品丨入口免费播放| 人人摸人人舔一区二区| 欧洲综合色| KK色在线影院| 2020中文字幕在线| 在线中文AV| 日本 免费 一区二区三区 久久香蕉| 日韩一级片| 三级网色| 欧美精品1区2区3区| 亚洲国产欧美中日韩成人综合视频| 看免费的黄片| 婷婷干黄色| 草草草视频在线免费看| 操一操摸一摸| 无遮挡又黄又刺激的视频| 天天草天天日| 日韩性爱毛片操骚逼| 一区不卡在线观看av| 日韩欧美大片免费高清啪啪| 91伊人久| 99精品欧美一区二区三区桃色| 欧美伊人久久综合网| 国产综合日韩伦理| 成人aⅴ一区二区三区| 亚洲av国产av综合av卡| 性爱视频啪啪啪啪| 91粉嫩萝控精品福利网站_精品影音先锋国| 日韩综合无码色欲vv| 黑人免费福利视频| 日韩乱伦影音先锋| 亚洲欧美一区二区三区在钱蜜桃 | 日韩无码久久熟女一级片| 伊人一区二区三区| 亚洲少妇激情一区二区三区| 日韩精品-原创伙伴| 亚洲综合嫩| 欧洲精品一级二级精品综合视频综合 | 91爱剪切久久| 九九精品99| 综合影视国产无码| 国产精品久久久久绯色| 日韩欧美中文字| 久污| 超碰免费人妻在线| 99久久婷婷国产综合精品草原| 91一区二区| 白丝AV网站| 91爰爱欧美| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久亚洲AV无码专区首页| 亚洲超碰AV| 狠狠色婷婷7777久| 亚洲AV高潮| 99精品丰满人妻无码| 超碰吊日色| 免费观看性欧美一级| 亚洲αv一区二区三区| 91人妻PORNY九色大屁股| 夜夜嗨一区| 人妻少妇精品久久久| 好屌色综合| 人人澡综合涩| 玖色av| 欧美色老汉| 黄站在线免费观看| 精品78| 爱妃国产亚洲视频中文字幕| 国产精品毛片?v一区二区三区 | 黄骗免费| 红杏大香蕉| 亚洲欧洲无码97久久精品| 韩国轻伦国内自拍一区| 偷拍导航视频网站| 岛国黄片网站| 五月天成人综合| 操逼精品视频| www.国产高潮精品| 人妻熟女一区在| 久色99999| 超碰欧美97资源| 97欧美综合| 久久一区二区高清免费| 97中文天堂| 欧美日韩97在线| 在线视频97| 懂色天天爱天天日天天射天天澡| 日日日日日| 啊啊啊啊啊在线视频| 东京太热男人的天堂久久久| 狠狠色狠狠色狠狠五月| 制服丝袜第二页| 美国黄片aaa| 狼天天狼天天大香蕉| 日韩人妻精品| 91人妻素女| 色老汉色| 国产亚洲福利第一页丝袜| 青娱乐日韩无码| 久草在| 深爱激情五月天| 亚洲欧洲激情| 亚州操逼网| 97se亚洲| 久久欧洲| 免费A V在线播放| 超碰97久久观看| 黄片免费久久久久久久| 天天色踪合| 日韩av不卡在线看| 国产精品色约约| 亚洲色人| 麻豆 亚洲 97| 国产97视频免费观看| 是还免费视频1727我| 久久久久久电影| 爱爱久久| 丁香六月婷婷综合| 84YTCOM性无码| 色情亚洲日本成人| 日韩人妻播放| 久久久精品| 久久精品国产99国产精品亚洲| 91被操| 天天操人人操骚逼网站| 中文字幕一区av| 久久久久久99AV无码免费网站| 欧美日本天堂| 久久婷婷一区二| 久久久精品电影| 大香蕉日韩欧美| 国产精品久久久久久久久久久久久久久久久久 | 96麻豆精品一区二区三区| Julia在线播放亚洲久久| 69国产对白刺激| 后入日本1234| 道久久五香丁月婷婷激情综合| 天天日少妇逼AV| 伊人影院综合是一个与深夜成人在线| 最新亚洲黄色免费电影| 日韩电影在线观看网址| 午夜精品久久久久久久久久久久久| 亚洲精品国产AV天美传媒| 丁香激情五月| 黄片www.| 99色在线| 婷婷六月色| 亚欧国产无码精品在线| 福利在线黄片| 婷婷91| 99色色| 亚洲国产欧美中文永久| 日本福利二区视频| 黑人精品成人一区二区三区 | 九九热精彩视频| 嗯~啊~快点 死我视频| 精品久久久久黄少妇| 麻豆国产av网| 伊人久久国产免费观看视频| 91xingse| 91精品女厕偷拍视频| 久久久久久99AV无码免费网站| 丝袜人妻av一区二区| a一区二区三区乱码在线| 日本精品中文字幕视频| 精品人妻av在线播放| 男人的天堂一区三区| 九九综合色| www九九热| 吻戏激情性巴克| 日本免费不卡二区| 欧美激情内射| 在线观看亚洲专区| 可以免费观看的AV| 色 亚洲 91| 丰满人妻-区二区三区免费看| 一区二区三区国产在线播放 | 神马久久久久久伦理片| 99色在线视频| 91欧美性| 久久久久久久国产a∨| 清柠毛片| 国产区性爱在线视频秋霞豆| 丰满少妇人妻久久久久久| 精品免费成人久久| 操操逼操操逼操操逼逼| 啊啊啊啊嗯嗯嗯用力好爽| 91n免费处女| 亚洲黄色| 在线 制服丝袜中出 人妻| 久久九操在线观看| 国产欧美精选激情视频| 91麻豆一二三区| 欧美日韩免费性爱| 制服诱惑亚洲一区二区三区在线观看| 日韩三A大片在线观看| 成人性爱电影一区二区| 日韩大香蕉AV影片| 欧美日韩222| 色97干| 国内91熟女人妻丝袜天天精品视频在线| 俺去啦自拍| 少妇xx精品| 日韩情色AV| 亚洲精品乱码线路中文字幕 | 久久超碰、| 亚洲欧美国产中文视频| 九区国产| 超碰免费人人| 91丨九色丨国产丨人妻在线 | 无码人妻系列少妇| 亚洲色天堂日韩中| 性久久| 麻豆色99999| 色色色色色色色色色色色色色色综合 | 四虎影视欧美| 青青草精品| 探花一区在线| 国产成人精品无码久久| 久久久久久97| 亚洲综合一| 99无码视频| 日韩精品在线放| 日韩三级性| 秋霞视频一区二区| 色就色综合| 国产97在线播放| 熟妇视频一区二区三区在线观看| 狠狠色狠狠色狠狠五月| 中国和日本人色哪个不下载能放| 欧亚第一综合网| 久久香蕉国产传媒一区剧情天美| 综合熟女| 欧美日韩 强奸乱伦| 清纯唯美亚洲另类| 亚洲天天精品| 久久久久久裸体| 久9久9精品| 久久国产精品91| 97操操| 做爱A级亚欧| 激情五月天中文字幕色| 欧美精品激情| 国产尤物在线三区| 国产suv精品一区| 大香蕉在线SuP| 男女91| 有码免费观看| 日本天天吊| 美女诱惑爱爱| 六九九九| 青青草在线视频欧美| 在线视频一区二区传媒| 性色av一区二区| 色姑娘综合网| 97人人草| 啊好爽受不了无码| 熟妇国产免费一区| 国产女生在线| 成人八戒网站| 日韩一级成人毛片免费观看 | 看日韩操逼| 九九碰九九爱97超碰| 欧亚日韩三区| 自拍偷拍国产欧美日韩韩| 麻豆国产尤物AV| 久久久精品视频欧州站| 风流老熟女一区二区三区l| 91 国产丝袜在线放观看| 大香蕉视频啪啪啪啪| 国产 无码 一区二区| 亚洲精品天天影视综合网| 97超碰色色| 色婷婷电影网| 九九九国产| 韩国一级做A片免费的| 成人五月天色网| 熟女激情综合网| 用力操死我| 青青在线视频日韩欧美| 亚洲综合小说另类图欧美视频激情小说色五月天 | 国产一在线观看| 操香逼| 2020久久免费视频| 欧美页片| 狼狼色丁香久久婷婷综合五月| 不卡九肏| 中文字幕亚洲永久精品| 久久熟女嫩草成人片免费 | 九九人妻| 亚洲欧美大| 国内偷拍精品一区二区| 75大香蕉| 欧美午夜一区二区三区| 亚洲九九视频| 亚洲限制级| 中文字幕成人理论在线| 成人青青草原伊人| 亚州成人a∨| 中文字幕乱码人妻二区三区| 欧美激情黑人| 青青草操逼逼视频| 韩国一级婬片A片无码天美| 蜜臀一二三| 五月天激情四射| 91视频精品| 精品视频久久区| 920日本午夜免费| 91在线精品一区二区三区| 中文字幕第23区| 99九九久久| 亚洲熟伦熟妇AV无码春色| 成人久久精品| 婷婷丁香六月天| 国产JDAV无码视频在线观看| 国模91| 欧美图片偷拍| 美女被艹尤物视频| 密乳AV免费观看| 亚洲中文sv| 久久蜜桃综合网| 日韩性爱再线视频| 激情抓乳插进去啪啪啪日韩| 欧美天天综合| 97精品人妻一二三四| 91n美女视频| 玖玖资源综合在线视频| 另类天堂| 中国小夫妻勾搭露脸淫荡对白| 91狼人| 欧美成人性爱视频在线播放| 天天操熟妇| 青青草密桃在线播放| 一级黄色性爱A级片| 91模特在线观看| 欧美最婬乱婬爆婬性视频 | 密臀在线免费观看| 综合自拍| 在线a v| 俄罗斯及免费在线看| 天堂资源站| 国产熟女少妇一区| www.夜夜操| 成人免费看吃奶视频网站| 大色网久久| 欧美72网页| 丰满少妇人妻久久久久久| 国产白嫩漂亮KTV在线| 777超碰| 美女91av| 任你干在线视频| 嗯嗯嗯啊啊啊在线免费观看| 久草福利在线资源站| 天天草天天日| 91日韩网站| 97超碰总站| 久久精品一区| 国产女上位好爽在线| 激情五月天中文字幕色| 超碰97丝袜| 久久精品电影| 美女黄码视频午夜| 97精品第3页| 丁香婷婷激情五月天无毒不卡 | 久久久久久久久九九久孕交| 久久久久久久一级黄色打同平台| 大地资源在线观看中文第二页| 一级特级aaaa毛片免费观看| 乱伦1色页| 熟女这里只有精品6| 男人的天堂2018| 熟女人妻精品一区二区视频| 国产农村妇女毛片精品久久| 在线洲亚线| 黑人粗大V S日韩女优视频| 九九九九免费视频| 欧美专区17页| chaopen97久久| 久久久精| 国产400孕妇孕交群| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 99热在线观看| 男人的天堂亚洲| 九九热精品免费视频| 1956日韩精品| 一区二区三区四区久久视1| 2019天天操天天爽天天拍| 日韩/97| 成人一区二区三区四区| 亚洲熟女偷拍在线观看| 欧美色图 人妻| 久久草视频污视频| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 国内一级精品| 91狠狠综合网| 日韩亚洲国产视频| 国产尹人在线视频免费| 67914亚洲精品| 啊嗯好大视频在线观看| 91国产丝袜美女| 操人妻视频| 久久超碰国产一区二区三区| 亚洲天堂一区| 日本性爱不卡视频| 亚洲熟女国产综合另类| 亚洲精品一卡二卡三卡福利视频网站| 亚洲骚男同com| 久久久人妻| 51久久夜色精品国产麻豆| 亚欧无码在线| 成人久久无码www| 亚洲偷拍欧美激情| 国产一区在线播放| www.大香| 人妻一区二区三区| 超碰97极品9| 大JI巴好深好爽又大又粗视频| 粉嫩av久久一区二区三区| 国产成人精品日本视频| 1二区9| 欧美性性性| 国产精品毛片?v一区二区三区| 欧美性天天影视| surenchaopeng| 日韩一级二级三级| 伊人久久综合精品欧美| 精品久久久久9999| 国产91丝袜 在线播放| 日韩乱伦AⅤ| 99在线精品视频| 无码人妻毛片丰满熟妇精品区| www.av家庭乱伦| 丰满人妻av一区二区三区| 熟女一区二区| 欧美日本成人一区二区| 在免费jIzzjIzz在线视频| 色哟哟国产精品免费网址| 求求你操操我| 日韩免费三级黄片电影| 97超碰69| 精品人妻15区| 人妻少妇久久久| 久久久91福利姬| 久草尤物| 麻豆国产av网| 亚洲人妻中文在线视频| 有码免费观看| 极品销魂美女一区二区| 国产精品久久发布| 人妻少妇精品久久久久久久| 九九av| 9久9久| 五月丁香| 中国少妇啪啪视频| 99精品在线观看| 超碰九7| 日韩精品99999| 97色操| 久久激情网| av中亚| 一区二区 韩日AV| 色路综合| 亚洲精品99| 夜色91| 真实高潮91| 少妇被c 黄 免费观看| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 日本大香蕉综合网红本杳社区| 欧美亚洲中文字幕| 9久久久久| 旡码电影特区| 日韩免费三级黄片电影| 999综合色| 亚洲精品天堂久久A∨51成人漫 | 日韩性爱再线视频| 96麻豆精品一区二区三区| 97香焦色区| yiqicaoav| 97综合国产精品高潮久久| www.亚洲成人一区| 久久久九九| 超碰碰碰碰| 97超碰色| 超碰天天久久79| 婷婷中文网| 嗯嗯不要 视频| 九九九九九九九精品视频| 精品日韩人妻视频| 人妻激情在线视频| 五月丁香六月| www.99中文字幕| www.人人摸在线视频| 精品国产乱码久久久久久影片| 国语对白露脸XXXXXX| 久久一二三四不卡 | 色臀aV| 开心五月深爱五月| 久久久久久电影| 日韩精品亚洲一二三| 东京太热久久久| 91高清无码下载| 九九九九精品| 97超色| 老鸭窝亚洲毛片| 免费啪啪一级视频| 婷婷色综合欧美日韩| 国产精品久久久久久久久久久久久久久久| 另类 日韩 熟女| 亚欧美色| 色欲久久99精品久久| 热久久91婷婷| 加勒比大香蕉视频在线| 亚洲精品一二区| 色香天天| 亚洲少妇视频| 免费成人在线熟妇网| 91久久精品蜜臀| 色99视频| 亞洲久久直播| 在线中文字幕| 97伊人超碰| 精品然女一区二区| 中文高清一区二区的| 久久久久久久久成人av解说| 亚洲天堂在线怕怕视频 | 国产精品久久久久久 百度| 91老熟女| 亚洲蜜臀精品视频久久| 大香蕉在线SuP| 久久伊人青青草| 日本在线不卡123| 亚洲另类在线观看| 5月婷婷6月六月丁香| 大黄片做爱的大的| 国产欧美精选自拍一区| 肉动漫无遮挡h在线观看| 本道综合精品| 密臀在线一区尤物| 亚洲色图A| 亚洲精品蜜桃久久久| 久久久国产护士丝袜美腿一| 色天堂综合| 四虎 精品 WWW| 蜜桃久久综合视频| 日本天天吊| 国产亚洲一黄| 男人亚洲91首页在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日本大香蕉综合网| 白丝AV| 中文久久久| 天天综合中文字幕 91| 好吊色综合| www.男人的天堂| 射久久| 在线播放成人高清免费视频| 欧美成人A√在线一区二区| 立川理惠被中出无码| 东北女人高潮视频| 精品九九九| 国产精品麻豆成人av| 国产精品久久久久久高清无码免费看| 国产一区自拍欧美日韩| 欧美精品日韩久久久九| 中日韩久久久| 五月大香蕉| 嗯嗯嗯嗯啊啊啊好紧好大| 97精品国产97久久久久久户外免费| 激情图片伦理国产一区二区日韩| 99综合自拍| 乱子伦一区二区三区国产精品| 中文精品一区二去| 精品人妻av在线播放| 麻豆啪啪啪视频| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 久久综合精品一区二区三区| 夜夜操中文字幕| 91中出视频| 国产家庭乱伦表演| 秋霞免费AV| AV色天香在线| 97频视在线| 少妇色欲综合网2| 国产精品白丝在线播放| 日韩av一级黄片| 长长久久曰曰夜夜成人网| 无码视频一区二区| 久草精品在线| 在线播放成人高清免费视频| 久草视频分类在线| 日韩/97| 偷拍亚洲情色| 国产美女裸体秘 永久无遮挡| 久久东京国产精品视频| 亚洲精品一二三四区| 黄站在线免费观看| 日韩免费中文字幕视频| www.av在线观看| 日本精品88888888| 欧美激情视频一区二区| 国产精品干干干| 精品久久久久久亚洲| 欧洲亚洲人人爽爽视频| 伊人热综合| 中文字幕一区日韩精| 午夜欧美神马久久久久| 青青草久草| 艹比视频国产精品| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 天堂av2019| 97在线观看免费视频l| 97久久网| 日本久久网| 亚洲欧洲日产国产综合网| 九色黄站| 中文字幕在线免费观看视频| 91伊人久久在线| 三级日韩一区二区三区| 欧美淫穴| 高清孕妇孕交 交| 亚洲古典另类欧美在线| jiujiujiujingpin| 日本不卡高清视频| 麻豆国产精品午夜视频| 69人妻精品一区二区绯色| 精品无av| 亚洲欧美日韩综合在线尤物| AV老汉| 人人干黄色| 亚洲最大黄网| 一区二区三区四区在线不卡| 国产精品视频白浆免费| 啊啊啊啊啊舒服| 免费一级视频特黄色大片| 欧美玖玖爱免费玖玖| 九九精品99| 精品久久久不卡一区二区| 日韩无码精品综合久久| 欧美精品丝袜久久久中文字幕| 在线视频 亚洲精品| 欧洲综合视频| 99久久精品国产系列| 久久人人妻| 国产精品午夜福利亚洲综合网| 久久久久性熟视频| 日韩成人高清一区二区| 四虎国产成人精品免费一女五男| 岛国在线国产| 91路www| 伊人五月天| 欧美精品系列| 欧美亚洲综合色| 亚洲第一页第二页激情| 乱码熟妇人妻久久久| 欧美性生活男人的天堂| 91处女视频在线观看| 国产一区二区a毛片| 色原狠狠天天天| 日日夜夜天天| 草草草视频在线免费看| 日韩精品大香蕉伊人在线| 性爱精品一区| 国产精品不卡少妇白| 97干色天堂| 911av网站免费观看| 麻豆久久久久久久久丝袜 | 日韩福利综合一区| 亚洲和欧美裸体美女双飞视频| 91高清无码下载| 香蕉综合网| 美女主播色欲91抠b在线播放| 亚洲高清无码在线桃色| 色吧91| 日韩 成人 有码| 婷婷深爱五月| 欧美日韩黄片精品在线| 日本高清视频在线观看黄已三辽| 67194无码不卡| 自拍偷拍 高清无码| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 伊人色综合网电影| jazzjazz国产精品麻豆| 长久操视频| 天美精品av| 亚洲一区二区三区中文字幕| 综合亚洲欧美| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 亚洲性刺激| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 啊a一区在线| 天堂中文日本在线观看| 国产一区二区二区按摩精品啪视频| 欧洲亚洲人人爽爽视频| 亚洲男人天堂网久久| av日韩手机在线影视| 91bbb| 伊人午夜福利视频| 蜜臀99999| 日韩精品99999| 久久久久久国产无码精品| 日韩一级性爱无码| 9久久精品| 久久久18禁| 亚码激情| 五月婷婷五月天| 嗯啊抽插大香蕉网页| 操逼无码操逼| 91麻豆天美| 久久线上视频免费看| 淫穴高潮色图| 99精品高潮| 校园春色综合香蕉| 91撸色网 玖玖网 欧美| 国产91美女高潮| 一区二区三区精品黑丝白丝酒店对鸡| 97国产高清视频在线观看| 女人久久久| 欧美精品97| 精品人妻一区二区三区不卡断| 欧美性爱一区二区三区四区 | 九九九九免费高| 亚洲欧美综合图片| 午夜福利在线视频1000| 嗯嗯啊啊视频在线看| 澳门特级毛片免费观看| 亚洲麻豆av一区二区| 国语精品对白| 亚洲成人在线乱码色午夜| 91欧洲入口| 欧美高潮| 日日不卡av| 午夜男人的天堂| 久久青青草在线视频| 97视频免费播放| 久久香蕉国产线看观看亚洲女人 | 亚洲日本韩国在线| 亚洲国产日韩欧美熟妇在线| h无码动漫在线观看| 久久精品国产72国产精品福利| 亚洲熟女性高潮久久久| 久久久久亚洲av综合波多野制衣| 黄页网站免费高清在线观看| 91亚洲色人| 激情视屏国产乱伦强奸| 美女一区二区国产精品| 99热只有这里有精品| 婷婷五月天社区| 超91综合网| 99热 按摩 日韩| 天天超级碰碰碰| 欧美在线|亚洲| 女生久久网| 天天上日日上日韩精品| 国产h片在线观看视频| 亚洲av淫乱| 成人电影一区| 久久久性爱视频| 亚洲drav色图| 性猛交| 黑人免费福利视频| 国产精品麻豆免费视频| 伊人黄色视频免费观看| 极品极品色影院| 久久偷拍人| 2020中文字幕在线| 国产91亚洲精品一区二区三区| 欧亚性爱在线视频| 日本三级韩三级99久久| 日韩懂色网| 久久9精品网站| 人人弄人人摸| 九九探花视频在线观看| 人妻在线视频| 91黑丝少妇| 十八禁电影伊人网| 91精品人妻偷情| 免费操逼视频下载| 69综合网| 色欧美在线| 欧美传媒| 一区二区三区精品黑丝白丝酒店对鸡 | 久久久免费的精品| 女优视频第10页| 日本精品88888888| 极品少妇久久久| 国产亚洲欧美每日在线| 中文字幕老熟妇黄色视频| 欧美后入视频| 国内亚洲高清无码| 亚洲乱熟女一区二区三区大香蕉| 97中文天堂| 久草看看看| 白天啪啪晚上啪啪视频| 91色综合激情| 欧色网址| 国产特级毛片AAAAAA高潮流水 | 任你草| 九九热午夜欧亚国产视频| 97在线观看| h在线看免费版在线看| 日韩精品大香蕉伊人在线| 91黑丝在线| 美女刺激久久国产欧美| 久久华人网| 欧美成人一级免费电影| 九热大香蕉| 国产AAAAAABBBBB| 一本道综合色图| 九九超碰综合网| 蜜乳性色无码专日粉嫩骚逼AV| 96爱综合| 国产福利电影| 国产欧美一区二区| 久久神马| 后入 亚洲 美女 射| 亚洲在线观看| 91人妻素女| 青青三级视频| 日本激情免费大片| 9精品在线| 成人av影院在线观看| 一区,二区,三区网站| 国产精品一二三区18| 2001天天操| 亚洲欧美啪啪| 97久久超碰| 全国男人天堂网| 99久久婷婷国产综合精品草原| 97欧美久久久久久久| 男女91| 97天堂| 国产传媒1234区| 69XX一中文字幕人妻91| 嗯嗯啊啊好疼| 岛国视频一二三区| 蜜臀AV一区二区三区激情综合| 四虎国产精品永久在线囯在线| 91女网站| 操逼www.| 99精品丰满人妻无码| 五月大香蕉| 中国特猛少妇色xxx| 色女网日韩| 久久久久久久久久久免费精品| 亚洲综合色男人网| 国产一区二区三三视频| 九九热精彩视频| av一区二区三区 中文| 国产精品农村妇女| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 国产网红精品| 国产中午字一暮区| 啪啪视频亚洲第一| 漂亮人妻被强中文字幕hd| 首页亚洲国产高跟丝袜诱惑视频| 大二网站亚洲| 欧美日韩国产人人| 防屏蔽在线视频| 久久精品国产亚洲AV清纯| 91影视亚洲| 大香蕉伊人久久| 成人免费看吃奶视频网站| 嫩草 我啊~嗯~在线| 国产家庭乱伦网址| 91在线视频国产网站| 91久久午夜无码鲁丝片久久人妻| 久久久久国产精品片区无码直播| 国产精品乱码久久久久久久久| 日韩在线人妻网站| 国产精品探花在线| 试看日韩黄片| 日韩不卡一二三四| 欧美九九爱| jk白丝没脱就开始啪啪| 怡红院亚洲怡春院av| 亚码激情| 国产极品美女高潮无套在线观看| 欧美天天射| 九九九九精品一区| 日本一区二区三区精品| 国产精品成人无码av无码免费| 狠狠婷婷亚洲中文综合久久| 精品无码产区一区二| 色诱中文字幕| 午夜免费福利视频一区| 天天艹天天日| 亚洲欧美小说| 1024精品在线| 超碰98综合网| 中文字幕55555| 国产无马av| 欧美日韩香蕉| 日本操逼视频不卡直接放| 久操97| AV天黑人| 青青操97| 97国产色综合| 亚洲精品视频在线播放| 手机在线人成免费视频| 日本成人免费一区二区三区| 天美传媒婬乱在| 亚洲极品| 人乳av| 亚洲人妖网| 久久111| 亚洲综合色男人网| 夜夜操二区| 亚洲AV无码国产成人| 亚洲第2页| 性暴力欧美猛交在线直播| 久久久久久网址| 九九九九九精品视频| 狠狠入| 黑人粗大V S日韩女优视频| 精品人妻一区二区三区视频| 男人下部插入女人下部| 国产视频一区二区三区久久亚洲天堂 | 欧美视频激情久久久久久| 性站 | 久久熟女久| 丁香五月天久久精品视频一区二区三区| 大香蕉伊人网WWWn0n| 日本人体九九九九九九| 超碰成人免费| 99自拍视频| 中文字幕 码精品视频网站| 国产超碰| 日本成人A片网站| 国产网红精品| 一级婬片120分钟试看| 久久透逼视频| 99re免费| 亚洲欧洲无码bt精品合集| 啊啊啊免费| 亚洲熟女乱色一区二区三区| 美欧色综合| 成年人网站在线免费观看| 麻豆成人影音在线| 超碰精品日韩欧美国产| 五月天亚洲色图| 一级做a爰片性色毛片久久| 亚洲欧美人妻| 中文字幕一区二区三区字幕| 色色网91| 不卡啪啪视频| 亚洲av影院在线观看| 婷婷久久久| 中文久久爆乳| 日本在线不卡123| 日韩乱码Av| 天堂麻豆天美| 一区二区播放| 欧洲人妻视频| 国产精品第一区第一页| 懂色av色欲av蜜臀av| AV九九| 91久精品| 激情情色五月天| 操熟女91| 国产一区自拍欧美日韩| 久久精品国产亚洲AV高级北京| 欧美在线视频99| 午夜天天碰综合视频| 嫩草黄页| 亚洲色阁| 久久久无码av精| 99操| 国产久久男人天堂| 欧美激情区| 郑州宾馆老熟女露脸啪啪| 操高情无码| 大香蕉在线视频15| 久久久国产精品亚洲精品| 一本色道久久综合精品婷婷| 精品国产无码中文| 超碰在线人妻| 日本中文字幕熟妇| 美女久久久| 777奇米影视777四色| 欧美第一页性| 日韩欧美麻豆 | 激情综合久久| 亚洲黄色网址| 视频不卡中文字幕| 曰韩av中文字幕专区| AV天堂电影网| 欧美不在线| 99久久精品无码一区二区| 区一二区日韩亚洲乱码av电影| 国产九九九九九九| 无码人妻精品一区二区中文| 人摸人人操人| 性性久久| 久久欲| 9久超碰| 男人的天堂VA| 国产白嫩漂亮KTV在线| 国产亚卅97| 一区二区影视| www.久久| 99在线啪| 婷婷激情五月天小说网| 大香蕉伊人色偷偷在线| 96超碰网| 99色在线视频| 亚洲色图第一页| 岛国AB视频| 成人天天看站长推荐| 欧美高清18A片| 亚洲中文字幕噜噜噜久久久| 91欧美网| 国产成人无码久久精品| 人人摸人人舔一区二区| 欧美性爱三区二区| 亚洲自拍一区夜夜操| 亚洲国产av中文字幕久久| 亚洲人成色9999精品久久| 亚洲欧美人妻| 免费看毛片操穴| 欧美性爱一区二区| 99热综合| 日本一级真人黄色性爱视频| 啊啊啊啊视频免费| 99999re| 四虎 精品 WWW| 国产深夜福利| 丝袜喷水在线| 人人操人人爽人人操人人| 在线观看黄色电话| 日本97久久| 久久久久国产精品喷潮免费观看臀 | 风流老熟女一区二区三区l| 欧洲射精91| 日韩福利综合一区| 东北女人的毛片| 日韩国产精品人妻无码久久久| 婷婷五月天影院| 日日骚中文字幕| 亚洲中文字幕精品久久久久久直播| 2019天天操天天爽天天拍| 日韩熟女操逼| 蜜臀99999| 亚洲成人黄色在线观看| 人人综合| 人人妻人射| 国产91美女视频| h在线看免费版在线看| 小说区 图片区色 综合区| 小明看看网址| 精品区国产区一区二区三区| 天天操妹子| 激激五月| 一本一道波多野毛片中文在线| 久久爱超碰网| 久久精视频美日韩在线视频| 九九九国产| 人妻密肉在线观看| 精品国产乱码久久久久久口爆网站| 99RE在线视频精品,这里只有精品| 在线精品福利免费播放| 亚洲日韩电影| 国产白嫩精品久久| 国产亚洲日本精品在线| 欧美啪啪啪91| 欧美性爱一区| 五月丁香六月婷| 强奸抽插av| 麻豆区久久久久亚| 屌色在线97视频| 色天使亚洲综合在线观看| 99re6在线视频精品免费完整版安卓版| 蜜桃av综合网发布| 欧美亚洲图片| 欧美色图片欧美色图| 红杏大香蕉| 操逼片中文| 亚洲熟女乱色一区二区三区| 长久操视频| 三上制服丝AV| 十八禁啪啦拍视频无遮挡| 无码区蜜乳| 射综合网| 九九九九九九九九九九九九九九九女| 黑操B| 中文字幕人成乱码熟女香港| 国产馆| 欧美亚洲清纯| 一二三啪啪专区| 色玖玖| 亚洲精品中文字幕一区在线视频| 后入式免费视频| 国产日韩中文字幕欧美| JULIA人妻风俗店中出电影| 婷婷精品视频| 久久久久久久国产视频| 欧美一二三| 九九九九九九九九九国产精品 | 人人艹亚洲| 亚洲高清综合网| 日韩BBN| 无码男人天堂| 97精品第3页| 欧美狠狠操| 女优视频第10页| 亚洲免费人妻在| 日本色色视频网站| 91亚洲综合在线| 91成人亚洲色图| 色色色色色色色色综合| www.四虎在线| 三级三级三级日本99| 久久久久国产精品片区无码直播 | 啊啊啊啊操死我| 少妇高潮流水av免费| 91欧美网| 欧美成97爱| 日比av无码| 精久久久| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 懂色AV蜜臀无码精品APP| se吧提供91精品国产91久久久久久| 美女被啪到深处抽搐视频| 91天天综合在线观看| 亚洲中文字幕久久无码精品| 欧美特黄视频网站| 久九9精品| 999久久芭蕾| 一区二区三区麻豆| 精品人妻一区二区蜜桃视频| 九九九偷拍| 亚洲日本天堂| 亚洲男人的天堂网| 欧美综合传媒| 智利AV在线网| 精品夜夜澡人妻无码AV| 91天堂网| 69天堂| 国产精品4p在线观看|