[轉]使用複製來提升MySQL的高可用性和處理能力
昨晚看了一晚上的MySQL文件,主要是關於MySQL的複製方面的文件,用的工具是MySQL的幫助文件+金山詞霸。
終於比較大概的瞭解瞭如何透過複製來提升MySQL資料庫的高可用性和處理能力,不過還沒有經過實際的試驗,但整體的思想是清楚了,下面把思路大概的描述一下,有機會再進行實驗。
首先在伺服器端採用1+N的模型來安裝和配置MySQL資料庫。1就是一個master資料庫,N就是一至多個slave資料庫。master資料 庫必須啟用binlog模式,關於這兩種資料庫的配置參見MySQL的文件。配置完成後就形成了一個1+N的複製叢集,當對master進行修改時會自動 把修改的資料更新到N個slave資料庫上。但是有一個注意的是,所有的修改操作包括新增、刪除、修改等語句必須作用在master資料庫上,這樣才能使 資料可靠的複製到其他slave伺服器上。另外,由於slave伺服器只用作查詢,因此選用MyISAM的儲存引擎可以提高查詢的速度。
而在客戶端呢?如何使客戶端程式能均衡的使用這些可用的伺服器呢?而且更新操作只能對master進行處理。這個豈不是應用程式對資料庫的操作邏輯非常的複雜?
其實沒有那麼複雜,MySQL為我們提供了介面可以將這些複雜的操作透明化。下面主要介紹採用JDBC的客戶端如何工作在基於複製的叢集環境中,其他程式語言請參照mysql的文件。
MySQL最新的JDBC驅動程式包中提供了一個驅動類就是 com.mysql.jdbc.ReplicationDriver 。這個驅動類允許在url中設定多個mysql主機地址,例如:
jdbc:mysql://master1,slave1,slave2/dlog?autoReconnect=true&roundRobinLoadBalance=true
在上面的url中,有三個主機地址分別是master1,slave1,slave2,其中ReplicationDriver 規定第一個主機是master主機地址,剩下的全部是slave主機。另外有兩個引數必須指定為true,就是autoReconnect和roundRobinLoadBalance。
使用這個驅動和配置後還不能馬上解決所有的問題,我們還需要對程式做一些小改動。
我們必須告訴驅動程式,哪些語句的執行是作用在master資料庫,而哪些語句的執行作用在slave資料庫上。
ReplicationDriver 是透過Connection物件的readOnly屬性來判斷該操作是否為更新操作。因此我們在執行一個sql語句的時候必須呼叫一下 setReadOnly告訴驅動程式當前執行的操作是否是隻讀。如果你是使用hibernate運算元據庫的,那可以呼叫 Query.setReadOnly方法。
以上就是整個思路的大概描述,猜想肯定還有存在一些問題,例如因為資料的複製過程是非同步的,也是說有可能執行了某個更新操作,但是查詢的時候查不到的情況出現。當然這些問題只能在實際的過程中進行解決。
另外關於最新版本的MySQL 5.1有一個叢集的功能,不過經過研究發現這個東西簡直就是兒戲,實在搞不懂MySQL怎麼會做這麼不負責任的設計,因為這個特性要求資料庫是整個 load到記憶體中的,也就是說你的資料有多大,記憶體就得有多大,怎麼說呢? 如果你真的記憶體足夠大,你去試試吧,反正這種方案已經被我否決了,希望MySQL能改進一下。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-775439/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用MySQL內建複製功能來最佳化可用性(轉)MySql
- 用MySQL內建複製功能來最佳化可用性(轉)MySql
- mysql複製報錯案例處理MySql
- 【Mysql】MySQL 主主複製 + LVS + Keepalived 實現 MySQL 高可用性MySql
- mysql的處理能力問題MySql
- MySQL 常見同步複製故障處理方法MySql
- 處理mysql複製故障一例薦MySql
- 面對高頻業務需求,如何提升實時資料處理能力?
- mysql的處理能力問題(2)MySql
- 轉~timesten系列六:定義複製,實現timesten的高可用性
- 處理MySQL複製環境Slave故障的一個案例MySql
- mysql多源複製跳過錯誤處理方法MySql
- 專案02(Mysql gtid複製故障處理01)MySql
- MySQL主從複製延遲原因及處理思路MySql
- 使用MySQL自身複製來恢復binlogMySql
- MySQL的非同步複製和半同步複製MySql非同步
- MySQL 的主從複製(高階篇)MySql
- oracle高階複製(轉載)Oracle
- MySQL 複製全解析 Part 11 使用xtrabackup建立MySQL複製MySql
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL 處理重複資料MySql
- 詳解GaussDB(for MySQL)服務:複製策略與可用性分析MySql
- 提升規則自治能力與原生分析能力、支援影片流接入處理
- MySQL Fabric使用介紹01——高可用性HAMySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- 提升 Linux 開發者的能力(轉)Linux
- MySQL高可用之組複製技術(3):配置多主模型的組複製MySql模型
- MySQL高可用之組複製技術(2):配置單主模型的組複製MySql模型
- PG 流複製的隱患以及處理措施
- 新型語音協處理器提升快速精確語言識別及處理能力
- MySQL的主從複製與MySQL的主主複製MySql
- 部落格作業第五週-mysql主從複製、高可用性、運維自動化ansibleMySql運維
- 主體複製概念和體系結構——高階複製
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- mysql主從複製的理解和搭建MySql
- MySQL 主從複製的原理和配置MySql
- MySQL 同步複製及高可用方案總結MySql