基於Amoba實現mysql主從讀寫分離

2021-09-07 09:31:40 字數 1030 閱讀 9434

一、amoeba簡介

amoeba是乙個以mysql為底層資料儲存,並對應用提供mysql協議介面的proxy。它集中地響應應用的請求,依據使用者事先設定的規則,將sql請求傳送到特定的資料庫上執行。基於此可以實現負載均衡、讀寫分離、高可用性等需求。與mysql官方的mysql proxy相比,作者強調的是amoeba配置的方便(基於xml的配置檔案,用sqljep語法書寫規則,比基於lua指令碼的mysql proxy簡單)。

amoeba相當於乙個sql請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。使用者需要結合使用mysql的 replication等機制來實現副本同步等功能。amoeba對底層資料庫連線管理和路由實現也採用了可插撥的機制,第三方可以開發更高階的策略類來替代作者的實現。這個程式總體上比較符合kiss原則的思想。目前 amoeba 已在很多 企業的生產線上面使用。

二、amoeba解決的問題及目前存在的劣勢:

1.主要解決的問題:

(1). 資料切分後複雜資料來源整合

(2). 提供資料切分規則並降低資料切分規則給資料庫帶來的影響

(3). 降低資料庫與客戶端連線

(4). 讀寫分離路由

2.劣勢:

(1).目前還不支援事務

(2).暫時不支援儲存過程(近期會支援)

(3).不適合從amoeba導資料的場景或者對大資料量查詢的query並不合適(比如一次請求返回10w以上甚至更多資料的場合)

(4).暫時不支援分庫分表,amoeba目前只做到分資料庫例項,每個被切分的節點需要保持庫表結構一致

三、為什麼要用amoeba

目前要實現mysql的主從讀寫分離,主要有以下幾種方案:

四、方案架構圖

amoeba的安裝配置可以參考:

mysql 3台主主 mysql主主

設定主 主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器上 mysqld server id 10 log bin mysql bin relay log relay mysql relay log index relay mysql.index auto i...

mysql配置主主指令碼

指令碼說明 1.可用於建立mysql資料庫主主 主從 2.可以用於快速恢復mysql資料庫主主 主從 3.可用於檢視mysql資料庫同步狀態 4.可用於mysql資料庫使用者檢視 先決條件 1.mysql資料庫已經安裝好,root賬號開啟遠端登陸許可權或有其它有遠端管理許可權的賬號 2.兩台mysq...

Mysql keepalived實現主主互備架構

實現主主互備mysql架構,需要注意 1 將資料庫的防火牆關閉,service iptables stop 2 關閉selinux,setenforce 0命令臨時關閉selinux keepalived安裝注意事項 1 需要先安裝yum install openssl openssl devel ...