Netflix描述了一個內部自動化平臺,該平臺能夠將亞馬遜RDS for PostgreSQL數據庫遷移到亞馬遜Aurora PostgreSQL上,從而降低近400個生產集群的運營風險并減少停機時間。該系統使服務團隊能夠通過自助式工作流程來啟動遷移操作,并同時確保復制過程的準確性、切換過程的有序進行、變更數據捕獲工作的協調性以及回滾機制的有效性。
Netflix通過一個基于Envoy構建的平臺管理型數據訪問層來處理數據庫訪問請求,這一層標準化了相互TLS認證機制,并將數據庫端點與應用程序代碼分離。由于各服務不會直接管理憑證或連接信息,因此遷移操作必須完全在這一層之下透明地進行。因此,所有復制協調、驗證、切換處理、變更數據捕獲以及回滾操作都是在基礎設施層面完成的。
Netflix的工程師們強調道:“我們的目標是讓將RDS數據庫遷移到Aurora PostgreSQL的過程變得可重復且操作簡便,同時確保事務性工作負載和變更數據捕獲流程的準確性。”
遷移工作流程首先會使用亞馬遜Web Services提供的功能,創建一個Aurora PostgreSQL集群,作為源RDS PostgreSQL實例的物理讀副本。該副本會從存儲快照中初始化,并持續復制來自源數據庫的寫前日志記錄。在這一階段,系統會驗證復制槽的狀態、WAL生成速度、參數兼容性以及復制延遲情況,以確保在切換之前,副本能夠承受高峰寫入負載。
RDS到Aurora PostgreSQL的遷移工作流程(來源:Netflix技術博客文章)
對于那些使用變更數據捕獲機制的工作負載來說,包括那些依賴邏輯復制槽或下游流處理器的系統,自動化工具會在遷移前協調好各復制槽的狀態。此時,變更數據捕獲進程會被暫停,以防止WAL文件積累過多;同時,各復制槽的位置也會被記錄下來,這樣在完成遷移后,就可以在Aurora上重新創建相應的復制槽,并確保日志序列號的一致性。這樣一來,既能保證數據傳輸的連續性,又能避免因WAL文件堆積而導致復制延遲加劇的問題。
作為早期采用者,Netflix的賦能應用團隊對支持設備認證及合作伙伴計費工作流程的數據庫進行了遷移。在復制過程中,工程師們發現由于某個處于非活躍狀態的邏輯復制槽仍然保留著WAL段,從而導致OldestReplicationSlotLag指標值升高,進而加劇了復制延遲。在移除了這個無效的復制槽之后,復制過程恢復正常,遷移任務也成功完成,遷移后的各項指標都與遷移前的基準數據相符。

簡化版的賦能應用概述(來源:Netflix技術博客文章)
當復制延遲接近零時,系統會進入一個受控制的靜默狀態。此時會修改安全組規則,并重新啟動源RDS實例,從而在基礎設施層阻止新的連接請求。在確認所有正在進行的交易都已經完成,且Aurora副本已經重放了所有的WAL記錄之后,該副本就會被提升為可寫入的Aurora集群,數據訪問層也會將流量路由到新的端點。
據Netflix的工程師們介紹,回滾操作被視為一項非常重要的任務。在完成升級流程并確保所有流量都成功切換到新集群之前,原始的RDS實例會繼續保持其權威源的地位。如果在同步過程中驗證失敗,或者在升級后的健康檢查中發現異常,系統可以通過數據訪問層將流量重新路由回RDS集群。由于應用程序與物理端點是解耦的,因此只需恢復路由配置即可使系統回到之前的狀態,而無需進行任何重新部署操作。此外,如果需要,CDC消費者也可以從原始集群上之前記錄的位置繼續執行數據讀取操作。