精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

給你10億數(shù)據(jù),如何做遷移?

開發(fā) 前端
某次金融系統(tǒng)遷移項目中,原計劃8小時完成的用戶數(shù)據(jù)同步遲遲未能完成。24小時后監(jiān)控警報顯示:由于全表掃描SELECT * FROM users導(dǎo)致源庫CPU幾乎熔毀,業(yè)務(wù)系統(tǒng)被迫停機(jī)8小時。

前言

某次金融系統(tǒng)遷移項目中,原計劃8小時完成的用戶數(shù)據(jù)同步遲遲未能完成。

24小時后監(jiān)控警報顯示:由于全表掃描SELECT * FROM users導(dǎo)致源庫CPU幾乎熔毀,業(yè)務(wù)系統(tǒng)被迫停機(jī)8小時。

這讓我深刻領(lǐng)悟到——10億條數(shù)據(jù)不能用蠻力搬運(yùn),得用巧勁兒遞接!

今天這篇文章,跟大家一起聊聊10億條數(shù)據(jù),如何做遷移,希望對你會有所幫助。

一、分而治之

若把數(shù)據(jù)遷移比作吃蛋糕,沒人能一口吞下整個十層蛋糕;

必須切成小塊細(xì)嚼慢咽。

避坑案例:線程池濫用引發(fā)的血案

某團(tuán)隊用100個線程并發(fā)插入新庫,結(jié)果目標(biāo)庫死鎖頻發(fā)。

最后發(fā)現(xiàn)是主鍵沖突導(dǎo)致——批處理必須兼顧順序和擾動。

分頁遷移模板代碼:

long maxId = 0;  
int batchSize = 1000;  
while (true) {  
    List<User> users = jdbcTemplate.query(  
        "SELECT * FROM users WHERE id > ? ORDER BY id LIMIT ?",  
        new BeanPropertyRowMapper<>(User.class),  
        maxId, batchSize  
    );  
    if (users.isEmpty()) {
        break;  
    }
    // 批量插入新庫(注意關(guān)閉自動提交)  
    jdbcTemplate.batchUpdate(  
        "INSERT INTO new_users VALUES (?,?,?)",  
        users.stream().map(u -> new Object[]{u.id, u.name, u.email}).collect(Collectors.toList())  
    );  
    
    maxId = users.get(users.size()-1).getId();  
}

避坑指南:

  • 每批取遞增ID而不是OFFSET,避免越往后掃描越慢
  • 批處理大小根據(jù)目標(biāo)庫寫入能力動態(tài)調(diào)整(500-5000條/批)

二、雙寫

經(jīng)典方案是停機(jī)遷移,但對10億數(shù)據(jù)來說停機(jī)成本難以承受,雙寫方案才是王道。

雙寫的三種段位:

  1. 青銅級:先停寫舊庫→導(dǎo)數(shù)據(jù)→開新庫 →風(fēng)險:停機(jī)時間不可控
  2. 黃金級:同步雙寫+全量遷移→差異對比→切流 →優(yōu)點(diǎn):數(shù)據(jù)零丟失
  3. 王者級:逆向同步兜底(新庫→舊庫回寫),應(yīng)對切流后異常場景

當(dāng)然雙寫分為:

  • 同步雙寫
  • 異步雙寫

同步雙寫實(shí)時性更好,但性能較差。

異步雙寫實(shí)時性差,但性能更好。

我們這里考慮使用異步雙寫。

異步雙寫架構(gòu)如圖所示:

圖片圖片

代碼實(shí)現(xiàn)核心邏輯:

  • 開啟雙寫開關(guān)
@Transactional  
public void createUser(User user) {  
    // 舊庫主寫  
    oldUserRepo.save(user);  
    // 異步寫新庫(允許延遲)  
    executor.submit(() -> {  
        try {  
            newUserRepo.save(user);  
        } catch (Exception e) {  
            log.error("新庫寫入失?。簕}", user.getId());  
            retryQueue.add(user);  
        }  
    });  
}
  • 差異定時校驗(yàn)
// 每天凌晨校驗(yàn)差異數(shù)據(jù)  
@Scheduled(cron = "0 0 3 * * ?")  
public void checkDiff() {  
    long maxOldId = oldUserRepo.findMaxId();  
    long maxNewId = newUserRepo.findMaxId();  
    if (maxOldId != maxNewId) {  
        log.warn("數(shù)據(jù)主鍵最大不一致,舊庫{} vs 新庫{}", maxOldId, maxNewId);  
        repairService.fixData();  
    }  
}

