您好,登錄后才能下訂單哦!
在實際生產環境中,如果對數據庫的讀和寫都在同一個數據庫服務器中操作,無論是安全性,高可用性,還是高并發性等各個方面都是不能滿足實際需求,因此,一般來說都是通過主從復制的方式來同步詩句,再通過讀寫分離來提升數據庫的并發負載能力這樣的方案來實施和部署。
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; 來關閉主從
之后再客戶端查看表里的內容若只能顯示從服務器的信息。在客戶端插入一條信息只有主服務器才能開到。這樣實驗就算完成了就算完成了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。