工作日誌,多租戶模式下的資料備份和遷移
阿新 • • 發佈:2019-07-10
工作日誌,多租戶模式下的資料備份和遷移
記錄和分享一篇工作中遇到的奇難雜症。目前做的專案是多租戶模式。一套系統管理多個專案,使用者登入不同的專案載入不同的資料。除了一些系統初始化的配置表外,各專案之間資料相互獨立。前期選擇了共享資料表的隔離方案,為後期的資料遷移挖了一個大坑。這裡記錄填坑的思路。可能不優雅,僅供參考。
多租戶
多租戶是一種軟體架構,在同一臺(組)伺服器上執行單個例項,能為多個租戶提供服務。以實際例子說明,一套能源監控系統,可以為A產業園提供服務,也可以為B產業園提供服務。A的管理員登入能源監控系統只會看到A產業園相關的資料。同樣的道理,B產業園也是一樣。多住戶模式最重要的就是資料之間的獨立。其最大的侷限性在於對租戶定製化開發困難很大。適合通用的業務場景。
資料隔離方案
獨立資料庫
顧名思義,一個租戶獨享一個數據庫,其隔離級別最強,資料安全性最高,資料的備份和恢復最方便。對資料獨立性要求很高,資料的擴張性要求較多的租戶可以考慮使用。或者錢給的多也可以考慮。畢竟該模式下的硬體成本較高。程式碼成本較低,Hibernate已經提供DATABASE的實現。
共享資料庫、獨立 Schema
多個租戶共有一個數據庫,每個租戶擁有屬於自己的Schema(Schema表示資料庫物件集合,它包含:表,檢視,儲存過程,索引等等物件)。其隔離級別較強,資料安全性較高,資料的備份和恢復較為麻煩。資料庫出了問題會影響到所有租戶。Hibernate也提供SCHEMA的實現。
共享資料庫、共享 Schema、共享資料表
多個租戶共享一個數據庫,一個Schema,一張資料表。各租戶之間通過欄位區分。其隔離級別最低,資料安全性最低,資料的備份和恢復最麻煩(讓我哭一分鐘