2 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
嚴(yán)格來說,答案是否定的,您不能以這種方式更改數(shù)據(jù)的內(nèi)容,因?yàn)閭浞莘椒〞?huì)獲取表列表并將它們按原樣轉(zhuǎn)儲(chǔ)到文件中。嗯,這正是您對(duì)備份解決方案的期望。
然而,您可以做的是創(chuàng)建包含您所需的替換邏輯的視圖。然后您可以使用備份方法來備份視圖,而不是表。
否則,您需要在普通查詢中編寫邏輯或在 php 代碼中實(shí)現(xiàn)它并自己創(chuàng)建轉(zhuǎn)儲(chǔ)文件。

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