1. 程式人生 > >MySQL之——基於Amoeba實現讀寫分離

MySQL之——基於Amoeba實現讀寫分離

今天,我們繼續MySQL的話題,今天為大家帶來一篇基於Amoeba實現MySQL讀寫分離的方案文章,好我們直接進入今天的正題吧。

一、伺服器規劃

主機名 IP地址 節點
liuyazhuang152 192.168.0.152 amoeba
liuyazhuang153 192.168.0.153 寫庫
liuyazhuang154 192.168.0.154 讀庫

二、測試方案

我們在192.168.0.152上安裝amoeba,在192.168.0.153和192.168.0.154上安裝mysql,這兩臺mysql伺服器無任何交集,通過配置amoeba,將192.168.0.153上的mysql配置成寫庫,將192.168.0.154上的MySQL配置成讀庫;我們客戶端連線到amoeba,由amoeba操作資料庫,我們通過amoeba向相應資料庫中寫入資料,通過查詢:192.168.0.153伺服器MySQL中有插入的相關資料,192.168.0.154上的MySQL伺服器則沒有;那麼,我們就認為amoeba幫我們的程式完成了讀寫分離功能;

三、安裝MySQL

四、安裝並配置Amoeba

1、下載Amoeba

2、安裝Amoeba

Amoeba是Java寫的,所以,需要我們的伺服器配置java執行環境,這裡我就不講如何配置Java執行環境了,大家可以參考博文《Linux CentOS下搭建JAVA執行環境

由於Amoeba解壓後直接沒有檔案了,所以我們要提前建立好資料夾,我這裡在/usr/local下建立資料夾:amoeba-mysql-binary-2.2.0

然後在命令列輸入如下命令

tar -zxvf amoeba-mysql-binary-2.2.0.tar.gz  -C /usr/local/amoeba-mysql-binary-2.2.0

將Amoeba解壓到/usr/local/amoeba-mysql-binary-2.2.0 目錄下,此時,我們完成了安裝。

3、配置Amoeba

我們到Amoeba的conf目錄下可以看到如下配置檔案:

這裡我們重點關注amoeba.xml和dbServers.xml檔案。

3.1配置amoeba.xml

我們開啟amoeba.xml檔案,找到如下程式碼:


我們配置好使用者名稱和密碼,其中8066是Amoeba預設埠,配置好的效果如下:

找到如下程式碼:

將註釋去掉,效果如下:


這就配置好了amoeba檔案,當我們配置好後,我們訪問mysql時,需要訪問amoeba.xml檔案中配置的埠和使用者名稱、密碼,通過Amoeba來連結MySQL。

3.2配置dbServers.xml

在dbServers.xml檔案中找到如下程式碼:

我們在這裡進行相關資料庫的配置,要注意:這些資料庫的配置指定要讀寫分離的資料庫、使用者名稱、密碼,其中使用者名稱和密碼是配置成在終端訪問Amoeba的使用者名稱和密碼。我修改後的效果如下:

此時的使用者名稱和密碼需要MySQL伺服器授權給Amoeba伺服器,使其能夠登入到MySQL伺服器。

然後我們找到如下程式碼:


將其修改為兩臺MySQL伺服器所在的IP地址,如下圖:


至此,我們配置好了基於Amoeba的讀寫分離。

4、在MySQL中為Amoeba訪問授權

分別登陸兩臺MySQL伺服器,執行以下命令為Amoeba授權

 grant all on lyz.* to [email protected] identified by 'lyz';
其中這裡的使用者名稱和密碼是我們在dbServers.xml檔案中配置的使用者名稱和密碼。此時完成了MySQL的授權

5、執行Amoeba

我們進入到Amoeba的bin目錄在命令列輸入如下命令執行Amoeba

./amoeba start &
其中,&代表在後臺執行,此時我們發現啟動失敗:資訊如下:


這個是說配置的Java stack太小了,最少要228K,此時我們開啟bin目錄下的amoeba指令碼檔案,找到如下程式碼:

將上圖的128K改為256K(你可以根據你的實際情況修改),如下圖:


此時我們重新輸入命令

./amoeba start &

啟動成功

6、測試

6.1 查詢資料

