MYSQL的主從復制與讀寫分離
MYSQL主從復制的原理
MYSQL的主從復制和MYSQL的讀寫分離兩者有著緊密的聯系,首先要部署主從復制,只有主從復制完成了,才能在此基礎上進行數據的讀寫分離。
MYSQL讀寫分離原理
讀寫分離就是只在主服務器上寫,只能在從服務器上讀。基本原理就是讓主數據庫處理事務性查詢,從而數據庫處理select查詢。數據庫復制被用來把事務性查詢導致的變更同步到群集分鐘的從數據庫。
實驗所需用到的包和整理的腳本鏈接: 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的主從復制與讀寫分離