中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql -- 讀寫分離

發布時間:2020-03-01 22:25:29 來源:網絡 閱讀:253 作者:wx5d8a05337d6b9 欄目:云計算

文章目錄

一、Mysql 讀寫分離原理

二、關于 Amoeba

三、配置實例

第一步:配置 Amoeba 服務器

第二步:在三臺 mysql 服務器上添加權限,開放給 amoeba 訪問(即三臺mysql允許amoeba對它們進行訪問)

第三步:在 amoeba 服務器上配置讀寫分離功能

第四步:客戶端測試

四、總結

一、Mysql 讀寫分離原理

讀寫分離就是只在主服務器上寫,只在從服務上讀;
主數據庫處理事務性查詢,從數據庫處理 select 查詢;
數據庫復制被用來把事務性查詢導致的變更同步到集群中的從數據庫

二、關于 Amoeba

(1)Amoeba是一個以MySQL為底層數據存儲,并對應用提供MySQL協議接口的proxy。它集中地響應應用的請求,依據用戶事先設置的規則,將SQL請求發送到特定的數據庫上執行。基于此可以實現負載均衡、讀寫分離、高可用性等需求。
(2)Amoeba相當于一個SQL請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。需要結合使用MySQL的 Replication等機制來實現副本同步等功能。

三、配置實例

環境說明:
準備三臺 Mysql服務器(一臺為主服務器,其余兩臺為從服務器);
一臺 Amoeba,用來實現讀寫分離,寫的操作交給主服務器,讀的操作發給兩臺從服務器;
實驗驗證:在客戶機上執行寫的操作,在主、從服務器上驗證。

Mysql -- 讀寫分離

說明:Mysql 主從復制與讀寫功能是密切相關的,通過主從復制來實現數據同步,再通過讀寫分離來提升數據庫的并發負載能力。
應用客戶端 192.168.220.131
Amoeba 192.168.220.129
主服務器 192.168.220.141
從服務器 1 192.168.220.140
從服務器 2 192.168.220.136

第一步:配置 Amoeba 服務器

(1)關閉防火墻:
 systemctl stop firewalld.service
 setenforce 0
(2)安裝管理 jdk:
1、安裝 jdk
 cp jdk-6u14-linux-x64.bin  /usr/local/     //復制

./jdk-6u14-linux-x64.bin                    
//安裝jdk ,注意這一步,一路按回車到最后,提示輸入yes,等待安裝

Mysql -- 讀寫分離

2、方便管理,將jdk包重新命名:
mv jdk1.6.0_14/ /usr/local/jdk1.6
3、修改 profile 文件
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
使環境變量生效:
source /etc/profile
(3)解壓 amoeba包:
1、先創建一個文件
mkdir /usr/local/amoeba
2、解壓
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
3、賦權,并驗證是否安裝成功
chmod -R 755 /usr/local/amoeba/
輸入:/usr/local/amoeba/bin/amoeba ,按回車檢查是否成功

Mysql -- 讀寫分離

第二步:在三臺 mysql 服務器上添加權限,開放給 amoeba 訪問(即三臺mysql允許amoeba對它們進行訪問)
進入數據庫,輸入以下命令:
grant all on *.* to test@'192.168.220.%' identified by '123.com';
//允許ip為192.168.220網段從任意終端通過123.com的密碼進行訪問
第三步:在 amoeba 服務器上配置讀寫分離功能
1、cd /usr/local/amoeba
vim conf/amoeba.xml

第30行:<property name="user">amoeba</property>
第32行:<property name="password">123456</property>

117行去掉注釋:
 <property name="writePool">master</property>
 <property name="readPool">slaves</property>

Mysql -- 讀寫分離

Mysql -- 讀寫分離

2、vim conf/dbServers.xml
26-29行:去掉注釋,設置登錄用戶名和密碼
<property name="user">test</property>
<property name="password">123.com</property>

找到主服務器和從服務器模塊,修改好名稱和對應IP地址:
主服務器:
<dbServer name="master" parent="abstractServer">
<property name="ipAddress">192.168.220.141</property>

第一臺從服務器:
<dbServer name="slave1" parent="abstractServer">
<property name="ipAddress">192.168.220.140</property>

第二臺從服務器:
<dbServer name="slave2" parent="abstractServer">
<property name="ipAddress">192.168.220.136</property>

指定從服務器池:
<dbServer name="slaves" virtual="true">
<property name="poolNames">slave1,slave2</property>

Mysql -- 讀寫分離
Mysql -- 讀寫分離
Mysql -- 讀寫分離

3、啟動 amoeba
/usr/local/amoeba/bin/amoeba start&        //&表示將進程放到后臺,時間較長,稍等待
1

第四步:客戶端測試

1、客戶端虛擬機,可以直接用yum安裝一個mysql服務
yum install -y mysql
2、連接 amoeba 服務器
(1)指定密碼和端口連接 amoeba
mysql -u amoeba -p 123456 -h 192.168.220.129 -P8066
(2)創建一個 名為 school 的庫,再創建一個叫 info 的表
MySQL [school]> create table info (
    -> id int(4) not null primary key,      //指定id號,為primary key,不為空
    -> name varchar(10) not null,           //名字
    -> score decimal(4,1) not null);        //成績
Query OK, 0 rows affected (0.03 sec)

Mysql -- 讀寫分離

3、三臺mysql服務器驗證實驗結果
首先驗證寫的操作是否分離:
(1)此時,我們在主服務器上,直接進入數據庫,就會發現也多了一個名為 info的表

Mysql -- 讀寫分離

(2)但是,兩臺從服務器上并沒有:

Mysql -- 讀寫分離

所以,我們在客戶端寫入的語句,在主服務器上會查詢到,但是兩臺從服務器上并沒有,此時寫的操作就直接交給了主服務器。
接下來是驗證讀的操作:
(1)在兩臺從服務器上的各自也創建一個 info 表,也都各自寫入兩條信息。

Mysql -- 讀寫分離

Mysql -- 讀寫分離

(2)客戶端查詢 info 表的內容,因為做了讀寫分離操作,所以查詢的內容應該是 兩臺從服務器上 info表的內容。

Mysql -- 讀寫分離

因此,用戶讀取數據,同時通過從服務器,這樣就減輕了主服務器的并發量。

四、總結

這篇博客,為了展示讀寫分離的實驗效果,并沒有同時做主從同步,在企業網中,主從同步和讀寫分離是密不可分的。這樣,客戶對數據庫進行寫的操作時,就由主服務器承擔;進行讀取,查詢等操作時,就由從服務器來承擔(由于做了主從同步,每臺從服務器的數據和主服務器是一樣的)
在高并發請求時,實現了負載均衡,保證數據的安全性,服務器的高效運行
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文水县| 会昌县| 乳山市| 道真| 西盟| 乐业县| 邵东县| 托克托县| 富裕县| 巨鹿县| 固原市| 平昌县| 青冈县| 南木林县| 如皋市| 峨眉山市| 香港| 同心县| 平邑县| 象州县| 红河县| 安顺市| 左贡县| 朝阳区| 宁夏| 剑河县| 石柱| 大理市| 荆门市| 长垣县| 三都| 镇康县| 孝昌县| 偏关县| 潞城市| 吉隆县| 福州市| 河北区| 桃江县| 碌曲县| 巴彦淖尔市|