[發明專利]一種數據備份方法及裝置有效
| 申請號: | 201210312721.7 | 申請日: | 2012-08-29 |
| 公開(公告)號: | CN103631831A | 公開(公告)日: | 2014-03-12 |
| 發明(設計)人: | 錢在晨 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06F11/14 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 郭潤湘 |
| 地址: | 英屬開曼群島大開曼*** | 國省代碼: | 開曼群島;KY |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 數據 備份 方法 裝置 | ||
技術領域
本申請涉及通信技術領域,尤其涉及一種數據備份方法及裝置。
背景技術
MySQL是一種小型關系型數據庫管理系統。一般的,MySQL包括主庫和備庫,主庫用于提供數據管理和數據查詢等功能,備庫用于備份主庫中的數據,用以在主庫發生故障時代替主庫提供相應的功能。
圖1為現有技術中MySQL中的主庫將自身的數據備份到備庫的過程,具體包括以下步驟:
S101:主庫在對自身的數據進行操作時,生成對應的操作記錄并記錄在二進制日志(binlog)中。
其中,主庫對自身的數據的操作包括:更新操作、插入操作、刪除操作。
例如,主庫將自身的數據A更新為數據B時,生成將該數據A更新為數據B的操作記錄,并記錄在binlog日志中。
S102:備庫創建一個I/O線程,通過該I/O線程讀取主庫保存的binlog日志。
S103:備庫將讀取到的binlog日志轉換成中繼日志(relay)。
其中,主庫保存的binlog日志中記錄的操作記錄,與備庫轉換的relay日志中記錄的操作記錄相同,只是binlog日志與relay日志的格式不同。
繼續沿用上例,由于主庫的binlog日志中記錄有將數據A更新為數據B的操作記錄,因此備庫轉換的relay日志中也包含將數據A更新為數據B的操作記錄。
S104:備庫創建一個SQL線程,通過創建的SQL線程依次讀取relay日志中記錄的每個操作記錄。
繼續沿用上例,備庫讀取到的操作記錄即為將數據A更新為數據B的操作記錄。
S105:備庫根據讀取到的操作記錄,將該操作記錄對應的數據讀取到內存中,并根據該操作記錄對內存中的該數據進行相應操作。
繼續沿用上例,由于讀取到的操作記錄為將數據A更新為數據B的操作記錄,因此該操作記錄對應的數據即為備庫中保存的數據A。備庫則將該數據A讀取到內存中,再將該操作記錄(將數據A更新為數據B的操作記錄)解析為相應的執行語句并執行,用以將內存中的該數據A更新為數據B,完成對主庫數據的備份。
由上述圖1所示的過程可以看出,備庫在備份主庫中的數據時,是通過創建的一個SQL線程依次讀取relay日志中的操作記錄進行操作的,也即備庫是通過一個SQL線程串行的執行relay日志中各操作記錄對應的執行語句,實現數據的備份的。而在實際應用中,主庫通常是通過多個線程并行的對保存的各數據進行操作的,例如主庫可以同時通過幾十個線程并行的對相應數量的數據進行操作,而備庫在備份這些數據時,只能通過一個線程串行的備份這些數據,這就會導致備庫對主庫數據的備份速度遠遠落后于主庫對自身保存的數據進行操作的速度。
為了提高備庫對主庫數據進行備份的速度,現有技術中主要采用以下方法:
按照relay日志中記錄各待處理事務的先后順序,依次針對relay日志中的每個待處理事務,判斷當前正在處理的事務中是否存在與該待處理事務沖突的事務,若是,則將該待處理事務加入到與該待處理事務沖突的事務所在的SQL線程的等待隊列中等待處理,否則,確定該待處理事務的特征值,根據該特征值確定處理該待處理事務的SQL線程,將該待處理事務加入到確定的SQL線程的等待隊列中等待處理。
其中,binlog日志和relay日志均是以事務的形式對操作記錄進行記錄的,一個事務中包含若干個操作記錄,這若干個操作記錄一般是用戶在進行一個業務操作時,數據庫根據這個業務操作對自身保存的數據所要做出的若干個操作所對應的若干個操作記錄。并且,在binlog日志和relay日志中,每個事務均具有一個事務開始標記和事務結束標記。兩個沖突的事務即為:包含的操作記錄對應的數據相同的兩個事務。
可見,現有技術中對于互不沖突的各事務,是根據各事務的特征值來確定用于并行處理各事務的SQL線程的,例如可以通過哈希(hash)算法確定各事務的特征值,并根據預設的特征值與SQL線程的對應關系,將互不沖突的各事務添加到相應SQL線程的等待隊列中,以等待相應SQL線程的處理。
然而,由于備庫需要備份的數據是海量的,也即備庫需要處理大量的事務,因此很難找到一種可以使大量互不沖突的事務能夠被均勻的分配到有限數量的SQL線程上進行處理hash算法,這就會導致備庫雖然預先建立了多個用于并行處理互不沖突的事務的SQL線程,但是有些SQL線程的等待隊列中長時間存在很多待處理事務,而有些SQL線程的等待隊列中則長時間沒有待處理事務而處于閑置狀態,這顯然浪費了備庫的系統資源。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210312721.7/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種基于P2P的流媒體傳輸方法、裝置及系統
- 下一篇:一種氣水冷凝分離裝置
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





