Amoeba是一個以MySQL爲底層數據存儲,並對應用提供MySQL協議接口的proxy,它集中地響應應用的請求,依據用戶事先設置的規則,將SQL請求發送到特定的數據庫上執行.基於此能夠實現負載均衡、讀寫分離、高可用性等需求,與MySQL官方的MySQL Proxy相比,做者強調的是amoeba配置的方便.java
<escape><!-- more --></escape>mysql
1.主從服務器須要配置好主從關係,主從服務器都須要安裝MySQL.linux
[root@localhost ~]# yum install -y mysql mysql-server
2.啓動MySQL服務,並設置初始化密碼(主從都要重啓).sql
[root@localhost ~]# systemctl restart mysqld [root@localhost ~]# mysqladmin -uroot password 123
3.修改主配置文件/etc/my.cnf
並再次重啓MySQL(主從都要修改).數據庫
[root@localhost ~]# vim /etc/my.cnf log-bin=mysql-bin #開啓二進制日誌文件 server-id=148 #聲明本臺MySQL服務器ID號
4.登錄主數據庫,建立用於從服務器登錄的用戶(主服務器).vim
[root@localhost ~]# mysql -uroot –p mysql> grant replication slave on *.* to '用戶名'@'%' identified by '密碼'; #建立從服務器用戶 mysql> show master status; #查看二進制文件名
5.登錄從數據庫,確認從主服務器同步數據(從服務器).bash
[root@localhost ~]# mysql -uroot –p mysql> change master to master_host='主服務器IP',master_user='用戶',master_password='密碼',master_log_file='二進制文名',master_log_pos=文件空間大小; mysql> start slave; #啓動同步功能 mysql> show slave status\G; #查看同步狀態 注意: Slave_IO_Running: Yes Slave_SQL_Running: Yes #只用在兩個選項都爲YES才證實開啓
<br> ## 安裝Java環境+Amoeba服務器
1.本臺服務器也應安裝MySQL用於登陸測試,不須要啓動.app
[root@localhost ~]# yum install -y mysql mysql-server
2.解壓相應軟件並更名.負載均衡
[root@localhost ~]# tar -xzvf jdk-7u40-linux-x64.gz -C /usr/local/ #解壓到jdk目錄 [root@localhost ~]# mv /usr/local/jdk1.7.0_40/ /usr/local/jdk #重命名JDK目錄
3.配置JAVA環境變量,寫入/etc/profile
文件中,使其開機生效.
[root@localhost ~]# vim /etc/profile #設置開機自加載 #-------------------------------------------------------------------- #Java-SE-JDK JAVA_HOME=/usr/local/jdk export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH export CLASSPATH #-------------------------------------------------------------------- [root@localhost ~]# source /etc/profile #刷新配置文件 [root@localhost ~]# java -version #測試java是否可用
4.進入主從MySQL分別建立Amoeba使用的帳號(主從服務器都要建立).
[root@localhost ~]# grant all privileges on *.* to 'master'@'%' identified by '123'; #建立主服務器登錄帳號 [root@localhost ~]# grant all privileges on *.* to 'slave1'@'%' identified by '123'; #建立從服務器登錄帳號
5.安裝Amoeba並設置權限.
[root@localhost ~]# unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba #解壓Amoeba [root@localhost ~]# chmod -R a+x /usr/local/amoeba/bin/ #賦予可執行權限
6.編輯主配置文件,配置Amoeba.
[root@localhost ~]# vim /usr/local/amoeba/conf/amoeba.xml <?xml version="1.0" encoding="gbk"?> <!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd"> <amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/"> <server> <property name="port">8066</property> #指定Amoeba端口 <property name="ipAddress">192.168.22.147</property> #指定(Amoeba)本機IP <property name="readThreadPoolSize">20</property> <property name="clientSideThreadPoolSize">30</property> <property name="serverSideThreadPoolSize">30</property> <property name="netBufferSize">128</property> <property name="tcpNoDelay">true</property> <property name="user">root</property> #指定Amoeba登錄帳號 <property name="password">123</property> #指定Amoea登錄密碼 <property name="queryTimeout">60</property> </server> <connectionManagerList> <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper"> <property name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property> </connectionManager> </connectionManagerList> <dbServerList> #**********************************如下是主機區域****************************************** <dbServer name="server1"> #指定第1個server區域 <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"> <property name="manager">defaultManager</property> <property name="port">3306</property> #指定主機1端口 <property name="ipAddress">192.168.22.148</property> #指定主機1 IP <property name="schema">test</property> #同步的數據庫 <property name="user">zhu1</property> #同步帳號 <property name="password">123</property> #同步密碼 </factoryConfig> <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"> <property name="maxActive">200</property> <property name="maxIdle">200</property> <property name="minIdle">10</property> <property name="minEvictableIdleTimeMillis">600000</property> <property name="timeBetweenEvictionRunsMillis">600000</property> <property name="testOnBorrow">true</property> <property name="testWhileIdle">true</property> </poolConfig> </dbServer> <dbServer name="server2"> #指定第2個server區域 <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"> <property name="manager">defaultManager</property> <property name="port">3306</property> #指定主機2端口 <property name="ipAddress">192.168.22.149</property> #指定主機2IP <property name="schema">test</property> #同步的數據庫 <property name="user">cong1</property> #同步帳號 <property name="password">123</property> #同步密碼 </factoryConfig> <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"> <property name="maxActive">200</property> <property name="maxIdle">200</property> <property name="minIdle">10</property> <property name="minEvictableIdleTimeMillis">600000</property> <property name="timeBetweenEvictionRunsMillis">600000</property> <property name="testOnBorrow">true</property> <property name="testWhileIdle">true</property> </poolConfig> </dbServer> #***************************************************************************************** #*******************************如下是主機命名區域**************************************** <dbServer name="master" virtual="true"> #主機命名區域1 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <property name="loadbalance">1</property> <property name="poolNames">server1</property> #主機1區域名 </poolConfig> </dbServer> <dbServer name="slave" virtual="true"> #主機命名區域2 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <property name="loadbalance">1</property> <property name="poolNames">server2</property> #主機2區域名 </poolConfig> </dbServer> </dbServerList> #***************************************************************************************** #**********************************如下是讀寫池區域*************************************** <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"> <property name="ruleConfig">${amoeba.home}/conf/rule.xml</property> <property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property> <property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property> <property name="LRUMapSize">1500</property> <property name="defaultPool">master</property> #指定默認區域 <property name="writePool">master</property> #指定寫池 <property name="readPool">slave</property> #指定讀池 <property name="needParse">true</property> </queryRouter> </amoeba:configuration> #*****************************************************************************************
7.打開amoeba配置文件.
[root@localhost ~]# vim /usr/local/amoeba/bin/amoeba 修改如下內容↓ DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k
8.啓動amoeba
[root@localhost ~]# nohup bash -x /usr/local/amoeba/bin/amoeba &
9登錄數據庫測試.
[root@localhost ~]# mysql -uroot -p -h 192.168.22.147 -P 8066
<br>