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

MySQL 文本編輯器 編程語言 Java 小木IT 2017-04-19

乾貨分享之搭建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 (全部修改成一下內容)

<property name="authenticator">

...

<property name="user">amoeba</property> (第30行)

<property name="password">123456</property> (第31行)

...

<property name="sqlFunctionFile">

...

<property name="defaultPool">master</property> (第115行)

<property name="writetPool">master</property> (第118行)

<property name="readPool">slaves</property> (第119行)

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

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

編輯dbServers.xml,修改以下主要內容

2) vim conf/dbServers.xml (全部修改成一下內容)

<!-- mysql user -->

<property name="user">test</property> (第26行)

<property name="password">123456</property> (第29行)

<dbServer name="master" parent="abstractServer"

...

<!-- mysql ip -->

<property name="ipAddress">192.168.10.1</property> (第48行 MySQL主IP地址)

<dbServer name="slavel" parent="abstractServer"

...

<!-- mysql ip -->

<property name="ipAddress">192.168.10.2</property>... (第55行 MySQL從IP地址)

<dbServer name="slaves" virtual="true" (第59行)

...

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

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

<property name="poolNames">slavel,slave2</property>

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

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

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

相關推薦

推薦中...