三、用好工具

不同場景需匹配不同的工具鏈,好比搬家時家具用貨車,細(xì)軟用包裹。

工具選型對照表

工具名稱

適用場景

10億數(shù)據(jù)速度參考

mysqldump

小型表全量導(dǎo)出

不建議(可能天級)

MySQL Shell

InnoDB并行導(dǎo)出

約2-4小時

DataX

多源異構(gòu)遷移

依賴資源配置

Spark

跨集群大數(shù)據(jù)量ETL

30分鐘-2小時

Spark遷移核心代碼片段:

val jdbcDF = spark.read  
    .format("jdbc")  
    .option("url", "jdbc:mysql://source:3306/db")  
    .option("dbtable", "users")  
    .option("partitionColumn", "id")  
    .option("numPartitions", 100) // 按主鍵切分100個區(qū)  
    .load()  

jdbcDF.write  
    .format("jdbc")  
    .option("url", "jdbc:mysql://target:3306/db")  
    .option("dbtable", "new_users")  
    .mode(SaveMode.Append)  
    .save()

避坑經(jīng)驗(yàn):

  • 分區(qū)數(shù)量應(yīng)接近Spark執(zhí)行器核數(shù),太多反而降低效率
  • 分區(qū)字段必須是索引列,防止全表掃

四、影子測試

遷移后的數(shù)據(jù)一致性驗(yàn)證,好比宇航員出艙前的模擬訓(xùn)練。

影子庫驗(yàn)證流程:

  1. 生產(chǎn)流量同時寫入新&舊雙庫(影子庫)
  2. 對比新舊庫數(shù)據(jù)一致性(抽樣與全量結(jié)合)
  3. 驗(yàn)證新庫查詢性能指標(biāo)(TP99/TP95延遲)

自動化對比腳本示例:

def check_row_count(old_conn, new_conn):  
    old_cnt = old_conn.execute("SELECT COUNT(*) FROM users").scalar()  
    new_cnt = new_conn.execute("SELECT COUNT(*) FROM new_users").scalar()  
    assert old_cnt == new_cnt, f"行數(shù)不一致: old={old_cnt}, new={new_cnt}"  

def check_data_sample(old_conn, new_conn):  
    sample_ids = old_conn.execute("SELECT id FROM users TABLESAMPLE BERNOULLI(0.1)").fetchall()  
    for id in sample_ids:  
        old_row = old_conn.execute(f"SELECT * FROM users WHERE id = {id}").fetchone()  
        new_row = new_conn.execute(f"SELECT * FROM new_users WHERE id = {id}").fetchone()  
        assert old_row == new_row, f"數(shù)據(jù)不一致, id={id}"

五、回滾

即便做好萬全準(zhǔn)備,也要設(shè)想失敗場景的回滾方案——遷移如跳傘,備份傘必須備好。

回滾預(yù)案關(guān)鍵點(diǎn):

  1. 備份快照:遷移前全量快照(物理備份+ Binlog點(diǎn)位)
  2. 流量回切:準(zhǔn)備路由配置秒級切換舊庫
  3. 數(shù)據(jù)標(biāo)記:新庫數(shù)據(jù)打標(biāo),便于清理臟數(shù)據(jù)

快速回滾腳本:

# 恢復(fù)舊庫數(shù)據(jù)  
mysql -h舊庫 < backup.sql  

# 應(yīng)用Binlog增量  
mysqlbinlog --start-positinotallow=154 ./binlog.000001 | mysql -h舊庫  

# 切換DNS解析  
aws route53 change-resource-record-sets --cli-input-json file://switch_to_old.json

總結(jié)

處理10億數(shù)據(jù)的核心心法:

  1. 分而治之:拆解問題比解決問題更重要。
  2. 逐步遞進(jìn):通過灰度驗(yàn)證逐步放大流量。
  3. 守牢底線:回滾方案必須真實(shí)演練過。

記住——沒有百分百成功的遷移,只有百分百準(zhǔn)備的Plan B!

搬運(yùn)數(shù)據(jù)如同高空走鋼絲,你的安全保障(備份、監(jiān)控、熔斷)就是那根救命繩。

責(zé)任編輯:武曉燕 來源: 蘇三說技術(shù)
相關(guān)推薦

2025-07-03 08:21:16

2021-01-26 07:11:26

Redis數(shù)據(jù)同步數(shù)據(jù)遷移

2020-02-29 15:51:32

數(shù)據(jù)安全防護(hù)管理

2022-03-03 12:53:40

