MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构
文章目錄
- 一、搭建MySQL主從復制和主主復制架構
- 二、讀寫分離架構
- 三、Amoeba的下載和安裝
- 2.1、安裝配置JDK
- 2.2、下載Amoeba
- 2.3、將其上傳并解壓授權
- 四、為Amoeba創建MySQL賬號
- 五、配置Amoeba服務器
- 5.1、修改amoeba.xml
- 5.2、修改dbServers.xml
- 六、啟動Amoeba
- 七、使用Amoeba
Amoeba(變形蟲)相當于一個SQL請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。用戶需要結合使用MySQL的 Replication等機制來實現副本同步等功能。amoeba對底層數據庫連接管理和路由實現也采用了可插撥的機制,第三方可以開發更高級的策略類來替代作者的實現。由于它比MySQL Proxy配置更加簡單,故本次選擇它作為讀寫分離配置的中間件。
一、搭建MySQL主從復制和主主復制架構
這是使用Amoeba進行讀寫分離配置的基礎,可參考之前的文章:
https://blog.csdn.net/pbrlovejava/article/details/87002171
https://blog.csdn.net/pbrlovejava/article/details/87290238
二、讀寫分離架構
這里要搭建的讀寫分離架構如圖,采用的是雙主熱備+單從服務器,其中同一時刻只能由一臺主庫負責寫入(默認為Master1),從從庫Slave中讀取數據,當Master1發生宕機時,需要手動將Master1修復或者是配置Amoeba將Master2設置為寫庫,并且將Slave的Master配置為Master2;當從庫Slave宕機,則將Master2作為讀庫,達到故障切換效果。
三、Amoeba的下載和安裝
這里使用的是ubuntu系統的服務器進行安裝:
2.1、安裝配置JDK
這里需要安裝并且配置JDK環境,因為Amoeba是基于Java開發的。
https://www.baidu.com/link?url=mRGk0BhQiVpOCaMiaMIRZjwYF0AdBGaBW4C45_qfnAAtsIYhLFpgEW-kwuJHSlsKLPVIYGSPfumrfgx8oXFskimbe-lM-JGeIuVuDnUlqlC&wd=&eqid=ecaf71fb000245bd000000065c6fee4d
2.2、下載Amoeba
https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.2.x/
2.3、將其上傳并解壓授權
# 解壓至/usr/local/amoeba/ tar -zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ # 授予該目錄所有權限 chmod 777 /usr/local/amoeba/ # 檢查amoeba是否安裝成功 /usr/local/amoeba/bin/amoeba status四、為Amoeba創建MySQL賬號
為了使用Amoeba,我們需要三臺由Docker搭建的MySQL中為其創建一個amoeba賬戶:
grant all on *.* to 'amoeba'@'%' identified by '123';五、配置Amoeba服務器
5.1、修改amoeba.xml
修改amoeba.xml ,配置Amoeba賬號以及讀寫池
vi /usr/local/amoeba/conf/amoeba.xml <property name="user">amoeba</property> <property name="password">123</property> <property name="defaultPool">masters</property> # 默認池 <property name="writePool">masters</property> # 寫操作時使用的池 <property name="readPool">slaves</property> # 讀操作時使用的池5.2、修改dbServers.xml
修改dbServers.xml,配置MySQL數據庫信息和讀寫分離信息:
<property name="schema">mysql</property> # 使用的是MySQL數據庫 <property name="user">amoeba</property> # 登陸數據庫用的amoeba賬戶 <property name="password">123</property><dbServer name="master1" parent="abstractServer"> <factoryConfig><property name="ipAddress">172.17.0.3</property> </factoryConfig> </dbServer><dbServer name="master2" parent="abstractServer"><factoryConfig><property name="ipAddress">172.17.0.5</property> </factoryConfig> </dbServer><dbServer name="slave" parent="abstractServer"><factoryConfig><property name="ipAddress">172.17.0.2</property> </factoryConfig> </dbServer><dbServer name="masters" virtual="true"> <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--><property name="loadbalance">1</property> <property name="poolNames">master1</property> </dbServer><dbServer name="slaves" virtual="true"> <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--><property name="loadbalance">1</property> <property name="poolNames">slave</property> </dbServer>六、啟動Amoeba
- 啟動Amoeba:
- 查看Amoeba及數據庫運行情況:
這里是8066端口即是Amoeba的監聽端口,外部程序訪問需要經過這個端口去進行讀寫分離的分發。
七、使用Amoeba
以上就是Amoeba的全部配置了,是不是十分簡單呢?當然,使用Amoeba也同樣十分簡單,我們只需要從8066端口登陸數據庫,剛才注冊的那個amoeba賬號派上用場了:
mysql -u amoeba -p -h 127.0.0.1 -P 8066總結
以上是生活随笔為你收集整理的MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Amoeba】amoeba实现mysq
- 下一篇: amoeba mysql_Amoeba介