2 回答

TA貢獻1757條經驗 獲得超8個贊
嚴格來說,答案是否定的,您不能以這種方式更改數據的內容,因為備份方法會獲取表列表并將它們按原樣轉儲到文件中。嗯,這正是您對備份解決方案的期望。
然而,您可以做的是創建包含您所需的替換邏輯的視圖。然后您可以使用備份方法來備份視圖,而不是表。
否則,您需要在普通查詢中編寫邏輯或在 php 代碼中實現它并自己創建轉儲文件。

TA貢獻1772條經驗 獲得超6個贊
嘗試像這樣改變運行中的數據將是“不可取”和“不可能”的混合體。我所做的就是首先將數據庫克隆到暫存位置,然后運行 PII 和其他敏感信息的數據清理腳本。然后您可以將其克隆到開發環境。
但是,對于像電子郵件地址這樣可能在關系中使用或需要唯一的值,您需要格外小心,正如我們通過艱難的方式發現的那樣,當您更改所有電子郵件以正確[email protected]測試與之相關的任何內容時信息幾乎變得不可能。
對于這樣的事情,我建議從真實的電子郵件中派生出一封虛擬電子郵件,例如:
UPDATE users
SET email = CONCAT(
SUBSTRING(MD5(email),1,16),
'@',
SUBSTRING(MD5(email),17,16),
'.com'
);
結果:
[email protected] -> [email protected]
[email protected] -> [email protected]
然而,隨著數據庫的增長,像這樣的克隆變得越來越成為一個問題,特別是對于本地開發,因為數據庫的大小可能只會隨著時間的推移而增長。目前,我們的產品數據庫已接近 300GB,而我們的一些開發人員的機器除了滿足所有其他要求外,還無法容納副本。另外,克隆和清理需要幾個小時,而且現在每個人都處于遠程狀態,通過已經受限的鏈接將這些克隆提供給開發人員會帶來額外的后勤問題。
最好的解決方案,特別是對于本地開發人員來說,是僅轉儲數據庫的架構,并用一組有代表性的模擬數據填充它以進行測試。對于全面的測試,我們在 CI/CD 管道環境中維護數據庫的完整副本、清理版本。
- 2 回答
- 0 關注
- 150 瀏覽
添加回答
舉報