亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以在 codeigniter 中使用更新的內容轉儲 mysql 數據庫

是否可以在 codeigniter 中使用更新的內容轉儲 mysql 數據庫

PHP
ITMISS 2024-01-19 10:31:37
我將編寫腳本來使用 codeigniter 備份 mysql 數據庫。然而,這里有一個棘手的問題。我應該將所有電子郵件轉換為虛擬字母而不是真實的電子郵件信息。例如,[email protected] => [email protected]因此,新開發人員可以使用所有數據,但不能使用真實的電子郵件,因為它們是真實的個人信息。但我不確定這是否可能。在這里,我放棄了我的方法,但無法更改當前數據庫。$this->load->dbutil();$this->load->helper('file');$this->load->helper('download');$dumpOption = array(    'tables'        => array(),   // Array of tables to backup.    'ignore'        => array(),                     // List of tables to omit from the backup    'format'        => 'txt',                       // gzip, zip, txt    'filename'      => 'mybackup.sql',              // File name - NEEDED ONLY WITH ZIP FILES    'add_drop'      => TRUE,                        // Whether to add DROP TABLE statements to backup file    'add_insert'    => TRUE,                        // Whether to add INSERT data to backup file    'newline'       => "\n"                         // Newline character used in backup file);if(ENVIRONMENT !== 'production') {    if ($this->dbutil->database_exists('db'))    {        $backup = $this->dbutil->backup($dumpOption);        try {            echo 'loading database .....';            write_file('./mybackup.sql', $backup, 'w+');            echo 'finish preparing dev data.';        } catch(Exception $e) {            printf('Message: ' .$e->getMessage());        }    } else {        echo 'database does not exist.';    }}如果可能的話你能讓我知道嗎?最重要的是轉儲文件應該具有更新的內容,但我們不應該更改原始數據庫,更改應該僅在轉儲上。是否可以?非常感謝。
查看完整描述

2 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

嚴格來說,答案是否定的,您不能以這種方式更改數據的內容,因為備份方法會獲取表列表并將它們按原樣轉儲到文件中。嗯,這正是您對備份解決方案的期望。

然而,您可以做的是創建包含您所需的替換邏輯的視圖。然后您可以使用備份方法來備份視圖,而不是表。

否則,您需要在普通查詢中編寫邏輯或在 php 代碼中實現它并自己創建轉儲文件。


查看完整回答
反對 回復 2024-01-19
?
夢里花落0921

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 管道環境中維護數據庫的完整副本、清理版本。


查看完整回答
反對 回復 2024-01-19
  • 2 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號