日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

001.Amoeba读写分离部署

發布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 001.Amoeba读写分离部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 Amoeba簡介

Amoeba(變形蟲)項目,該開源框架于2008年 開始發布一款 Amoeba forMysql軟件。這個軟件致力于MySQL的分布式數據庫前端代理層,它主要在應用層訪問MySQL的時候充當SQL路由功能,專注于分布式數據庫代理層(Database Proxy)開發。座落與 Client、DB Server(s)之間,對客戶端透明。具有負載均衡、高可用性、SQL 過濾、讀寫分離、可路由相關的到目標數據庫、可并發請求多臺數據庫合并結果。通過Amoeba你能夠完成多數據源的高可用、負載均衡、數據切片的功能,目前Amoeba已在很多企業的生產線上面使用。 主要解決: ? 降低 數據切分帶來的復雜多數據庫結構 ? 提供切分規則并降低 數據切分規則 給應用帶來的影響 ? 降低db 與客戶端的連接數 ? 讀寫分離

二 前期規劃

1.1 主機規劃

1.2 虛擬IP規劃

1.3 用戶列表

提示:以上角色需要在所有節點添加。

1.4 整體架構

三 MySQL-MMM基礎部署

略,具體可參考《002.MMM雙主-雙從讀寫分離部署》。

四 基礎JDK安裝

4.1 JDK下載

下載鏈接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html JDK版本:jdk-8u144-linux-x64.rpm

4.2 JDK安裝及配置

1 [root@Amoeba tmp]# rpm -ivh jdk-8u144-linux-i586.rpm2 [root@Amoeba ~]# vi /etc/profile3 #set java environment4 JAVA_HOME=/usr/java/jdk1.8.0_144/5 JRE_HOME=/usr/java/jdk1.8.0_144/jre/6 CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib7 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin8 export JAVA_HOME JRE_HOME CLASS_PATH PATH9 [root@Amoeba ~]# source /etc/profile10 [root@Amoeba ~]# java -version #驗證是否安裝成功

五 Amoeba安裝

5.1 Amoeba下載

1 [root@Amoeba tmp]# wget https://nchc.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip2 [root@Amoeba tmp]# unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/3 [root@Amoeba ~]# mv /usr/local/amoeba-mysql-3.0.5-RC/ /usr/local/amoeba

5.2 Amoeba-dbServers配置

  • dbServers.xml:讀寫分離配置文件
  • access_list.conf:IP訪問列表控制配置文件
  • Amoeba的配置文件路徑:/usr/local/amoeba/conf
1 [root@Amoeba ~]# vi /usr/local/amoeba/conf/dbServers.xml2 ……3 <property name="port">3306</property> #設置Amoeba要連接的mysql數據庫的端口,默認是3306。4 <property name="schema">testdb</property>5 #設置缺省的數據庫,當連接amoeba時,操作表必須顯式的指定數據庫名,即采用dbname.tablename的方式,不支持use dbname指定缺省庫,因為操作會調度到各個后端dbserver。6 <property name="user">test1</property>7 <property name="password">x12345678</property> 注意:設置amoeba連接后端數據庫服務器的賬號和密碼,因此需要在所有后端數據庫上創建該用戶,并授權amoeba服務器可連接。 1 ……2 <property name="maxActive">500</property> #最大連接數,默認5003 <property name="maxIdle">500</property> #最大空閑連接數4 <property name="minIdle">1</property> #最新空閑連接數5 ……6 <dbServer name="writedb" parent="abstractServer">7 #設置一個后端可寫的dbServer,這里定義為writedb,這個名字可以任意命名,后面還會用到。8 <factoryConfig>9 <property name="ipAddress">172.24.8.100</property>10 #設置后端可寫dbserver ip。11 </factoryConfig>12 </dbServer>13 14 <dbServer name="slave01" parent="abstractServer">15 <factoryConfig>16 <property name="ipAddress">172.24.8.101</property>17 </factoryConfig>18 </dbServer>19 20 <dbServer name="slave02" parent="abstractServer">21 <factoryConfig>22 <property name="ipAddress">172.24.8.102</property>23 </factoryConfig>24 </dbServer>25 26 <dbServer name="slave03" parent="abstractServer">27 <factoryConfig>28 <property name="ipAddress">172.24.8.103</property>29 </factoryConfig>30 </dbServer>31 32 <dbServer name="slave04" parent="abstractServer">33 <factoryConfig>34 <property name="ipAddress">172.24.8.104</property>35 </factoryConfig>36 </dbServer> #以上設置四臺后端可讀節點信息。37 <dbServer name="myslave" virtual="true">38 #設置定義一個虛擬的dbserver,實際上相當于一個dbserver組,這里將可讀的數據庫ip統一放到一個組中,將這個組的名字命名為myslave。39 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">40 <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->41 <property name="loadbalance">1</property> #選擇調度算法,1表示負載均衡,2表示權重,3表示HA, 這里選擇1。42 43 <!-- Separated by commas,such as: server1,server2,server1 -->44 <property name="poolNames">slave01,slave02,slave03,slave04</property> #myslave組成員。45 </poolConfig>46 </dbServer>

5.3 Amoeba-amoeba配置

