国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL流轉工具Maxwell的代碼改造和優化小結

數據庫 MySQL
Maxwell是開源產品,相比Canal的體量也小很多,綜合考慮下,在短期內選擇了Maxwell.從快速上手到功能支持,算是一個總體支持還不錯的產品,也讓技術調研和迭代進度進展相對快了很多。

 [[347889]]

Maxwell是開源產品,相比Canal的體量也小很多,綜合考慮下,在短期內選擇了Maxwell.

從快速上手到功能支持,算是一個總體支持還不錯的產品,也讓技術調研和迭代進度進展相對快了很多。

一般說要比較,基本都會拿出這幅圖來(數據帶有主觀特點,僅供參考),因為考慮到bootstrap是個硬性需求,所以這部分的功能考量也是一個重要權衡。

 

最近在做數據庫到大數據流轉的過程中發現了Maxwell的一些問題和改進點:

1)Maxwell的服務管理模式目前只支持start模式,如果要停止只能采用手工kill的方式,相對粗暴一些,當然和作者交流,可以使用信號處理的方式來間接實現。

2)Maxwell的核心配置是對于同步對象的過濾,可以支持正則等模式,如果過濾規則較為復雜,或者后期不斷的調整,每次調整都需要重新啟動Maxwell服務,沒有類似reload的模式。

3)對于DDL變更,如果Maxwell的初始化已完成,服務已啟動,在后續創建一張表的時候,Maxwell會把變更記錄至`schemas`表中維護版本變更記錄,在已有的元數據表中`tables`和`columns`里面就沒有這些信息了,對于后端的服務解析表結構會帶來一些偏差(DDL的變更配置會有相應的JSON)

1.問題定位

這些問題算起來大多是建議,不算是致命問題,所以整體的進度依然可以繼續推進,但是最近在做了幾張大表的同步之后發現了一些數據問題。

1)bootstrap的時間比較長,查看Maxwell相關監控,整體的數據吞吐量在800條/秒左右,好像是達到了整個同步的瓶頸,同步一張200多萬數據的表需要1個小時左右,相對比較長,我們在近期的測試中,幾張千萬級的大表如果串行初始化,差不多得2-3個小時,實在是太長了。

2)同步數據的時間字段值存在差異,這也是在中端(maxwell規劃為中端服務)和后端(Flink,Kudu規劃為后端)在做數據比對中發現的,bootstrap的數據比對結果幾乎沒有相同的,也就意味是bootstrap在數據方面存在一些潛在問題,所以整個事情輪盤到了Maxwell的bootstrap部分。

查看代碼邏輯,著實讓我一驚,這個問題目前僅在bootstrap的環節出現,比如數據的時間字段值為:

 

但是經過邏輯處理后,會有時區的計算,會自動補上時區的差異。

現在的問題已經不是初始化帶來的性能隱患,而是數據質量出現了侵入性,導致數據看起來錯亂。

對于這個問題,分析的重點就是時區的處理差異,本來想這個改動應該很小,沒想到調試和環境集成著實花了不少功夫。

2.問題修正

對于時區的數據差異,主要在于datetime數據類型存在時區差異,目前差距在13個小時。

查看Maxwell的代碼類SynchronousBootstrapper:

 

經過調試,需要改動的代碼邏輯范圍是基于函數setRowValues:

 

可以修改為:

 

改動之后,整個bootstrap的邏輯經過調試和反復測試就正常了。

3.性能問題的取舍和修正

當然在這個之外,也做了一些細小的改進。

第一個問題就是bootstrap的性能問題,之前看似乎是有瓶頸,吞吐量在800左右就上不去了,對此我做了如下的改進:

1).bootstrap的一個基本原理就是select * from xxxx order by id;這種使用模式,如果表數據量比較大,其實order by的部分看起來是走了主鍵,該子句會強制走全索引掃描,但是整體的效果反而不是全表掃描,所以我就干脆去除了邏輯中的order by子句。

整個邏輯的改造也很輕量:

  1. private ResultSet getAllRows(String databaseName, String tableName, Table table, String whereClause, 
  2.         if ( pk != null && !pk.equals("") ) { 
  3.             sql += String.format(" order by %s", pk); 
  4.         } 

2).去除了寫入數據后的sleep 1毫秒

進一步分析代碼,發現bootstrap中吞吐量的瓶頸是其中一個詭異的sleep 1的處理,根據初步分析,可能考慮到bootstrap的任務會產生大量數據,對于帶寬和負載壓力較大,通過sleep的方式能夠做到降速,整體可控。

另外對于bootstrap的日志統計中會包括同步的數據條數,這個指標值目前的依賴度不高,而且數據校驗的工作目前會先停止Slave再進行數據比對

