將 MySQL 數(shù)據(jù)庫恢復到某個時間點
瀏覽量:
次 發(fā)布日期:2023-08-20 22:32:34
將 MySQL
數(shù)據(jù)庫恢復到某個時間點
Bytebase 是一款開源數(shù)據(jù)庫工具,它面向整個研發(fā)組織設(shè)計,旨在幫助應用開發(fā)者和 DBA 更安全、更高效地管理應用開發(fā)生命周期中的數(shù)據(jù)庫操作 (Database DevOps)。在日常工作中,如果遇到下面這些問題,你會如何處理呢?
不小心刪除了一張表或者刪除了一些用戶數(shù)據(jù)應用程序發(fā)布了一個包含數(shù)據(jù)庫變更的新版本,但這個新版本上線后不能正常運行此時此刻,你希望自己能擁有一臺時光機。在 MySQL 中,用時光機回到過去的任意時刻,相當于用備份文件和數(shù)據(jù)庫日志文件將
數(shù)據(jù)庫恢復到事故發(fā)生前的某個時間點。這個操作過程不僅復雜,而且依賴經(jīng)驗豐富的 DBA。如果用 Bytebase 來完成基于時間點恢復(PITR)的操作,僅需點擊幾次按鈕即可,并且整個過程有明確的進度反饋。接下來,本文將介紹基于時間點恢復(PITR)在 Bytebase 中的工作原理和操作步驟。
工作原理
Bytebase 完成一次基于時間點恢復(PITR)的過程如下:
找到早于指定恢復時間點最近的一次備份
將上一步中的備份恢復到一個臨時的數(shù)據(jù)庫
在臨時數(shù)據(jù)庫上重新執(zhí)行從備份時間點到指定恢復時間點之間的數(shù)據(jù)庫日志文件用臨時數(shù)據(jù)庫替換目標數(shù)據(jù)庫,并將舊數(shù)據(jù)庫重命名以供手動檢查最后一步表明 PITR 在 Bytebase 中是原地恢復(in-place recovery),因此在數(shù)據(jù)庫恢復完成后不需要更改應用程序的代碼。假設(shè)有一個 MySQL 數(shù)據(jù)庫「db_pitr_example」,它有 2 個表「pitr_one」和「pitr_two」。由于表「pitr_two」被不小心刪除了,導致某個應用突然中斷了服務。DBA 在得知此事故后,立即著手恢復被刪除的表。
接下來,我們將演示在 Bytebase Console 中如何將數(shù)據(jù)庫恢復到事故發(fā)生前的某個時間點。1. 單擊選項卡「備份和恢復」,然后點擊「恢復到指定時間點」。2. 指定數(shù)據(jù)庫恢復的具體時間點,并單擊「確認」。3. 點擊「批準」開始執(zhí)行第一個任務,或者將這個 issue 重新指派給其他人進行審核。當?shù)谝粋€任務完成后,再次點擊「批準」開始執(zhí)行第二個任務。
如下圖所示,數(shù)據(jù)庫「db_pitr_example」已完成了一次基于時間點恢復的操作。我們來驗證一下 PITR 的執(zhí)行結(jié)果。如下圖所示,被刪除的表「pitr_two」已經(jīng)被找回了,應用又恢復了服務。
了解更多
我們剛剛演示了如何用 Bytebase Console 來將事故數(shù)據(jù)庫恢復到指定的時間點。Bytebase 提供的基于時間點恢復(PITR)功能是一種原地恢復(in-place recovery),這意味著在數(shù)據(jù)庫恢復后無需更改應用程序代碼即可恢復事故前的應用程序狀態(tài)。要了解更多有關(guān) Bytebase 基于時間點恢復的信息,請參閱我們的文檔(https://www.bytebase.com/docs/operating/disaster-recovery#point-in-time-recovery-for-mysql)。感謝您閱讀本文。如果您有任何意見或問題,歡迎向我們反饋(https://github.com/bytebase/bytebase/issues)。
Bytebase 1.2.1 - 2022.7.7二分 debug 法 yyds
干貨整理|SQL 審核最佳實踐活動回顧
BBer | 來自名校的他們不再做學霸,卻選擇做創(chuàng)造者
相關(guān)推薦