我們先分別查詢MySQL資料庫表上的相關資料,未通過Amoeba操作資料庫的時候,我們是新建的資料庫lyz和表t1,此時192.168.0.153和192.168.0.154上MySQL資料表都應該為空,如下圖:


6.2登入Amoeba

我們在192.168.0.152上輸入如下命令登入Amoeba,通過Amoeba訪問資料庫

mysql -h192.168.0.152 -uroot -proot -P 8066
注意:我們這裡輸入的埠是8066,此埠是Amoeba配置的埠,我們需要登入Amoeba而不是直接登入MySQL

登入成功如下圖所示:

6.3測試

  此時我們在終端查詢資料表資料,顯示為空,如下圖:


我們在Amoeba伺服器終端插入一條資料,如下:


同時,我們在Amoeba上查詢資料如下:


資料為空。

我們登入192.168.0.153資料庫,查看錶資料如下:


如圖,說明Amoeba向192.168.0.153庫插入了資料。

我們在登入192.168.0.154資料庫檢視資料資訊,如下:

說明Amoeba沒有向192.168.0.154庫插入資料,並從192.168.0.154庫讀取資料。

至此,基於Amoeba實現MySQL讀寫分離全部配置完成。

五、附錄

./amoeba start & 啟動amoeba
./amoeba stop  關閉amoeba


相關推薦

MySQL——基於Amoeba實現分離

今天,我們繼續MySQL的話題,今天為大家帶來一篇基於Amoeba實現MySQL讀寫分離的方案文章,好我們直接進入今天的正題吧。 一、伺服器規劃 主機名 IP地址 節點 liuyazhuang152 192.168.0.152 amoeba liuyazhuang153

mysql基於amoeba分離

    前文中有講到有關mysql的主從配置,如果單單就主從配置而言,僅能實現資料的及時備份與恢復,對於那些更新不頻繁,不需要時時備份資料的使用者來說意義不大,而且僅為了備份而再架設一臺資料庫伺服器有些浪費,因為使用免費的雲備份完全可以勝任,當然架設主從資料庫的意義當然不僅

Mysql主從配置,實現分離

windows安裝 建議 xid 分布式 唯一標識 -1 在線下載 命令 進行 大型網站為了軟解大量的並發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連接操作,數據庫必然會崩潰,

複習電商筆記-23-Amoeba實現分離

Amoeba實現讀寫分離     概念 Amoeba是一個以MySQL為底層資料儲存,並對應用提供MySQL協議介面的proxy。它集中地響應應用的請求,依據使用者事先設定的規則,將SQL請求傳送到特定的資料庫上執行。基於此可以實現負載均衡、讀寫分離、高可用性等需

黃聰:Mysql主從配置,實現分離

大型網站為了軟解大量的併發訪問,除了在網站實現分散式負載均衡,遠遠不夠。到了資料業務層、資料訪問層,如果還是傳統的資料結構,或者只是單單靠一臺伺服器扛,如此多的資料庫連線操作,資料庫必然會崩潰,資料丟失的話,後果更是 不堪設想。這時候,我們會考慮如何減少資料庫的聯接,一方面採用優秀的程式碼框架,進行程式碼的優

MySQL中介軟體proxysql實現分離

環境說明: IP 角色 應用 平臺 192.168.161.96 讀寫分離解析主機 proxysql rhel7.4 19

MySQL主從複製 + Mycat實現分離

說明:兩臺MySQL伺服器都是使用CentOS6.5系統,MySQL版本為mysql-5.7.17 MySQL一主一被實現主從複製 注意:寫包括insert,delete,update 操作;讀只有select其他操作由主master的二進位制檔案決定。 一.在19

SpringBoot進行MySql動態資料來源配置實現分離(連線池Druid)

1.簡介 前面使用C3P0連線池進行過資料庫的讀寫分離的實驗,今天換一下資料庫連線池改造一下,原理還是和原來的一樣。 Druid是阿里出品,淘寶和支付寶專用資料庫連線池,但它不僅僅是一個數據庫連線池,它還包含一個ProxyDriver,一系列內建的JDBC元

amoeba實現分離

