MYSQL讀寫分離

來源:互聯網
上載者:User

標籤:節點   arch   password   star   master   定義   mes   bash   database   

在企業中,大量資料請求下,單台資料庫將無法承擔所有讀寫操作。解決方案:配置多台資料服務器以實現主從複製+讀寫分離

用的Proxy 伺服器是 Amoeba

特點是:1負載平衡,2高可用,3SQL過濾,4讀寫分離,5高並發請求多台資料庫。

實驗環境

amoeba:  192.168.100.123

mysql-master:  192.168.100.111

mysql-slave1:   192.168.100.222

mysql-slave2:   192.168.100.250

client:    192.168.100.22

首先實現主從複製  主 從 從,這裡就不多說了,略

先配置amoeba:192.168.100.123

1:安裝Amoeba上安裝java環境(推薦安裝jdk1.5/1.6,不建議安裝1.7)

我用的是jdk-6u14-linux-x64.bin

chmod +x jdk-6u14-linux-x64.bin

bash jdk-6u14-linux-x64.bin    一路空格,輸入yes,回城完成

mv  jdk1.6.0_14/ /usr/local/jdk1.6

vim /etc/profile  在最後添加

export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA_HOME/bin   添加到變數裡  注意不要寫錯

. /etc/profile 執行

java -version 查看    注意如果有內建的openjava  刪掉或者轉移

2:安裝配置Amoeba

mkdir /usr/local/amoeba

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

chmod -R 755 /usr/local/amoeba/

/usr/local/amoeba/bin/amoeba    amoeba start |stop  //出現此行說明配置無誤

3:配置amoeba實現mysql-slave1、slave2讀負載平衡

在三台MYSQL伺服器上對amoeba授權

mysql>grant all on *.* to ‘amoeba‘@‘192.168.100.%‘ identified by ‘123123‘;  //測試環境給的許可權最大 生產環境根據需要

mysql>flush privileges;    //重新整理一下

編輯amoeba.xml設定檔,設定讀寫分離(amoeba伺服器)

cd /usr/local/amoeba/conf/

vim amoeba.xml    //修改任何檔案時,養成習慣備份。  cp amoeba.xml amoeba.xml.$(date +%F)

11<property name="port">8066</property>   //預設連接埠8066,無需更改

30 <property name="user">amoeba</property>   //設定一個使用者,後面用戶端訪問時使用,切勿打錯,要不然後期測試會進去不mysql

32  <property name="password">123123</property>    //設定登入密碼

115  <property name="defaultPool">master</property>     //預設的伺服器集區

117  <property name="writePool">master</property>  //寫伺服器集區

118  <property name="readPool">slaves</property>  //讀伺服器集區

有注釋<--   -->刪掉

編輯dbServer.xml設定檔,設定登入MYSQL伺服器的使用者及密碼、MYSQL伺服器節點的IP地址、負載平衡演算法/usr/local/amoeba/conf/

vim dbServers.xml

20 <property name="port">3306</property>  //設定MYSQL串連連接埠,預設3306

26 <property name="user">amoeba</property>  //設定訪問MYSQL伺服器所用的使用者名稱

27  <property name="password">123123</property>   //設定訪問MYSQL伺服器的密碼

43  <dbServer name="master"  parent="abstractServer">    //設定MYSQL伺服器的IP地址

46 <property name="ipAddress">192.168.100.111</property>   主的

50 <dbServer name="slave1"  parent="abstractServer">    從的IP

53 <property name="ipAddress">192.168.100.222</property>

56 <dbServer name="slave2"  parent="abstractServer">    從2的IP

59 <property name="ipAddress">192.168.100.250</property>

63 <dbServer name="slaves" virtual="true">  //在amoeba.xml檔案中設定的readPool

69 <property name="poolNames">slave1,slave2</property>   //前面定義的伺服器節點

4:啟動amoeba

/usr/local/amoeba/bin/amoeba start &

jobs 可以查看後台

5:測試

在主MYSQL伺服器上建立db_test及庫下的test表

mysq>create database db_test;

mysq> use db_test;

mysq>create table test(id int(10),name varchar(20));

可以在slave1和slave2上查看

mysq>show databases;

在slave1和slave2服務上停止主從備份

mysq>stop slave;

在master上添加表內容

mysql>insert into test values(1,‘master‘);

此前在伺服器上同步了表,所以在從伺服器上可以直接手動插入其他內容

在slave1上

mysql>use db_test;

mysql>insert into test values(2,‘slave1‘);

在slave2上

mysql>use db_test;

mysql>insert into test values(3,‘slave2‘);

在客戶機上進行讀測試

client上

yum -y install mysql mysql-devel

進入mysql  

mysql -uamoeba -p123123 -h 192.168.100.123  -P8066  //注意 這是進入amoeba伺服器的mysql。

讀測試

mysql>select * from db_test.test;  //來兩遍 會發現輪詢

此時讀取資料時,輪詢的方式從slave1,slave2上讀取

(2)寫入測試

mysql>insert into db_test.test values(4,‘client‘);

mysq>select * from db_test.test;    //會多出一個

此時寫入資料到資料庫時,會寫到主伺服器,不會寫到從伺服器上,實現了讀寫分離。

MYSQL讀寫分離

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.