雲上自建資料庫,秒級備份,看這篇就對了!

2022-06-15 11:48:12 字數 3249 閱讀 2347

本次分享將重點介紹如何利用阿里雲快照極速可用特性和一致性快照組,便捷地完成雲上自建資料庫的資料備份。

作者 | 阿里雲技術專家 余初武

** | 彈性計算百曉生

阿里雲ecs的極速可用特性主要包括四個方面,分別是快照秒級可用、雲盤回滾效能0損失、essd增值特性以及全地域支援等。阿里雲ecs極速可用特性的典型使用場景包括快速搭建研發測試環境;業務關鍵配置的變更保護,實現秒級備份相關磁碟資料;雲盤極速回滾,並實現回滾的磁碟效能無損耗。

基於極速可用的特性,使用者僅需要幾秒鐘的時間就可以複製出乙個新磁碟。

這一過程也非常簡單,首先建立乙個帶極速可用特性的快照,關鍵引數的設定如下圖所示,主要包括instantaccess和instantaccessretentiondays,前者設定為true就可以設定成為極速可用的快照,後者則是極速可用特性的保留天數,可以讓這特性到期之後就會自動被關閉。當快照建立完成(極速可用特性開啟的情況下,不需要等快照進度完成)之後,就能夠快速建立磁碟並立即掛載使用。

案例:自建資料庫,磁碟空間不夠,怎麼辦?

在這樣的情況下,最直接能想到的解決方案是純人工方式。

這一方案的缺點十分明顯,那就是耗時很久,平均需要1到2小時,而且很容易出錯。

而目前阿里雲推薦的最佳解決方案是將上述過程全部通過編碼實現自動化,做成oos(運維編排,operation orchestration service)的模板,通過oos模組實現一鍵擴容,完成上述方案的全部過程。

這種方案的使用方式就非常簡單了,使用者可以直接進入到oos控制台,找到相應的模板並建立乙個相應的執行即可,整個過程只需要幾十秒就可以完成,而且可以進一步優化至十幾秒。

oos一鍵擴容關鍵技術講解

接下來對於剛才提到的oos一鍵擴容的關鍵技術內幕進行講解。

其實在該方案背後主要包括三個關鍵技術:分別是快照的極速可用特性、通過雲助手執行擴充套件分割槽的命令以及磁碟的序列號。

這裡值得注意的是通過雲助手執行擴充套件分割槽命令時,我們無法知道具體擴充套件的是哪一塊磁碟,因此才需要磁碟的序列號。

磁碟序列號這一特性目前在公有雲ecs上也已經上線了,使用者通過describedisks就可以返回磁碟序列號serialnumber,之後通過雲助手將磁碟序列號傳遞給guestos內部的指令碼,而guestos內部的指令碼則可以通過udevadm info這串命令獲取任意一塊磁碟已掛載裝置的序列號,這個序列號與describedisks返回的序列號是完全一致的,而且從磁碟誕生之後,序列號就不會再發生任何改變,因此可以作為磁碟在guestos內部的唯一標識,並且與openabi的介面實現唯一關聯。

這樣才能幫助我們準確無誤地找到需要擴充套件的磁碟去執行相應的命令。同時,因為ecs具有快照極速可用特性,秒級地打出了乙個資料備份,一旦發生任何意外,還可以通過快照實現秒級回滾,基本可以做到萬無一失地實現自動擴容過程。

一致性快照組的主要特點主要包括四點:即多雲盤io寫入一致性、essd雲盤增值特性、例項級別保護以及功能免費。

適用的場景主要有三種:

案例:使用多資料盤自建資料庫

這裡要介紹的案例是自建資料庫時使用了多資料盤,這樣的做法主要是為了將資料庫常見的日誌和資料拆分到獨立的雲盤上去,使得整個資料庫的效能和穩定性都能夠得到較大的提公升,同時實現日誌和資料的讀寫隔離。

在這種情況下,一旦需要拆分就會遇到兩塊磁碟上資料存在強關聯關係的問題。熟悉資料庫的同學都知道,任何一次寫操作都會先進行日誌操作,日誌寫完之後再去修改真正的資料,當資料寫入完成之後再回來修改日誌,比如像mysql的redo日誌等。

可見,日誌和資料存在強依賴邏輯關係,此時如果打普通快照,那麼存在任何一點點時差都會導致寫入資料在兩塊磁碟上存在不一致的問題,此時就必須要用到一致性快照,實現崩潰一致性的資料備份。

對於這樣的案例場景,阿里雲也提供了最佳實踐,也就是使用ros(資源編排,resource orchestration service)。

該方案的基本過程就是將上述理念通過ros實現模板化,通過ros建立完全一樣的資料庫系統。方案關鍵點在於建立兩塊獨立的資料盤,一塊放資料,另外一塊放日誌,同時對於兩塊資料盤賦予系統的資料庫快照策略auto snapshot policy,並定期地對於兩塊盤進行資料備份,並且使用一致性快照進行備份,避免出現廢棄資料的問題。

以上的案例都是基於自建資料庫的,這兩個案例的關鍵點在於多資料盤和自動擴容磁碟。

將上述兩個案例進行串聯才能夠看到真實的使用場景,也就是先用ros固化上述提到的最佳實踐過程,也就是實現多資料盤,即日誌盤和資料盤的隔離,並且使用自動快照的策略定期地打一致性快照。

與此同時,配上雲監控就能夠在磁碟空間不足的時候,及時報警,此時再通過oos一鍵擴容實現磁碟的自動擴容。

當然,這個過程還可以更進一步優化,在oos控制台配置相應的雲監控專案,當收到監控項報警之後自動觸發oos執行和擴容的模板進行一鍵擴容,真正地實現自動擴容,也就是所謂「無人值守」。

對於極速可用特性而言,建議結合oos、雲助手磁碟或者其他場景的自動運維實踐。如果要對雲盤進行操作或者自動化運維則需要使用磁碟序列號在guestos內部唯一地標識一塊磁碟,這樣才能做到準確無誤。一致性快照則是在mysql這種多盤場景下才會使用,主要用來實現奔潰一致性備份。

本次分享到此結束,感興趣的同學可持續關注和學習雲上環境資料保護最佳實踐。

關注百曉生,笑談雲計算

MySQL 資料庫優化,看這篇就夠了

資料庫優化一方面是找出系統的瓶頸,提高mysql資料庫的整體效能,而另一方面需要合理的結構設計和引數調整,以提高使用者的相應速度,同時還要盡可能的節約系統資源,以便讓系統提供更大的負荷.筆者將優化分為了兩大類,軟優化和硬優化,軟優化一般是運算元據庫即可,而硬優化則是操作伺服器硬體及引數設定.2.1....

MySQL 資料庫優化,看這篇就夠了

資料庫優化一方面是找出系統的瓶頸,提高mysql資料庫的整體效能,而另一方面需要合理的結構設計和引數調整,以提高使用者的相應速度,同時還要盡可能的節約系統資源,以便讓系統提供更大的負荷.筆者將優化分為了兩大類,軟優化和硬優化,軟優化一般是運算元據庫即可,而硬優化則是操作伺服器硬體及引數設定.2.1....

SAE上自動備份WordPress資料庫

wordpress部落格放到sae上之後,原來一直在用的備份外掛程式不能用了,也懶得去移植。發現可以直接用sae的cron服務實現資料庫的備份,簡單粗暴。什麼是cron服務 實現方法 1.在根目錄建立backup.php,內容如下 database backup for sae wordpress ...