云遷移云計算云平臺

2024-11-12 16:58:35

2019-03-05 10:16:54

數(shù)據(jù)分區(qū)表SQLserver

2023-12-29 10:04:47

數(shù)據(jù)分析

2019-12-02 09:58:04

2017-11-02 08:54:13

數(shù)據(jù)存儲架構(gòu)

2018-05-18 09:18:00

數(shù)據(jù)分析報告數(shù)據(jù)收集

2022-08-29 08:08:58

SQLOracleCPU

2022-08-03 09:11:31

React性能優(yōu)化

2024-07-04 13:42:12

2025-06-09 08:21:55

2013-10-09 09:35:49

數(shù)據(jù)中心遷移虛擬化

2013-10-09 09:54:46

數(shù)據(jù)中心云計算

2019-08-20 00:39:28

數(shù)據(jù)存儲層冗余

2025-10-15 09:20:00

2023-09-27 22:44:18

數(shù)據(jù)遷移數(shù)據(jù)庫

2015-07-30 11:21:16

代碼審查
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久精品视频7| 亚洲精品一区二区三区影院 | 欧美日韩视频在线观看一区二区三区| 蜜桃视频日韩| 黄色av一区二区| 久久久久久久久丰满| 欧美日韩国产中文| 国模无码视频一区二区三区| 天堂аⅴ在线地址8| 国内精品伊人久久久久影院对白| 色阁综合伊人av| 一区二区三区人妻| 天堂电影一区| 亚洲女人****多毛耸耸8| 精品一区在线播放| 波多野结衣人妻| 欧美三级在线| 国产午夜精品免费一区二区三区| 污污视频在线免费| 免费观看成人性生生活片| 国产精品麻豆99久久久久久| 99在线观看视频| 国产精品第二十页| 色婷婷热久久| 亚洲电影av在线| 天堂av手机在线| 成人免费短视频| 亚洲mv在线观看| 亚洲第一综合网站| 你懂的在线看| 成人精品视频.| 亚洲一区二区三区香蕉| 日韩av在线天堂| 亚洲美女久久| 精品久久久久久久一区二区蜜臀| 亚洲激情在线看| 91精品店在线| 欧美性视频一区二区三区| 干日本少妇首页| av资源在线| 亚洲高清免费观看高清完整版在线观看| 一区二区三区不卡在线| 日韩一级片免费看| 成人av综合在线| 国产精品自产拍在线观| jizz国产在线观看| 日韩网站在线| 国内精品一区二区三区| 久久这里只有精品国产| 国产精品麻豆久久| 亚洲欧美日韩区| 国产一二三四五区| 国产精品日韩精品中文字幕| 日韩女优毛片在线| 中文字幕18页| 国产一区二区三区免费观看在线| 欧美久久久一区| 亚洲高清在线不卡| 欧美一级大片在线视频| 欧美日本在线看| 午夜久久福利视频| 免费观看亚洲天堂| 精品日产卡一卡二卡麻豆| 久草福利在线观看| 久久97精品| 精品久久久久久亚洲综合网 | 欧美成人综合色| 91精品蜜臀一区二区三区在线| 亚洲人在线视频| 国产精品综合激情| 精品国产一级毛片| 一区二区三区亚洲| 日本一二三区在线观看| 欧美视频在线观看| 欧美激情乱人伦一区| 国产污污视频在线观看| 日韩电影在线观看网站| 国产在线日韩在线| 国产91久久久| 91在线视频网址| 不卡一卡2卡3卡4卡精品在| 风流少妇一区二区三区91| 国产真实乱子伦精品视频| 国产精品果冻传媒潘| 五月婷婷六月色| 国产清纯在线一区二区www| 永久久久久久| 久草免费在线视频| 欧美怡红院视频| 国产一级免费大片| 米奇777超碰欧美日韩亚洲| 中文字幕久久精品| 久久国产精品波多野结衣| 美女国产一区| 91在线观看网站| 国产色a在线| 亚洲欧美偷拍三级| 成年人看的毛片| 国产精品伦一区二区| 精品国产一区二区三区av性色| 色婷婷在线影院| 久久久久亚洲| 久久久久国色av免费观看性色| 日韩欧美中文字幕一区二区| 美女高潮久久久| 国产在线资源一区| h网站在线免费观看| 一区二区三区精品在线观看| 国产裸体免费无遮挡| 999久久久国产999久久久| 亚洲美女www午夜| 九九九免费视频| 久久永久免费| 成人在线小视频| 四虎成人免费在线| 最新日韩在线视频| 日韩av手机版| 中文字幕亚洲影视| 不卡av在线播放| 中文字幕 自拍偷拍| 91丨porny丨蝌蚪视频| 六月婷婷激情网| 久久69成人| 精品无人区乱码1区2区3区在线 | 欧洲在线免费视频| 亚洲精品国产setv| 精品国产欧美成人夜夜嗨| 丁香六月婷婷综合| 久久99精品久久久| 视频一区二区三| 成人看av片| 717成人午夜免费福利电影| 国产18无套直看片| 影音先锋亚洲一区| 成人精品视频99在线观看免费| 国产99久一区二区三区a片 | 日韩精品免费在线观看| 久久久久亚洲AV成人| 韩国v欧美v亚洲v日本v| 视频一区二区三区免费观看| 欧美极品videos大乳护士| 亚洲第一精品夜夜躁人人爽| 性生交大片免费全黄| 久久精品国产免费看久久精品| 久久国产手机看片| 后进极品白嫩翘臀在线播放| 91精品国产免费久久综合| 欧美一级片在线视频| 久久99国产精品久久99果冻传媒| 亚洲精品欧美精品| 精品成人av| 中文字幕日本精品| 亚洲永久精品视频| 91麻豆国产在线观看| 少妇人妻互换不带套| 亚洲婷婷丁香| 77777少妇光屁股久久一区| 免费观看国产精品| 欧美日韩国产中文精品字幕自在自线 | 在线视频91p| 欧美肥胖老妇做爰| 国产精品精品软件男同| 国产精品99久久久久久似苏梦涵| www婷婷av久久久影片| av成人综合| 久久久久五月天| 欧美一区二区少妇| 色综合激情五月| 欧美性受xxxx黑人| 日韩成人一级大片| 亚洲精品9999| vam成人资源在线观看| 欧美国产日产韩国视频| 婷婷在线免费观看| 亚洲综合色婷婷| 中文字幕在线免费看线人| 水蜜桃久久夜色精品一区的特点| 日韩av电影免费在线| 欧美电影在线观看网站| 欧美日韩国产va另类| 日本私人网站在线观看| 欧美性生活久久| 69精品久久久| 欧美高清在线视频| xxxxwww一片| 久久久久综合| av动漫免费观看| 欧美日韩一区二区三区四区不卡| 日本精品免费一区二区三区| 麻豆视频免费在线观看| 亚洲精品久久久久久久久久久久 | 高清在线观看日韩| 欧美aⅴ在线观看| 欧美超碰在线| 国产一区二区在线网站| 国产精品第一| 91国产一区在线| 麻豆网站视频在线观看| 日韩av网址在线观看| 一级黄色大片免费观看| 综合精品久久久| 国产aⅴ激情无码久久久无码| 国产一区二区电影| 爱情岛论坛成人| 99re国产精品| 正在播放一区| 亚洲资源网站| 91香蕉亚洲精品| 亚洲欧美在线成人| 欧美高跟鞋交xxxxhd| 亚洲人午夜射精精品日韩| 3atv一区二区三区| 欧美国产在线看| 亚洲欧美综合另类在线卡通| 中文字幕在线看高清电影| 国产精品66部| 日本精品一区在线| 日韩电影在线一区| 久久久免费视频网站| 国产综合亚洲精品一区二| 日本视频一区二区在线观看| 欧美国产不卡| eeuss一区二区三区| 国产不卡精品在线| 国产福利成人在线| 在线观看福利电影| 九九精品在线视频| 国产在线更新| 国产亚洲日本欧美韩国| 可以在线观看的黄色| 精品国产欧美一区二区| 国产一区二区三区在线观看| 欧美中文字幕一区二区三区亚洲| 亚洲欧美自拍视频| 亚洲成人tv网| 日韩精品――中文字幕| 亚洲素人一区二区| 91传媒免费观看| 国产精品看片你懂得| 欧美黄色一级生活片| 成人午夜av电影| 久久精品一卡二卡| 久久er99精品| 深爱五月综合网| 国产精品亚洲专一区二区三区| 天天干天天色天天干| 青草国产精品久久久久久| 国产又大又硬又粗| 日韩在线a电影| 在线观看国产中文字幕| 精品一区二区三区在线播放| 亚洲免费999| 国产在线精品一区二区三区不卡| 91精品国产三级| 韩国一区二区在线观看| 尤物网站在线看| 成人性生交大片免费看中文| 女同性恋一区二区三区| 久久免费午夜影院| 99久久久无码国产精品性波多 | 国产日本一区二区三区| 好吊妞视频这里有精品| 国产精品一区二| 九九久久婷婷| 亚洲一一在线| 欧美69视频| 99精品人妻少妇一区二区| 午夜影院日韩| 色悠悠久久综合网| 国产一区激情在线| 亚洲图片 自拍偷拍| 成人黄色一级视频| 蜜桃传媒一区二区亚洲| 国产精品久久久久久久岛一牛影视 | 免费观看成人在线| 欧美电影《睫毛膏》| 欧美 日韩 国产精品| 国产亚洲在线观看| 中文字幕无码精品亚洲35| 国产日韩欧美一区| 性猛交ⅹ×××乱大交| 美女免费视频一区| 亚洲成年人在线观看| 91污片在线观看| 波兰性xxxxx极品hd| 亚洲一区二区三区四区不卡| 狠狠人妻久久久久久| 欧美日韩成人综合在线一区二区| www.色呦呦| 日韩成人在线视频网站| 里番在线观看网站| 97视频免费在线看| 亚洲一区二区av| 久久99欧美| 欧美精品日本| 男人透女人免费视频| 久久er99精品| 无码国产精品一区二区免费式直播 | 精品无码人妻一区二区免费蜜桃| 亚洲精品欧美激情| 亚洲 国产 日韩 欧美| 精品国产一区二区国模嫣然| 婷婷在线视频| 国产91在线高潮白浆在线观看| 韩国三级成人在线| 欧美日韩国产免费一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠视频97| 日韩高清不卡一区二区| 日韩少妇一区二区| 国产精品私人自拍| 少妇高潮av久久久久久| 337p日本欧洲亚洲大胆精品| 日韩a在线看| 久久久久久久久91| 久久久久亚洲精品中文字幕| 日本精品一区二区三区视频| 日韩一级欧洲| wwwxx日本| 亚洲综合无码一区二区| 国产又大又粗又长| 自拍视频国产精品| 日本在线中文字幕一区二区三区| 精品亚洲欧美日韩| 久久一区二区三区喷水| 黄色一级在线视频| 丰满白嫩尤物一区二区| 日韩精品电影一区二区三区| 欧美日韩国产专区| 天堂中文资源在线观看| 欧美激情欧美狂野欧美精品| 91精品国产色综合久久不卡粉嫩| 日韩精品最新在线观看| 噜噜噜91成人网| 中文字幕一二三区| 一个色在线综合| 国产成人麻豆精品午夜在线 | 欧美精品v日韩精品v国产精品| 日韩在线理论| 亚洲欧美另类动漫| 国产精品美女久久久久aⅴ | 亚洲成avwww人| 黄色免费在线观看网站| 国产91在线播放九色快色| 香蕉久久99| 亚洲不卡一卡2卡三卡4卡5卡精品| 日韩午夜免费视频| 一起草最新网址| 中文字幕欧美国产| 一级片免费观看视频| 色婷婷久久一区二区| av在线不卡精品| 亚洲一卡二卡三卡| 欧美全黄视频| www.日本高清| 色婷婷综合视频在线观看| 天堂中文字幕在线| 欧美大片在线看| 久久视频社区| 国产盗摄视频在线观看| 国产成人一区二区精品非洲| 男人的午夜天堂| 色偷偷一区二区三区| 韩国精品视频| 国产精品无av码在线观看| 欧美亚洲tv| 国产精品久久a| 一区二区三区在线视频观看| 国产女主播福利| 欧美劲爆第一页| 美日韩中文字幕| 欧美性受xxxxxx黑人xyx性爽| 一区二区三区毛片| 天堂av在线7| 5566成人精品视频免费| 清纯唯美亚洲综合一区| jizzzz日本| 亚洲国产精品久久久久秋霞影院 | 欧美日韩精品免费观看视欧美高清免费大片| 极品日韩久久| 爽爽淫人综合网网站| 国产免费美女视频| 91精品国产综合久久久久| 91美女主播在线视频| 日韩欧美亚洲在线| 国产91在线观看| 欧美一级视频免费观看| 中文字幕视频一区二区在线有码| 国产精品电影| 亚洲ai欧洲av| www.亚洲色图| 91麻豆一区二区| 97成人精品区在线播放| 欧美国产偷国产精品三区| 美女又爽又黄免费| 色域天天综合网| 182在线视频观看| 一本一本a久久| 久久综合色婷婷| 国产又黄又爽视频| 日韩美女av在线免费观看|