棧設置 ipa ctype tor attribute accept process eight ren amoeba的運行環境依靠java的jdk; 下面執行amoeba的安裝不走 # mkdir /usr/local/src/amoeba 上傳文件:amoe

docker配置mysql主從與django實現分離

一、搭建主從mysql環境 1 下載mysql映象 docker pull mysql:5.7 2 執行剛下載的mysql映象檔案 # 執行該命令之前可以使用`docker images`是否下載成功 docker run -p 3307:3306 --name mysql-master -v /mysql

Amoeba搭建高可用Mysql集群(實現Mysql主從復制、分離、負載均衡)

proc 分布式數據庫 啟動 parent 分布 技術分享 事務 admin str Amoeba是什麽? Amoeba(變形蟲)項目,該開源框架於2008年 開始發布一款 Amoeba for Mysql軟件。這個軟件致力於MySQL的分布式數據庫前端代理層,它主要在應用

利用Amoeba實現MySQL主從復制和分離

生產環境 層級 cal 目錄名 發現 slaves zxvf 同步服務 code 在實際生產環境中,如果對數據庫的讀和寫都在同一個數據庫服務器中操作,無論是在安全性、高可用性,還是高並發等各個方面都是完全不能滿足實際需求的,因此,一般來說都是通過主從復制(Master-Sl

Linux 使用Mycat實現分離基於Mysql分離

各位同學大家好,今天給大家分享一下用Mycat進行資料庫的讀寫分離,本篇文章是基於上一篇的mysql主從複製。Linux上實現Mysql的主從複製(為Mycat讀寫分離作準備) 在上一篇文章中,我們在兩個伺服器使用同版本的作業系統和mysql: 伺服器1:centos7.3,mysql5.6 伺服器

MySQL MHA + ProxySQL + keepalived 實現分離,高可用(一)

don replica ifconfig soft 似的 恢復 select 8.0 ext 準備服務器: docker network create --subnet=192.168.0.0/16 staticnetdocker run -d --privileg

MySQL MHA + ProxySQL + keepalived 實現分離,高可用(二)

ProxySQL安裝 yum/rpm安裝 在github或官網上可以下載rpm包,wiki的Getting start章節有詳細介紹。 cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxyS

MySQL多資料來源 二(基於spring+aop實現分離)

一,為什麼要進行讀寫分離呢?   因為資料庫的“寫操作”操作是比較耗時的(寫上萬條條資料到Mysql的可能要1分鐘分鐘)。但是資料庫的“讀操作”卻比“寫操作”耗時要少的多(從Mysql的讀幾萬條資料條資料可能只要十秒鐘),而我們在開發過程中大多數也是查詢操作比較多。所以讀寫分離解決的是,資料庫的

windows 下 MySQL分離、主從複製、通過amoeba代理實現分離 配置全過程

配置環境: 1.mysql5.6 2.windowsXP 主從複製配置 主伺服器配置 配置my.ini檔案 查詢my.ini地址 my.ini檔案在MySQL Server 5.6目錄下 我的my.ini路徑: C:\Documents and Settings\All

MySQL多資料來源 二(基於spring+aop實現分離)

一、為什麼要進行讀寫分離呢? 因為資料庫的“寫操作”操作是比較耗時的(寫上萬條條資料到Mysql可能要1分鐘分鐘)。但是資料庫的“讀操作”卻比“寫操作”耗時要少的多(從Mysql讀幾萬條資料條資料可能只要十秒鐘),而我們在開發過程中大多數也是查詢操作比較多。所以讀寫分離解決

springboot實現分離(基於Mybatis,mysql)

近日工作任務較輕,有空學習學習技術,遂來研究如果實現讀寫分離。這裡用部落格記錄下過程,一方面可備日後檢視,同時也能分享給大家(網上的資料真的大都是抄來抄去,,還不帶格式的,看的真心難受)。 完整程式碼:https://github.com/FleyX/demo-project/tree/master/dxfl

mysql+mysql_proxy實現分離

mysql-_proxymysql讀寫分離需要基於主從架構實現 mysql主從配置:http://hongchen99.blog.51cto.com/12534281/1917137 mysql-proxy:用於實現mysql主從分離,基於主從架構讀寫分離存在的最大問題就是主從同步延遲 安裝my