摘要:背景在一個數據庫中存在表與表,但兩個表按目前架構邊界劃分的話,是屬于兩個組織下的兩個系統,導致相互之間有穩定性風險。為增強系統穩定性,進行存儲分離。準備將表的所有數據,遷移到新庫中。
背景:
? ? ?在一個數據庫中存在A表與B表,但AB兩個表按目前架構邊界劃分的話,是屬于兩個組織下的兩個系統,導致相互之間有穩定性風險。為增強系統穩定性,進行存儲分離。準備將B表的所有數據,遷移到新庫中。
可能存在的問題:
1、由于原來的AB表在一個數據庫中,代碼中可以用事務控制兩個表,遷移后不支持本地事務,如何解決?
2、原來是一個數據源,現在分為兩個數據源,如何解決?
3、由于這兩個表,是核心鏈路的核心數據,遷移過程無法停機遷移,如何保證安全穩定的不停機平滑遷移?
4、遷移過程如何保證數據一致?
遷移準備工作:
1、表準備
2、事務支持需要找相關人員確認,應對事務解耦后的方案
3、數據源梳理
集群遷移方案:
一、整體方案
DBA線上創建新數據庫,同步原數據庫數據;?
1、全量同步方案: 源庫導出數據進行全量初始化,dba通過多線程抽取源數據進行插入
2、增量同步方案: 記錄全量時刻的binlog位點,通過binlog進行數據增量同步? 增量數據進行數據一致性校驗,通過工具進行數據校驗;
3、系統中配置多個數據源,涉及到的表具有開關;可進行雙寫、指定寫新庫/老庫,指定讀主庫/新庫
4、代碼上線 ,上線后寫老庫,讀老庫;不做任何變更
5、增量數據此時已經開啟;
6、選取流量低峰期打開雙寫開關,觀察寫新庫是否存在報錯,且對整體的tps是否有影響;大約5min左右
7、關閉增量數據同步,觀察30min,無異常報錯,且數據正常寫入,只保留雙寫。 此時數據校驗進行新增數據校驗;如果產生問題,進行開關回切,增量binlog繼續打開
8、觀察業務有無異常,跑一周時間,觀察數據是否有告警
9、切換讀新庫,跑一周時間
10、無異常,選取流量低峰期進行 大數據切換讀新庫備份機、binlog切換讀新庫備份機,此時會有一小段時間的重復數據產生,下游數據需要自己保證冪等性。
11、關閉老庫寫操作
12、跑一段時間,無問題,完全走新庫
二、具體流程圖
注意點:
原數據庫的binlog事件,需要提前接入;binlog監聽維度的切換是在代碼上線之前即可監聽,外圍需要保證冪等性;
大數據是否有抽取數據,需要確認;切換完成后,需要抽取新的庫數據;? 大數據進行抽數需要進行lion變更;
確認update是否會進行覆蓋,可能存在覆蓋,但是兩者應該最終一致
遷移過程可控,問題可發現;老庫寫入確保無問題
binlog數據消費可能早于新庫寫入,因此切換讀流量前需要進行binlog切換
樂觀鎖多版本更新,系統異常可感知,業務異常不可感知,樂觀鎖更新雙寫情況下保證最終一致性
查詢業務流量做比對
風險點:?
由于連接修改在mapper層面,防止有mapper.method方法覆蓋不全導致的寫數據丟失
需要增加比對數據任務,進行數據比對
需要增加同步數據任務,防止切換過程數據丟失,進行數據彌補
數據比對、數據修復腳本、告警:
通過腳本(增量數據比對)
job手工比對(存量數據的比對)
修復數據job(指定表,指定更新時間范圍)—相當于后門
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123647.html
摘要:對于上述問題,混合云架構無疑是企業的最佳選擇。解決方案將本地環境與公有云連通組成混合云架構,實現對本地環境計算能力的快速擴展。前言當前各行各業在積極擁抱云計算,但由于一些歷史原因和合規要求導致很多企業全面上云比較困難,比如企業監管制度及合規要求一些核心數據庫必須保留在本地數據中心;本地數據中心作為企業固定資產不容易完全拋棄;有些大型集團企業IT架構復雜,全面遷移上云的影響難以評估等等。因此,...
閱讀 3029·2021-11-18 10:07
閱讀 3778·2021-11-17 17:00
閱讀 2108·2021-11-15 18:01
閱讀 934·2021-10-11 10:58
閱讀 3387·2021-09-10 10:50
閱讀 3453·2021-08-13 15:05
閱讀 1232·2019-08-30 15:53
閱讀 2657·2019-08-29 13:01