001.Amoeba读写分离部署
生活随笔
收集整理的這篇文章主要介紹了
001.Amoeba读写分离部署
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一 Amoeba簡(jiǎn)介
Amoeba(變形蟲)項(xiàng)目,該開源框架于2008年 開始發(fā)布一款 Amoeba forMysql軟件。這個(gè)軟件致力于MySQL的分布式數(shù)據(jù)庫(kù)前端代理層,它主要在應(yīng)用層訪問(wèn)MySQL的時(shí)候充當(dāng)SQL路由功能,專注于分布式數(shù)據(jù)庫(kù)代理層(Database Proxy)開發(fā)。座落與 Client、DB Server(s)之間,對(duì)客戶端透明。具有負(fù)載均衡、高可用性、SQL 過(guò)濾、讀寫分離、可路由相關(guān)的到目標(biāo)數(shù)據(jù)庫(kù)、可并發(fā)請(qǐng)求多臺(tái)數(shù)據(jù)庫(kù)合并結(jié)果。通過(guò)Amoeba你能夠完成多數(shù)據(jù)源的高可用、負(fù)載均衡、數(shù)據(jù)切片的功能,目前Amoeba已在很多企業(yè)的生產(chǎn)線上面使用。 主要解決: ? 降低 數(shù)據(jù)切分帶來(lái)的復(fù)雜多數(shù)據(jù)庫(kù)結(jié)構(gòu) ? 提供切分規(guī)則并降低 數(shù)據(jù)切分規(guī)則 給應(yīng)用帶來(lái)的影響 ? 降低db 與客戶端的連接數(shù) ? 讀寫分離二 前期規(guī)劃
1.1 主機(jī)規(guī)劃
1.2 虛擬IP規(guī)劃
1.3 用戶列表
提示:以上角色需要在所有節(jié)點(diǎn)添加。1.4 整體架構(gòu)
三 MySQL-MMM基礎(chǔ)部署
略,具體可參考《002.MMM雙主-雙從讀寫分離部署》。四 基礎(chǔ)JDK安裝
4.1 JDK下載
下載鏈接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html JDK版本:jdk-8u144-linux-x64.rpm4.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 #驗(yàn)證是否安裝成功五 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/amoeba5.2 Amoeba-dbServers配置
- dbServers.xml:讀寫分離配置文件
- access_list.conf:IP訪問(wèn)列表控制配置文件
- Amoeba的配置文件路徑:/usr/local/amoeba/conf
5.3 Amoeba-amoeba配置
1 [root@Amoeba ~]# vi /usr/local/amoeba/conf/amoeba.xml2 ……3 <property name="port">8066</property> #設(shè)置amoeba監(jiān)聽的端口,默認(rèn)是80664 ……5 <property name="ipAddress">127.0.0.1</property> #配置監(jiān)聽的接口,如果不設(shè)置,默認(rèn)監(jiān)聽所以的IP6 ……7 <property name="user">root</property>8 <property name="password">x120952576</property> 注意:- 以上配置客戶端連接amoeba時(shí)需要使用這里設(shè)定的賬號(hào);
- 此處賬號(hào)密碼和amoeba連接后端數(shù)據(jù)庫(kù)服務(wù)器的密碼無(wú)關(guān);
- 前端應(yīng)用程序連接數(shù)據(jù)庫(kù)的地址就是Amoeba服務(wù)器的值,連接用戶名和密碼即為此處配置的用戶名和密碼。
六 數(shù)據(jù)庫(kù)配置
6.1 創(chuàng)建數(shù)據(jù)庫(kù)
1 [root@Client ~]# mysql -ummm_test -px120952576 -h172.24.8.100 #從客戶端使用可寫vip連接數(shù)據(jù)庫(kù)2 mysql> create database testdb; #曾經(jīng)testdb數(shù)據(jù)庫(kù)3 [root@Master02 ~]# mysql -uroot -px120952576 #使用Master02進(jìn)入4 mysql> show databases; #驗(yàn)證是否復(fù)制成功 提示:其他節(jié)點(diǎn)測(cè)試略。6.2 授權(quán)Amoeba用戶
1 [root@Master01 ~]# mysql -uroot -px1209525762 mysql> grant all on testdb.* to 'test1'@'172.24.8.14' identified by 'x12345678'; 注意:其他所有節(jié)點(diǎn)均需要授權(quán)此用戶。七 啟動(dòng)Amoeba
1 [root@Amoeba ~]# /usr/local/amoeba/bin/launcher 可能會(huì)出現(xiàn)以下報(bào)錯(cuò),原因是stack size太小,導(dǎo)致JVM啟動(dòng)失敗 可執(zhí)行如下修復(fù)操作: 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 & #建議直接放入后臺(tái)啟動(dòng)2 [root@Amoeba ~]# echo "/usr/local/amoeba/bin/launcher &" >> /etc/rc.local [root@Amoeba ~]# netstat -unlpt | grep java #查看進(jìn)程八 測(cè)試
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文件,且同時(shí)對(duì)MySQL具有權(quán)限; 所有節(jié)點(diǎn)均需要打開日志記錄,方便記錄測(cè)試情況。8.2 新增對(duì)應(yīng)數(shù)據(jù)
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'); 提示: 創(chuàng)建用于測(cè)試的表mmm_test,并插入含該節(jié)點(diǎn)IP的條目,方便之后測(cè)試; 所有節(jié)點(diǎn)均需要執(zhí)行以上操作,但ip更換為對(duì)應(yīng)的ip節(jié)點(diǎn)即可。8.3 讀寫分離測(cè)試
1 [root@Client ~]# mysql -uroot -h172.24.8.14 -px120952576 -P80662 mysql> select * from testdb.mmm_test; 提示:- 此處在Client端使用的是Amoeba的IP連接,端口為Amoeba服務(wù)的8066端口;
- 多次執(zhí)行查詢,可知select請(qǐng)求均衡的分配在MMM集群中的4個(gè)節(jié)點(diǎn),由于Master01和Master02同步復(fù)制,因?yàn)橛袃蓷l相同結(jié)果。
九 其他附加
Amoeba主配置文件:$AMOEBA_HOME/conf/amoeba.xml,用來(lái)配置Amoeba服務(wù)的基本參數(shù),如Amoeba主機(jī)地址、端口、認(rèn)證方式、用于連接的用戶名、密碼、線程數(shù)、超時(shí)時(shí)間、其他配置文件的位置等。 數(shù)據(jù)庫(kù)服務(wù)器配置文件:$AMOEBA_HOME/conf/dbServers.xml,用來(lái)存儲(chǔ)和配置Amoeba所代理的數(shù)據(jù)庫(kù)服務(wù)器的信息,如:主機(jī)IP、端口、用戶名、密碼等。 切分規(guī)則配置文件:$AMOEBA_HOME/conf/rule.xml,用來(lái)配置切分規(guī)則。 數(shù)據(jù)庫(kù)函數(shù)配置文件:$AMOEBA_HOME/conf/functionMap.xml,用來(lái)配置數(shù)據(jù)庫(kù)函數(shù)的處理方法,Amoeba將使用該配置文件中的方法解析數(shù)據(jù)庫(kù)函數(shù)。 切分規(guī)則函數(shù)配置文件:$AMOEBA_HOME/conf/ruleFunctionMap.xml,用來(lái)配置切分規(guī)則中使用的用戶自定義函數(shù)的處理方法。 訪問(wèn)規(guī)則配置文件:$AMOEBA_HOME/conf/access_list.conf,用來(lái)授權(quán)或禁止某些服務(wù)器IP訪問(wèn)Amoeba。 日志規(guī)格配置文件:$AMOEBA_HOME/conf/log4j.xml,用來(lái)配置Amoeba輸出日志的級(jí)別和方式。 參考資料:http://www.cnblogs.com/liuyisai/p/6009379.html轉(zhuǎn)載于:https://www.cnblogs.com/itzgr/p/10331121.html
總結(jié)
以上是生活随笔為你收集整理的001.Amoeba读写分离部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 字节教育大裁员:有员工赔了一套首付款!
- 下一篇: 史上最全jdk版本新特性大全