1 [root@Amoeba ~]# vi /usr/local/amoeba/conf/amoeba.xml2 ……3 <property name="port">8066</property> #設置amoeba監聽的端口,默認是80664 ……5 <property name="ipAddress">127.0.0.1</property> #配置監聽的接口,如果不設置,默認監聽所以的IP6 ……7 <property name="user">root</property>8 <property name="password">x120952576</property> 注意:
  • 以上配置客戶端連接amoeba時需要使用這里設定的賬號;
  • 此處賬號密碼和amoeba連接后端數據庫服務器的密碼無關;
  • 前端應用程序連接數據庫的地址就是Amoeba服務器的值,連接用戶名和密碼即為此處配置的用戶名和密碼。
1 ……2 <property name="defaultPool">writedb</property> #設置amoeba默認的池,這里設置為writedb3 <property name="writePool">writedb</property>4 <property name="readPool">myslave</property>5 <property name="needParse">true</property> #取消注釋,則指定前面定義好的倆個讀寫池。

六 數據庫配置

6.1 創建數據庫

1 [root@Client ~]# mysql -ummm_test -px120952576 -h172.24.8.100 #從客戶端使用可寫vip連接數據庫2 mysql> create database testdb; #曾經testdb數據庫3 [root@Master02 ~]# mysql -uroot -px120952576 #使用Master02進入4 mysql> show databases; #驗證是否復制成功 提示:其他節點測試略。

6.2 授權Amoeba用戶

1 [root@Master01 ~]# mysql -uroot -px1209525762 mysql> grant all on testdb.* to 'test1'@'172.24.8.14' identified by 'x12345678'; 注意:其他所有節點均需要授權此用戶。

七 啟動Amoeba

1 [root@Amoeba ~]# /usr/local/amoeba/bin/launcher 可能會出現以下報錯,原因是stack size太小,導致JVM啟動失敗 可執行如下修復操作: 1 [root@Amoeba ~]# vim /usr/local/amoeba/jvm.properties2 JVM_OPTIONS="-server -Xms2048m -Xmx2048m -Xss512k -XX:PermSize=16m -XX:MaxPermSize=96m" 提示:原為:JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m" 1 [root@Amoeba ~]# /usr/local/amoeba/bin/launcher & #建議直接放入后臺啟動2 [root@Amoeba ~]# echo "/usr/local/amoeba/bin/launcher &" >> /etc/rc.local [root@Amoeba ~]# netstat -unlpt | grep java #查看進程

八 測試

8.1 打開日志記錄

1 [root@Master01 ~]# touch /var/log/mysql_query_log2 [root@Master01 ~]# chown mysql:mysql /var/log/mysql_query_log3 [root@Master01 ~]# vi /etc/my.cnf4 general_log=ON5 general_log_file=/var/log/mysql_query_log.log 注意: 打開MySQL日志記錄,必須存在log文件,且同時對MySQL具有權限; 所有節點均需要打開日志記錄,方便記錄測試情況。

8.2 新增對應數據

1 [root@Master01 ~]# mysql -uroot -px1209525762 mysql> use testdb;3 mysql> create table mmm_test(id int,email varchar(60));4 mysql> insert into mmm_test (id,email) values (100,'ip is 172.24.8.10'); 提示: 創建用于測試的表mmm_test,并插入含該節點IP的條目,方便之后測試; 所有節點均需要執行以上操作,但ip更換為對應的ip節點即可。

8.3 讀寫分離測試

1 [root@Client ~]# mysql -uroot -h172.24.8.14 -px120952576 -P80662 mysql> select * from testdb.mmm_test; 提示:
  • 此處在Client端使用的是Amoeba的IP連接,端口為Amoeba服務的8066端口;
  • 多次執行查詢,可知select請求均衡的分配在MMM集群中的4個節點,由于Master01和Master02同步復制,因為有兩條相同結果。
1 [root@Master01 ~]# tail -f /var/log/mysql_query_log | grep mmm_test2 #所有節點執行此命令,觀察log信息。3 [root@Client ~]# mysql -uroot -h172.24.8.14 -px120952576 -P80664 mysql> create table mmm_test1(id int,email varchar(60));5 mysql> insert into mmm_test1 (id,email) values (104,'ip is 172.24.8.14'); 提示:所有寫操作均在Master01上執行,其他節點的均由復制而來,由此可知已實現讀寫分離。

九 其他附加

Amoeba主配置文件:$AMOEBA_HOME/conf/amoeba.xml,用來配置Amoeba服務的基本參數,如Amoeba主機地址、端口、認證方式、用于連接的用戶名、密碼、線程數、超時時間、其他配置文件的位置等。 數據庫服務器配置文件:$AMOEBA_HOME/conf/dbServers.xml,用來存儲和配置Amoeba所代理的數據庫服務器的信息,如:主機IP、端口、用戶名、密碼等。 切分規則配置文件:$AMOEBA_HOME/conf/rule.xml,用來配置切分規則。 數據庫函數配置文件:$AMOEBA_HOME/conf/functionMap.xml,用來配置數據庫函數的處理方法,Amoeba將使用該配置文件中的方法解析數據庫函數。 切分規則函數配置文件:$AMOEBA_HOME/conf/ruleFunctionMap.xml,用來配置切分規則中使用的用戶自定義函數的處理方法。 訪問規則配置文件:$AMOEBA_HOME/conf/access_list.conf,用來授權或禁止某些服務器IP訪問Amoeba。 日志規格配置文件:$AMOEBA_HOME/conf/log4j.xml,用來配置Amoeba輸出日志的級別和方式。 參考資料:http://www.cnblogs.com/liuyisai/p/6009379.html

轉載于:https://www.cnblogs.com/itzgr/p/10331121.html

總結

以上是生活随笔為你收集整理的001.Amoeba读写分离部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。