您的位置:首頁>正文

乾貨分享之搭建MySQL讀寫分離

每天看美女可以長壽

今天小木給大家來講一講搭建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地址)

...

slavel,slave2

啟動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;

好了, 今天小木就些到這裡了, 如果對你有幫助, 歡迎點擊關注我。 我會定期分享最新的乾貨知識!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示