從SQL Server到MySQL,近百億數據量遷移實戰

滬江成立於 2001 年,做爲較早期的教育學習網站,當時技術選型範圍並不大:Java 的版本是 1.2,C# 還沒有誕生,MySQL 尚未被 Sun 收購,版本號是 3.23。工程師們選擇了當時最合適的微軟體系,並在往後的歲月裏,逐步從 ASP 過分到 .net,數據庫也跟隨 SQL Server 進行版本升級。數據庫

十幾年過去了,技術社區已經發生了天翻地覆的變化。滬江部分業務還基本在 .net 體系上,這給業務持續發展帶來了一些限制,在人才招聘、社區生態、架構優化、成本風險方面都面臨挑戰。集團通過慎重考慮,發起了大規模的去 Windows 化項目。這其中包含兩個重點子項目:開發語言從 C# 遷移到 Java,數據庫從 SQL Server 遷移到 MySQL。架構

本文主要向你們介紹,從 SQL Server 遷移到 MySQL 所面臨的問題和咱們的解決方案。工具

遷移方案的基本流程學習

設計遷移方案須要考量如下幾個指標:

d47e62d2b349aca45e42305ed6714efbe5ed61d9遷移先後的數據一致性;
d47e62d2b349aca45e42305ed6714efbe5ed61d9業務停機時間;
d47e62d2b349aca45e42305ed6714efbe5ed61d9遷移項目是否對業務代碼有侵入;
d47e62d2b349aca45e42305ed6714efbe5ed61d9須要提供額外的功能:表結構重構、字段調整。優化

通過仔細調研,在平衡複雜性和業務方需求後,遷移方案設計爲兩種:停機數據遷移和在線數據遷移。若是業務場景容許數小時的停機,那麼使用停機遷移方案,複雜度低,數據損失風險低。若是業務場景不容許長時間停機,或者遷移數據量過大,沒法在幾個小時內遷移完成,那麼就須要使用在線遷移方案了。網站

數據庫停機遷移的流程:spa

a7fed2dfe7c447b593ac2e2be57616caf70b4f04

停機遷移邏輯比較簡單,使用 ETL(Extract Translate Load) 工具從 Source 寫入 Target,而後進行一致性校驗,最後確認應用運行 OK,將 Source 表名改掉進行備份。.net

相關文章
相關標籤/搜索