MySQL 備份還原
資料丟失、開發測試場景
- 人為操作失誤造成某些資料被誤操作
- 軟體 BUG 造成部分資料或全部資料丟失
- 硬體故障造成資料庫部分資料或全部資料丟失
- 安全漏洞被入侵資料惡意破壞
- 開發測試環境需求
衡量備份恢復有兩個重要的指標:
- 恢復點目標(RPO): 恢復點目標是指資料能恢復到什麼程度
- 恢復時間目標(RTO) 恢復時間目標是指資料恢復需要多長時間
資料庫備份方式
物理備份: 指對資料庫作業系統的物理檔案(如資料檔案、紀錄檔檔案等)的備份。物理備份又可以分為離線備份(冷備份)和聯機備份(熱備份)。
- 冷備份:在關閉資料庫時進行的備份操作,能夠較好地保證資料庫的完整性。
- 熱備份:在資料庫執行狀態中進行操作,這種備份方法依賴於資料庫的紀錄檔檔案。
邏輯備份: 指對資料庫邏輯元件(如"表"等資料庫物件)的備份。
資料庫的備份策略
完全備份: 每次對資料進行完整的備份。可以備份整個資料庫,包含使用者表、系統表、索引、檢視和儲存過程等所有資料庫物件。但它需要花費更多的時間和空間,所以,做一次完全備份的週期要長些。
差異備份: 備份那些自從上次完全備份之後被修改過的檔案,只備份資料庫部分的內容。它比最初的完全備份小,因為只包含自上次完全備份以來所改變的資料庫。它的優點是儲存和恢復速度快。
增量備份: 只有那些在上次完全備份或者增量備份後被修改的檔案才會被備份。
mysql 工具
#導出數據表
mysqldump -h 主機 -u 用戶名 -p 密碼 數據庫 表名1 表名2 表名3 > 物理磁盤位置/文件名
#導出整個數據庫,包含創建數據庫、創建表、插入數據 SQL
mysqldump -h 主機 -u 用戶名 -p 密碼 數據庫 > 物理磁盤位置/文件名
#不登入導入整個數據庫,包含創建數據庫、創建表、插入數據 SQL
mysql -u -p 數據庫名 < 備份文件
#登入導入整個數據庫,備份文件(完整文件路徑)
source 備份文件.sql
#不登入導入整個數據庫,目標數據庫必須存在
mysqlimport -uroot -p 數據庫 物理磁盤位置/文件名.txt