Mysql
以安全的方式複制用於測試的數據庫
出於測試目的,我必須創建一個無法觸及的生產 MySQL 數據庫的副本。
這些是我將遵循的步驟:
- 創建縮減大小的數據庫備份:
mysqldump prodDB --single-transaction --where="true limit 20" > test.sql
2. 創建一個新的測試數據庫:testDB
3. 在新的測試數據庫中載入轉儲文件:
mysql testDB < test.sql
這個程序正確嗎?
我可以確定原始數據庫不會被修改嗎?
謝謝!
系統:帶有 InnoDB 的 MySQL 5.1
這個程序正確嗎?
如果您沒有外鍵約束,那麼是的,這是正確的。
如果您有外鍵約束,則某些數據可能無法訪問。你必須修復它。
我可以確定原始數據庫不會被修改嗎?
在 mysqldump 之後執行以下操作:
grep -c "DROP DATABASE" test.sql
如果您返回 0,那麼是的,原始數據庫將不會被修改
為備份創建只讀使用者是個好主意。
這符合不授予使用者不需要的權限的一般原則,以減少意外副作用的可能性。
http://sys-log.bencane.com/2011/12/creating-a-read-only-backup-user-for-mysqldump/
GRANT LOCK TABLES, SELECT ON DATABASE.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
我通常還為我用於日常查詢的所有數據庫創建一個只讀使用者,除非我確定我需要修改表/模式等。為什麼要與使用者一起工作而不是完全刪除數據庫如果我當我只需要從表中選擇幾行時出錯?