1. 程式人生 > >MYSQL的主從復制與讀寫分離

MYSQL的主從復制與讀寫分離

amp pan 滿足 art 5.1 tap sta 訪問服務器 方式

在實際生產環境中,如果對數據庫的讀和寫都在同一個數據庫服務器中操作,無論是安全性,高可用性,還是高並發性等各個方面都是不能滿足實際需求,因此,一般來說都是通過主從復制的方式來同步詩句,再通過讀寫分離來提升數據庫的並發負載能力這樣的方案來實施和部署。
MYSQL主從復制的原理
MYSQL的主從復制和MYSQL的讀寫分離兩者有著緊密的聯系,首先要部署主從復制,只有主從復制完成了,才能在此基礎上進行數據的讀寫分離。
MYSQL讀寫分離原理
讀寫分離就是只在主服務器上寫,只能在從服務器上讀。基本原理就是讓主數據庫處理事務性查詢,從而數據庫處理select查詢。數據庫復制被用來把事務性查詢導致的變更同步到群集分鐘的從數據庫。
基於中間代理層實現:代理一般位於客戶端和服務器之間,代理服務器建立到客戶端請求通過判斷後轉發到後端數據庫。這裏我們用的是Amoeba。

實驗所需用到的包和整理的腳本鏈接: https://pan.baidu.com/s/1papoUzo9sIVWs2QaIpdOWg 密碼: qm2g

主服務器IP:192.168.175.128
從服務器IP1:192.168.175.141
從服務器IP2:192.168.175.142
代理服務器地址:192.168.175.133
實驗如下:
實驗開始前首先把所有服務器的防火墻關掉
首先我們需要時主從服務器的時間進行同步
技術分享圖片
技術分享圖片
在主服務器上的etc下ntp.conf這個文件的最後進行插入插入服務器的地址段,但這裏使用127來指明不要用真實地址段。退出文件後開啟ntp服務

技術分享圖片
在兩臺從服務器上指定主服務器的地址進行同步。
下面要進行的操作的是主從復制
技術分享圖片
技術分享圖片
首先回到主服務器上在etc下面的my.cnf文件下進行修改,如文件裏沒有的自行添加
下面對住服務器的數據庫進行操作
技術分享圖片
首先創建個用戶給權限,在刷新使數據庫立即生效,在顯示主從同步狀態

下面回到從服務器上操作
技術分享圖片
在兩臺從服務器上etc下面的my.cnf文件下進行修改,如文件裏沒有的自行添加
技術分享圖片
進入數據庫指定主服務器地址和二進制日誌和節點,在這裏要註意的是主服務器的節點經常會改變,所有在進行操作前要確認主服務器的節點和二進制日誌。開啟主從同步,顯示主從同步狀態,這裏需要看到兩個yes。
為了驗證主從同步是否成功可以在主服務器上創建一個數據庫來驗證

下面要進行的代理服務器上的操作
技術分享圖片
技術分享圖片
安裝java環境
技術分享圖片
在etc下面的profile文件最下面這段話,在使用source刷新這個文件,這個文件會改變系統的環境變量

技術分享圖片
在這裏我們需要開放權限給amoeba,所以回到主服務器和從服務器上開放權限

技術分享圖片
創建一個amoeba文件來放一會我們解壓的文件
技術分享圖片
修改amoeba兩個配置文件
技術分享圖片
首先設置一個用戶來使客戶端能訪問服務器技術分享圖片
指定寫是主讀是從

技術分享圖片
編輯下個文件
技術分享圖片
設置一個代理訪問服務器的用戶
技術分享圖片
指定主服務器的地址
技術分享圖片
指定兩臺從服務器地址
技術分享圖片
因為之前修改了從服務器的名字文slave所以下面要更改過來

技術分享圖片
使用/usr/local/amoeba/bin/amoeba start&來開啟amoeba代理服務
可以使用netstat -ntap | grep java來查看監聽地址和端口

這裏所有的服務就算完成了,在客戶端的數據庫可以使用mysql -u amoeba -p123456 -h 192.168.175.133 -P 8066
這裏指定登錄用戶問amoeba 密碼為123456 地址為代理服務器地址 -P指定端口
為了驗證讀寫是否分離,可以現在三代服務器上創建一個表,在每個表裏各寫一段不同的數據,之後再兩臺從服務器上使用 stop slave; 來關閉主從
之後再客戶端查看表裏的內容若只能顯示從服務器的信息。在客戶端插入一條信息只有主服務器才能開到。這樣實驗就算完成了就算完成了。

MYSQL的主從復制與讀寫分離