性能提升和改進,在3-5倍左右,所以這個部分的邏輯我們可以根據實際情況取舍,在我們的流傳設計中,數據都是基于Slave端進行流轉的,所以不會對主庫造成沖擊,改動的這個部分的邏輯也很輕巧,注釋掉sleep(1)即可。

  1. public void performBootstrap(BootstrapTask task, AbstractProducer producer, Long currentSchemaID) throws Exception { 
  2.                producer.push(row); 
  3.                Thread.sleep(1); 
  4.                ++insertedRows; 

改動后經過測試和對比,發現性能好了很多,最多的時候能有6000多,同樣的初始化不到15分鐘左右就全部搞定了。

 

 

這樣一些細小的改進也給我們帶來了一些成就感,后續的數據同步規模繼續擴大,也沒有再反饋過數據質量的問題,當然在這個基礎上還有一些工作需要細化。

4.后續對于bootstrap方向的改進

1)使用分片的思路來完善bootstrap

提高數據提取的效率,對于千萬級以上的大表數據抽取,可以按照區間分段來提取(需要考慮到數據的變更和寫入的影響),目前的邏輯過于僵硬。

 

  1. private ResultSet getAllRows(String databaseName, String tableName, Table table, String whereClause, 
  2.                                 Connection connection) throws SQLException { 
  3.        Statement statement = createBatchStatement(connection); 
  4.        String pk = table.getPKString(); 
  5.        String sql = String.format("select * from `%s`.%s", databaseName, tableName); 
  6.        if ( whereClause != null && !whereClause.equals("") ) { 
  7.            sql += String.format(" where %s", whereClause); 
  8.        } 
  9.        if ( pk != null && !pk.equals("") ) { 
  10.            sql += String.format(" order by %s", pk); 
  11.        } 
  12.        return statement.executeQuery(sql); 
  13.    } 

2)數據字典索引優化

Maxwell數據字典的優化,目前的數據字典中,部分SQL執行頻率較高,但是從數據庫層面來看是全表掃描,這些細節的地方還需要進一步調整。

比如如下的SQL語句:

  1. >>explain select * from bootstrap where is_complete = 0 and client_id = 'dts_hb30_130_200_maxwell003' and (started_at is null or started_at <= now()) order by isnull(started_at), started_at asc, id asc

基于業務場景的改進和調整,也讓我們通過真實場景的落地,更好的擁抱開源,并在一定程度上能夠回饋和反哺。

本文轉載自微信公眾號「楊建榮的學習筆記」,可以通過以下二維碼關注。轉載本文請聯系楊建榮的學習筆記公眾號。

 

責任編輯:武曉燕 來源: 楊建榮的學習筆記
相關推薦

2016-05-06 10:02:33

CSSJavaScript工具

2012-03-29 13:56:58

HBase數據庫

2021-01-31 23:58:04

MySQL狀態表數據源

2011-03-01 16:08:46

2021-10-26 10:43:37

對象存儲影像

2022-08-01 08:04:58

MySQL客戶端字符

2009-11-13 13:05:19

linux sar工具命令

2020-08-13 08:34:10

MySQL數據DTS

2017-05-12 09:24:21

Python代碼Logger

2024-02-22 10:27:00

Python開發

2011-08-02 10:13:30

Java工具

2023-08-30 11:03:47

Java工具

2018-06-07 08:54:01

MySQL性能優化索引

2024-09-26 08:36:11

JavaScript性能優化

2011-05-05 09:54:05

靜態代碼

2021-02-05 05:28:31

恢復性能優化

2010-11-25 10:34:42

MySQL查詢類

2018-03-13 14:20:24

數據庫MySQL調試和優化

2013-06-05 09:51:04

2009-02-20 11:05:58

PHP優化高效提速
點贊
收藏

51CTO技術棧公眾號

