qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          數據庫同步過程中一致性和完整性的保證

           數據庫同步過程,最嚴格的指標,第一是效率,即每秒同步SQL條數;其次是一致性,即主庫產生的數據,備庫同步后是否一致;第三就是數據庫同步的完整性如何保證,即當同步各個環節出現問題時,如何考慮出錯處理,下面我們將分別進行討論并進行合理性分析。

            第一、效率

            數據庫同步過程主要分為三個階段,即抽取、分析、裝載。

            抽取過程主要是實時讀取數據庫日志,這部分可以作到毫秒級別間隔,所以不存在效率問題,基本上可以作到實時抽??;

            分析過程主要是分析SQL語句并把源日志轉化為備庫的可裝載日志,這部分的主要時間是寫文件時間,由于普通硬盤寫入時間是50M/秒左右,故對于大交易量情況,如果每秒主庫陣列產生日志量上300M/秒左右,那相比之下分析組件還是會有秒級延遲的,因為我們同步軟件一般都不安裝在主庫,無法使用高速陣列的寫入速度,所以秒級別延遲還是會產生的,但是只要不是持續高峰日志量的產生速度,再經過一段時間后數據會自行同步,如果要追求實時抽取的同時又要實時分析,那建議只能給同步服務器配置一個陣列了;

            裝載過程主要是根據分析組件的結果進行備庫SQL語句的裝載,所以并發裝載是提高效率的唯一方法,不過對于備庫服務器配置不是很高的情況,建議數據庫長連接的數目需要能夠合理配置,因為備庫有時會作為查詢統計的負載分擔,所以如果備庫的資源有限,對于查詢統計分擔的效果會大打折扣。

            第二、一致性

            如何能夠保證備庫的數據和主庫一致,這個問題如果在業務層面提出來,大家肯定沒什么好的辦法,一個共同的回答就是“查看備庫”,用應用去連,之后檢查剛剛同步的數據是正確的就可以了,不過這樣的抽查很有可能檢查不出來特殊錯誤的數據,我想從幾個機制方面來分析這個問題。

            1、分析日志(Analysis Log)

            就是即將裝載到備庫的SQL語句,這部分是裝載正確的根本,這部分數據如果正確了,則保證了數據源的正確。

            2、裝載日志(Upload Log)

            就是裝載數據時是否出現問題,有時備庫和主庫表定義有不一致,那么在這個日志就會記錄出錯,根據此日志就能夠檢查出問題出現在什么地方。

            通過以上兩個日志基本能保證同步過程中的錯誤捕捉,同時再加上同步數據檢查程序(此數據需要主、備庫檢查過程中不能更改數據)和應用程序。

            連接備庫抽查是兩個輔助檢查方式,同時備庫作為查詢統計分析進行實時提供服務也會把抽查變成常態,從而保證數據的一致性。

            第三、完整性

            數據庫的完整性,主要從容錯機制來考慮,例如出現下面錯誤情況時需要同步程序能夠自動恢復:

            1、源庫斷電或重起

            2、源庫SHUTDOWN

            3、源庫網絡斷

            4、備庫斷電或重起

            5、備庫SHUTDOWN

            6、備庫網絡斷

            7、數據庫裝載出錯

            針對上面主要幾種情況,同步軟件必須進行一一考慮斷點的記錄方式和位置,保證任何情況下同步程序能夠續抽、續傳,甚至對錯誤處理也可以通過人為參與后繼續同步,同時還有兩方面功能必須考慮:

            1、不停機初始化

            2、日志已經歸檔

            3、自身程序停止的重起

            4、同步服務器斷電之后斷點啟動

            數據庫同步軟件只有充分考慮了以上三個方面的指標,才能為行業客戶提供優秀的、實時的、數據完整一致的同步產品,滿足相關基于數據庫同步的業務需求。

          posted on 2012-06-08 09:41 順其自然EVO 閱讀(304) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 聂拉木县| 深水埗区| 中江县| 婺源县| 衢州市| 连南| 田东县| 广昌县| 凯里市| 基隆市| 社会| 游戏| 伊通| 二手房| 扎鲁特旗| 封丘县| 昆山市| 朔州市| 常德市| 闵行区| 肥乡县| 汉阴县| 无棣县| 平泉县| 连山| 滨州市| 东丽区| 五莲县| 仙居县| 巴南区| 昌平区| 乐平市| 赫章县| 晋江市| 张家界市| 日土县| 张家川| 凉山| 内丘县| 额尔古纳市| 冕宁县|