2 回答
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
嚴(yán)格來(lái)說(shuō),答案是否定的,您不能以這種方式更改數(shù)據(jù)的內(nèi)容,因?yàn)閭浞莘椒〞?huì)獲取表列表并將它們按原樣轉(zhuǎn)儲(chǔ)到文件中。嗯,這正是您對(duì)備份解決方案的期望。
然而,您可以做的是創(chuàng)建包含您所需的替換邏輯的視圖。然后您可以使用備份方法來(lái)備份視圖,而不是表。
否則,您需要在普通查詢中編寫邏輯或在 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ù)庫(kù)克隆到暫存位置,然后運(yùn)行 PII 和其他敏感信息的數(shù)據(jù)清理腳本。然后您可以將其克隆到開發(fā)環(huán)境。
但是,對(duì)于像電子郵件地址這樣可能在關(guān)系中使用或需要唯一的值,您需要格外小心,正如我們通過(guò)艱難的方式發(fā)現(xiàn)的那樣,當(dāng)您更改所有電子郵件以正確example@example.com測(cè)試與之相關(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ù)庫(kù)的增長(zhǎng),像這樣的克隆變得越來(lái)越成為一個(gè)問(wèn)題,特別是對(duì)于本地開發(fā),因?yàn)閿?shù)據(jù)庫(kù)的大小可能只會(huì)隨著時(shí)間的推移而增長(zhǎng)。目前,我們的產(chǎn)品數(shù)據(jù)庫(kù)已接近 300GB,而我們的一些開發(fā)人員的機(jī)器除了滿足所有其他要求外,還無(wú)法容納副本。另外,克隆和清理需要幾個(gè)小時(shí),而且現(xiàn)在每個(gè)人都處于遠(yuǎn)程狀態(tài),通過(guò)已經(jīng)受限的鏈接將這些克隆提供給開發(fā)人員會(huì)帶來(lái)額外的后勤問(wèn)題。
最好的解決方案,特別是對(duì)于本地開發(fā)人員來(lái)說(shuō),是僅轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)的架構(gòu),并用一組有代表性的模擬數(shù)據(jù)填充它以進(jìn)行測(cè)試。對(duì)于全面的測(cè)試,我們?cè)?CI/CD 管道環(huán)境中維護(hù)數(shù)據(jù)庫(kù)的完整副本、清理版本。
- 2 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報(bào)