国产亚洲精品激情久久| 国产欧洲精品视频| av每日在线更新| 久久久国产综合精品女国产盗摄| 99国产在线观看| 精品视频久久| 日韩电视剧免费观看网站| 2021av在线| 色综合久久天天| 91精品国产一区二区三密臀| 久久久国际精品| 男人天堂网视频| 成人精品视频一区二区三区 | 91在线网站| 中文字幕乱码日本亚洲一区二区| 日韩精品久久一区二区| 久久精品久久久精品美女| 日本高清不卡一区二区三| 99国产精品99久久久久久粉嫩| 91丝袜美腿美女视频网站| 久久性感美女视频| 亚洲自拍偷拍在线| 亚洲黄页一区| 欧美日韩在线一二三| 亚洲在线播放| 亚洲视频导航| 成人h精品动漫一区二区三区| av在线播放亚洲| 久久免费视频色| 国产羞羞视频在线观看| 亚洲综合色丁香婷婷六月图片| 一二三四社区在线视频| 色哟哟欧美精品| 清纯唯美亚洲色图| 欧美优质美女网站| 日本片在线看| 亚洲视频自拍偷拍| 国产精品毛片无码| 黄色网页免费在线观看| 91福利区一区二区三区| 91精品婷婷色在线观看| 国产一区二区三区三区在线观看| 精品国产综合| 日韩av手机版| 国产精品美女久久久| 欧美一区二区女人| 天堂男人av| 91麻豆精品在线观看| 波多野结衣家庭教师视频| ...xxx性欧美| 噼里啪啦在线中文观看| 韩国一区二区电影| 久久婷婷一区| 四色成人av永久网址| 91国模大尺度私拍在线视频| 95精品视频| 日本中文字幕不卡免费| 爱福利在线视频| 国产精品久久久久久久7电影 | 国产精品一区二区久久精品爱涩| 女人被爽到呻吟gif动态图下载| 欧美理论电影在线观看| 最新日韩精品| 久久久天堂国产精品| 天天综合日日夜夜精品| 亚洲经典视频| 国产精品久久成人免费观看| 精品国产一区二区三区久久久狼 | 爱啪啪综合导航| 欧美激情综合亚洲一二区| 久久er精品视频| 成年人福利视频| 欧美一区永久视频免费观看| a级片免费在线观看| 国产精品三级美女白浆呻吟 | 亚洲天堂免费在线| 国产欧美一级| 黄网站色大毛片| 国产精品国产三级欧美二区| 日韩限制级电影在线观看| 黑人久久a级毛片免费观看| 久久久999免费视频| 国产精品v片在线观看不卡| 日本在线啊啊| 国产精品午夜一区二区欲梦| 国模一区二区三区白浆| 久久久久久久久亚洲精品| 日韩日本欧美亚洲| 亚洲一区欧美激情| 全部孕妇毛片丰满孕妇孕| 在线视频国产日韩| 久久裸体视频| 三级视频网站在线| 国内揄拍国内精品| www.欧美色图| 91www在线| 国产区一区二区三区| 国产精品日韩精品欧美在线| 91精品论坛| 欧美韩国日本精品一区二区三区| 亚洲精品久久久蜜桃| 亚州精品国产| 中文字幕一区二区三区5566| 欧美视频在线观看一区| 精品国产一区二区三区| 日本888xxxx| 日韩亚洲国产中文字幕| 麻豆中文一区二区| 毛片在线播放a| 99电影网电视剧在线观看| 午夜影视日本亚洲欧洲精品| 亚洲天堂日韩在线| 国产日韩在线| 91tv亚洲精品香蕉国产一区7ujn| 久久久久久夜精品精品免费| 国产成人精品一区二区三区在线| 青少年xxxxx性开放hg| 亚洲精美色品网站| 国产一区在线观看视频| 一二三四视频在线中文| 在线观看18视频网站| 亚洲三级免费看| 成人a免费在线看| 天天综合91| 黑人粗进入欧美aaaaa| 欧美激情奇米色| 国产精品久久精品日日| jizz18欧美18| 妞干网在线视频| 欧美中文在线观看| 亚洲国产欧美一区二区三区丁香婷| 女人av一区| 三级视频网站在线| 99久热re在线精品视频| 欧美日韩中字一区| 日韩和欧美的一区| 91久久国产综合久久91猫猫| 男人添女人下部高潮视频在观看| 蜜臀久久99精品久久久久久宅男 | 99久热re在线精品视频| 91久久精品一区二区三区| 欧美人成网站| 精品孕妇一区二区三区| 日韩中文一区二区三区| 精品视频在线播放色网色视频| 风间由美性色一区二区三区| 性欧美video另类hd尤物| 成人免费网站视频www| 国产这里只有精品| 欧美日韩精品欧美日韩精品一 | 黄色网zhan| 久久午夜a级毛片| 亚洲欧洲在线观看av| 日韩欧美一区二区三区在线视频 | 蜜臀av.com| 欧美俄罗斯性视频| 亚洲在线成人精品| 极品中文字幕一区| 日韩激情电影免费看| 日本成人在线免费视频| 日本精品性网站在线观看| 在线观看亚洲精品视频| 美女诱惑一区二区| 国产日韩在线观看视频| 22288色视频在线观看| 久久综合久久综合这里只有精品| 亚洲欧美日韩综合| 亚洲人精品午夜| 一区免费视频| 欧美成人app| 美臀av在线| 五月天男人天堂| 欧美一区二区三区免费视| 欧美三级中文字幕在线观看| 激情成人综合网| 国产欧美一区二区精品久久久| 婷婷免费在线视频| 97在线国产视频| 国产精品视频久久久| 亚洲福利在线视频| 一区二区欧美精品| 国产精品一区二区在线播放 | 日本成a人片在线观看| 日韩欧美精品免费| 91精品久久久久久久久久久久久| 精品久久久久久久久久久久久久久久久| 26uuu国产日韩综合| 亚洲网站啪啪| 91夜夜蜜桃臀一区二区三区| 国产美女视频一区二区三区| 日韩中文字幕在线视频观看| 国产在线播放91| 日韩在线免费av| 欧美日韩亚洲综合一区二区三区| 久久久午夜电影| 日本不卡的三区四区五区| 成人毛片在线| www 久久久| 福利网站在线观看| 欧美日韩国产中文字幕在线|