好啦,朋友們,又到了說點精彩故事的時候。不是開玩笑啦!想像一下,你的資料庫就像一本存著重要資訊的書。如果你不小心把書頁撕掉,或者被龍燒掉(或者硬碟突然決定現在就要掛掉)會怎樣?不管是現實還是幻想,你都會失去資料。這時候備份就像是你資料的「安全繩」啦。
備份,或者說簡單一點,就是做一份備份,這個過程就是把資料存到另一個檔案或地方,這樣遇到突發狀況時就能還原回來。
備份就是你出事時的保險。它可以讓你在硬體或軟體故障後還原資料,也能讓你回復像是不小心 DELETE 沒加 WHERE 這種手滑的錯誤,還能讓你輕鬆把資料庫從 development 搬到 production。還有,備份常常用來歸檔舊資料,萬一以後要查歷史或只是想留著「以防萬一」。沒有備份,真的出事時你可能什麼都沒了。
資料遺失的風險
來聊聊那些真的會讓你資料消失的危險。這不是開玩笑!下面這幾個例子,保證讓每個資料庫管理員都冒冷汗:
硬體故障。 硬碟會壞、隨身碟會不見,伺服器有時候會「直接退休」不回來。
使用者錯誤。
像是開發者不小心執行了這種指令:
DELETE FROM 學生;
沒加 WHERE。恭喜啦,你剛剛把所有學生都刪掉了!(希望你不是資料庫的 deyan)。
惡意攻擊。
駭客可能會攻擊你的系統,把資料加密或直接刪掉。
天災。
聽起來像電影劇情,但地震或水災真的會把伺服器毀掉。
當然啦,有備無患總是好的。與其事後拼命想辦法救回資料,不如一開始就把備份做好,這樣就不用拜託龍把資料還你了。
備份的主要使用情境
現在你知道為什麼要備份了,來看看哪些情境下備份真的能救你一命。
故障後還原資料
你正忙著,突然一切掛掉——資料庫、伺服器、網路全都不行。故障!沒備份你只能回想上次資料存在哪裡。有備份的話就能很快還原系統。通常會用故障前做的那份資料備份。例如:
- 伺服器完全掛掉。 你就用備份檔把整個資料庫還原回來。
- 部分資料表損壞。 你只還原需要的那些表。
跨伺服器搬移資料
想像你要把資料庫從一台伺服器搬到另一台:可能是換新硬體或設新伺服器。這時候備份就超好用。你在舊伺服器做一份備份,然後在新伺服器還原就好。
下面是建立資料庫備份的指令範例:
pg_dump -U postgres -d university -f university_backup.sql
這個指令會產生一個 university 資料庫的備份檔,可以用來在另一台伺服器還原。
長期歸檔資料
有時候你想把資料留著以後分析或查歷史。比如你有過去十年的訂單,可以把最舊的資料歸檔,讓主資料庫空間變大。
這樣做有幾個好處:
- 讓主資料庫跑更快。
- 保留重要的歷史資料,以備不時之需。
備份真的救過人的真實案例
來幾個真實故事,讓你感受一下備份的重要性:
駭客攻擊後的還原。 有家公司被勒索病毒搞到資料全沒。幸好前一天有做備份,最後只停機兩小時,沒讓公司倒掉。
開發者的失誤。(誰說開發者不會出錯?)有個學生把自己論文的資料表刪掉了。還好有備份,十分鐘就救回來了。
這次就先到這裡。現在你知道為什麼要備份、它能防哪些風險、還有該多常做。下一堂課會深入介紹備份的種類,幫你選出最適合你的方式。下次見囉!
GO TO FULL VERSION