資料庫高效能讀寫分離集群操作說明

2021-09-07 11:19:04 字數 2085 閱讀 8067

1.系統概述

在乙個高併發的事務型系統中,當寫事務佔的比例相對讀事務相對較小時,可以借助dm7的主備系統備機可讀的特點,將讀事務轉移到備機執行,減少單節點的併發壓力,通過增加備機節點資源,提高系統的併發能力,增強系統效能。

dm7提供一種獨具創新的主備方案,即時歸檔主備系統,該系統可通過客戶端來實現讀寫事務的自動分離,讀事務在備機執行,寫事務在主機執行,減輕主機的負載。備機可以配置多個,備機配置的越多,更能分擔主機的壓力,系統整體併發效率越高。

2.讀寫分離流程

dm7使用jdbc驅動與伺服器結合的方式實現讀寫分離,大致流程如下:

1) 使用者登入後,客戶端首先連線到主機,主機根據即時歸檔的配置,獲取乙個有效的備機資訊,並返回給客戶端。

2) 客戶端根據主機返回的備機ip和埠,建立與該備機的連線。

3) 客戶端執行語句時先在備機上執行,如果是唯讀事務,則只在備機上執行。

4) 如果系統收到客戶端試圖在備機模式下修改資料等錯誤,則說明該事務是寫事務,則轉移到主機上執行。

5) 一旦主機上執行的寫事務提交,則下次繼續從備機開始執行。

6) 為了實現負載均衡,防止出現讀事務過多占用備機資源、主機空閒的情況,客戶端採用一定的演算法進行均衡,主機上也會執行一部分讀事務。

▲圖1 讀寫分離流程

3.即時歸檔

dm7支援多種歸檔型別,本地歸檔、實時歸檔、同步歸檔、非同步歸檔等型別。為了實現讀寫分離,新增一種即時歸檔(timely archive)型別,以區別實時歸檔。

首先,即時歸檔主備系統不會發生主備切換,在主機傳送完日誌到備機後刷日誌前主機崩潰的情況下,不能讓備機多一段日誌,確保主機資料是完整且最新的。

其次,需要保證主備機的資料一致性,避免從備機讀的資料到主機進行更新時資料已經不一致了。

4.事務一致性

若事務全為讀操作,則全部在備機上執行。

若事務全為寫操作,則全部在主機上執行。

若事務既有讀又有寫,備機會將寫操作返回給主機執行,該事務中從寫操作開始以後所有操作均在主機上執行,保證事務一致性。

5.資料同步

配置讀寫分離集群之前,必須先同步主備機資料,確保兩者保持完全一致;主資料庫可以是新初始化的資料,也可以是正在生產、使用中的資料。dm7提供了兩種方式初始化同步主備機資料,資料檔案拷貝以及備份還原方式。

不能使用分別初始化庫的方法,原因如下:

1) 每個庫都有乙個永久魔數(permenant_magic),主備機傳送日誌時會判斷這個值是否一樣,確保來自同乙個庫,不同的庫傳送不了日誌

2) 由於dminit初始化資料庫時,會生成隨機金鑰用於加密,每次生成的金鑰都不相同,備機無法解析採用主機金鑰加密的資料

1. 資料檔案拷貝

如果搭建系統之前,資料庫系統已經上線執行了,可通過拷貝資料檔案的方式實現主備資料庫的同步。具體步驟包括:

1) 正常關閉資料庫。

2) 嚴格按照資料檔案在主機上的分布,拷貝資料檔案到備機的對應目錄。

3) 如果資料檔案統一存放在乙個目錄下,則直接拷貝整個目錄即可。

2. 備份還原方式

1) 正常關閉資料庫

2) 進行離線備份

/dmbackup type=full ini_path=/dm7data/dm1/dameng/dm.ini name=backup_file
3) 拷貝備份檔案到備機

4) 執行離線資料庫恢復

/dmrestoreini_path=/dm7data/dm1/dameng/dm.ini file=/dm7data/dm1/db_dameng_20120910180136000741.bak
六、 讀寫分離效果

搭建1主2備系統,最優情況可提公升吞吐量250%。

▲圖2 讀寫分離測試效果

資料庫讀寫分離,資料庫效能瓶頸

有一些技術同學可能對於 讀寫分離 了解不多,認為資料庫的負載問題都可以使用 讀寫分離 來解決。這其實是乙個非常大的誤區,我們要用 讀寫分離 首先應該明白 讀寫分離 是用來解決什麼樣的問題的,而不是僅僅會用這個技術。什麼是讀寫分離?其實就是將資料庫分為了主從庫,乙個主庫用於寫資料,多個從庫完成讀資料的...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...