色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

核心業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫平臺遷移: Oracle -> MySQL

  為了對核心技術(shù)擁有更多的自主控制能力,為了解決數(shù)據(jù)庫的線性擴(kuò)展問題,為了盡量減少對商業(yè)軟件的依賴,為了擺脫對高端硬件的依賴,為了…基于以上多種原因,2年前,我們計劃將公司某核心應(yīng)用平臺進(jìn)行大手術(shù):數(shù)據(jù)庫平臺從軟件到硬件全部重構(gòu)。當(dāng)然,這其中應(yīng)用架構(gòu)的改造也不可避免的進(jìn)行了大換血。

  這個項目無論是從技術(shù)角度還是是業(yè)務(wù)角度來說,都對我們有著非常大的價值,也必定會帶來非常深遠(yuǎn)的影響。項目歷時2年多,分4個階段才完成:

  • 應(yīng)用接口統(tǒng)一
  • 這一階段主要是為了后面真正遷移的時候做準(zhǔn)備工作,將該核心應(yīng)用系統(tǒng)的所有數(shù)據(jù)訪問入口統(tǒng)一到一起,全部以服務(wù)化的接口方式呈現(xiàn)給其他有需要的系統(tǒng),一來方便后續(xù)變更的控制,二來也推進(jìn)了服務(wù)化的進(jìn)程。

  • Oracle數(shù)據(jù)庫中拆分(1拆16)
  • 這個階段本不是必要的,但是由于項目啟動稍微晚了點,數(shù)據(jù)出現(xiàn)了爆發(fā)性增長,導(dǎo)致該系統(tǒng)的數(shù)據(jù)表太大(單表不帶索引過500GB),原 Oracle 數(shù)據(jù)庫已經(jīng)快撐不住了。為了安全起見,先在 Oracle 中從一個主表以會員ID進(jìn)行 hash 運算后再進(jìn)行水平拆分,從1個表分拆成了16個。附表由于訪問量稍小,而且全部是根據(jù)主鍵訪問,暫時保留原樣。

    當(dāng)然,這樣的水平拆分,必然會帶來數(shù)據(jù)訪問路由以及數(shù)據(jù)合并的問題。我們專門為此開發(fā)了具有分布式數(shù)據(jù)庫路由/數(shù)據(jù)合并,數(shù)據(jù)庫讀寫分離,數(shù)據(jù)庫鏈接管理等功能的數(shù)據(jù)訪問中間層,專門解決拆分后給應(yīng)用服務(wù)器帶來的影響,使得應(yīng)用服務(wù)器完全感受不到后端數(shù)據(jù)庫的變化。

    這個數(shù)據(jù)訪問中間層,對前端應(yīng)用服務(wù)器來說,就是一個完整的數(shù)據(jù)庫,所有數(shù)據(jù)請求都從這里實現(xiàn),以協(xié)議的方式和前端應(yīng)用服務(wù)器的jdbc驅(qū)動進(jìn)行交互,以便讓數(shù)據(jù)庫對應(yīng)用服務(wù)器徹底透明。

  • Oracle遷移至 MySQL(16拆128)
  • 這個階段是整個階段中歷時最長,復(fù)雜度最高,風(fēng)險系數(shù)最高的,未知因素也最多的一個階段。雖然 MySQL 數(shù)據(jù)庫已經(jīng)在互聯(lián)網(wǎng)行業(yè)占據(jù)了大片江山,但是對于阿里巴巴來說,卻仍然是一個新鮮玩意兒,因為之前我們一直都用 Oracle 來提供所有的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫服務(wù)。

    在此之前,我們從來沒有在如此核心業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫上使用過 PC Server 和本地硬盤來承載數(shù)據(jù)庫,一直是使用 IBM 小型機和中高端存儲設(shè)備來解決高性能和高可靠的問題。在更換成 PC Server 和本地硬盤來承載數(shù)據(jù)庫之后,我們就必須面對 PC Server 本身硬件可能存在的不可靠性所帶來的 Crash,所以我們必須有一套完善的 HA 切換機制,要比小型機廠商所提供的商業(yè) HA 管理軟件更加高效更加自動化更加可控,才能我們降低了設(shè)備本身可靠性之后達(dá)到原有的可用性要求。

    對于一個需要滿足 365 * 24 * 7 的核心業(yè)務(wù)系統(tǒng)來說,肯定是不可能給我們太多時間來進(jìn)行數(shù)據(jù)遷移的,所以我們不得不設(shè)計出一個對現(xiàn)有系統(tǒng)影響盡可能小的遷移方案,這勢必會造成方案的高度復(fù)雜化,帶來更多的風(fēng)險。最后的遷移方案要經(jīng)歷如下4個階段:

    1. Oracle 讀/寫;;MySQL 初始化并增量寫
    2. Oracle 讀/寫; MySQL 寫
    3. Oracle 寫; MySQL 讀/寫
    4. Oracle 停訪問; MySQL 讀/寫

    當(dāng)然,也正式由于有如此復(fù)雜的方案,才確保了在整個遷移過程中的的停機時間被控制在了10分鐘之類。

  • 附屬Detail信息遷移至 MySQL
  • 從項目開始,至完成主表拆分結(jié)束,已經(jīng)接近2年了。這2年時間內(nèi),數(shù)據(jù)量一直都在飛漲,這讓即使僅僅只是按照主鍵訪問的附表也快無法承受持續(xù)增長的業(yè)務(wù)壓力,附表的拆分也就成了必行之勢。由于在原來主表拆分的過程中,整個項目組已經(jīng)積累了大量的經(jīng)驗,附表拆分過程非常順利,基本沒有出現(xiàn)任何問題。雖然附表的拆分過程與主表相比除了 1拆16這個階段外沒有減少其他任何環(huán)節(jié),但是整個拆分過程也才2個月就全部搞定了。

  這個遷移項目算是徹底完成了,但是我們的遷移之路并不會就此止步,還有很多的系統(tǒng)仍然存在擴(kuò)展性問題,還有很多的數(shù)據(jù)庫應(yīng)用等著我們?nèi)ゲ鸱帧?/p>

  注:同事們還為此送了我們一個雖不太雅但也意思相近的名稱“拆遷隊”。

it知識庫核心業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫平臺遷移: Oracle -> MySQL,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 永福县| 伊吾县| 晋江市| 临沭县| 合阳县| 天全县| 建水县| 海安县| 托克逊县| 且末县| 班玛县| 太康县| 安平县| 东阳市| 德保县| 施甸县| 彭山县| 宕昌县| 旬邑县| 昌宁县| 大足县| 封丘县| 搜索| 海原县| 石河子市| 海丰县| 将乐县| 连山| 天台县| 顺昌县| 九龙县| 舒兰市| 郯城县| 海晏县| 定州市| 印江| 罗城| 靖边县| 汝阳县| 武宁县| 光泽县|