每天看美女可以長壽
今天小木給大家來講一講搭建MySQL讀寫分離, 如果有所幫助, 歡迎關注我哦!
注意要關閉客戶機和代理伺服器的防火牆 命令 關掉防火牆 chkconfig -- level 2345 iptables off
關閉防火牆 service iptables stop
vim /etc/sysconfig/selinux :修改/etc/selinux/config檔中的SELINUX="" 為 disabled ,
在Amoeba上安裝Java環境
第一步 chmod +x jdk-6u14-linux-x64.bin (許可權)
第二步 ./jdk-6u14-linux-x64.bin (//根據提示按Enter健完成即可)
第三步 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=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
第五步 source /etc/profile
第六步 java –version (查看)
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
Java環境已配置成功
安裝並配置Amoeba軟體
第一步 mkdir /usr/local/amoeba (創建)
第二步 tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba (拷貝)
第三步 chmod -R 755 /usr/local/amoeba (許可權)
第五步 amoeba
amoeba start|stop (顯示此內容說明Amoeba安裝成功)
配置amoeba讀寫分離
1) 在master、slave資料庫伺服器上創建測試使用者:test, 並賦予其許可權
GRANT all ON *.* TO 'test'@'192.168.10.%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
編輯amoeba.xml,修改以下主要內容:
第六步 cd /usr/local/amoeba (進入)
1) vim conf/amoeba.xml (全部修改成一下內容)
authenticator">
...
amoeba (第30行)
123456 (第31行)
...
sqlFunctionFile">
...
master (第115行)
master (第118行)
slaves (第119行)
編輯dbServers.xml,修改以下主要內容
2) vim conf/dbServers.xml (全部修改成一下內容)
test (第26行)
123456 (第29行)
... 192.168.10.1 (第48行 MySQL主IP地址) ... 192.168.10.2... (第55行 MySQL從IP地址) ...
啟動amoeba /usr/local/amoeba/bin/amoeba start & netstat -anpt | grep java (查看 8066埠) 測試 在Client主機上 安裝 yum -y install mysql 通過代理訪問MySQL mysql -u amoeba -p123456 -h 192.168.10.10 -P8066 七、測試Mysql資料庫的讀、寫分離 1、在master伺服器的db_test資料庫(該庫在前面測試主、從複製功能時已創建)中創建表zang mysql -u root -p123456 use db_test; create table zang(id int(10),name varchar(10),address varchar(20)); 2、在slave1和slave2伺服器上停止資料庫的slave功能: mysql -u root -p123456 stop slave; 3、在master資料庫伺服器上插入表記錄1 insert into zang values('1','zhang','this_is_master'); 4、在slave1上,
手動插入表記錄2: use db_test; insert into zang values('2','zhang','this_is_slave'); 5、在client上執行第1次查詢: select * from zang; 只能看到在slave1上插入的記錄2,
而無法看到master上插入的記錄1(因為slave1和slave2的Mysql資料庫已停止slave功能) 6、在slave2上,
手動插入表記錄3: use db_test; insert into zang values('3','zhang','this_is_slave'); 7、在client上執行第2次查詢: select * from zang; 能看到在slave2上插入的表記錄,
依然無法看到master上插入的表記錄(原因同上) 8、在client上執行第3次查詢: select * from zang; 查詢結果又切換到slave1上的表記錄(說明2台slave資料庫具有負載平衡的功能) 9、在client上插入表記錄4: use db_test; insert into zang values('4','zhang','this_is_slave'); 10、在client上執行第4次查詢: select * from zang; 無法看到剛插入的第4條表記錄,
而在master上執行查詢 select * from zang; 好了,
今天小木就些到這裡了,
如果對你有幫助,
歡迎點擊關注我。
我會定期分享最新的乾貨知識!