資料庫還原時間
① 什麼是資料庫備份
對於Mysql資料庫,備份與恢復相關的術語包括:備份(backup)、還原(restore)、恢復(recover)、二進制日誌(binlog),其中備份按照其特性可以分為:物理備份和邏輯備份;冷備、溫備和熱備;完全備份和不完全備份等;常用的備份工具包括:操作系統拷貝、mysqlmp等;還原包括物理備份的還原和邏輯備份的還原;下面分別加以介紹和說明。
資料庫備份通俗地說是將資料庫的某一時刻的數據復制了一份;資料庫還原是將備份出的數據替換掉原來資料庫中的數據文件,將備份放回到原來資料庫文件的目錄位置;二進制日誌(BINLOG)記錄資料庫的變更過程,例如創建資料庫、建表、修改表等DDL操作、以及數據表的相關DML操作,這些操作會導致資料庫產生變化,開啟binlog以後導致資料庫產生變化的操作會按照時間順序以「事件」的形式記錄到binlog二進制文件中。
參考上圖,在凌晨2:00,管理員將已開啟二進制日誌的資料庫的數據做了一個完整的備份,隨著時間的推移,仍然有用戶對資料庫進行相關的寫操作(包括:DDL語句、DML語句中的增刪改操作、DCL授權語句和TCL事務處理語句等),導致了二進制日誌文件寫滿(默認1G)後自動切換;在上午9:37時,由於硬碟出現故障,資料庫用戶不能正常訪問存放在硬碟中的資料庫數據,此時如果資料庫備份和二進制日誌沒有損壞,管理員是可以通過還原備份和恢復二進制日誌的方式挽回數據損失的。
挽回數據損失的過程包括:1.更換新硬碟;2.還原備份;3.重做備份到故障時段的二進制日誌中的語句等;正常情況不會造成數據的丟失,損失的僅僅是一段時間的停機時間。
上例中,還原數據備份時,資料庫中的數據回到了備份時刻的狀態,而二進制日誌中記錄了從備份到故障前一段時間內所有用戶對資料庫的寫操作的語句,只要把這些語句按照時間順序重新運行一遍,所還原的數據就會變成為故障前那一刻的狀態,不會造成數據丟失。因此通常把保存在二進制日誌中的語句重新執行的過程叫做恢復。