Mysql數據庫的集群(讀寫分離),說白了就是將讀操作和寫操作分開在不同的服務器上實現,以達到提高效率的目的。
大致原理如下:
數據庫中的所有操作都是有日志記錄的(前提是要打開這個日志記錄功能)
1.master,主服務器(進行寫操作的服務器)的所有記錄都保存到二進制日志(binary log)中,這些記錄叫做二進制日志事件(binary log events);
2.slave,從服務器(進行讀操作的服務器)將mater的binart log拷貝到自己的中繼日志(relay log),然后根據中繼日志對自己的數據進行修改;
3.將讀的請求發給slave,寫的請求發給master,這樣就實現了讀寫分離。技術選型 myproxy
實現過程:
一,設置主服務器,並開啟日志;
1),找到自己的mysql的配置文件,我的系統是win764位,mysql安裝在C盤下面,具體位置請看下圖 ,
2),修改my.ini的配置。這里的服務器是主服務器,必須打開mysql的日志操作記錄,注意:修改配置需要權限,如果沒有權限請鼠標右鍵屬性后為自己的賬戶配置權限。
修改port端口號:默認為3306,我在這里修改為3388,作為主服務器之用。
添加圖中紅色方框的圈起來的部分,#后面是注釋部分,可以不寫。
log="這里是日志存放的路徑地址和文件名" ,如圖中所示,我的日志存在mysql的ini的同級目錄,名字叫mysql.log,mysql.log是操作日志,可以通過文本軟件打開后查看進行了什么操作;
log-bin=mysql-bin 的意思是開啟二進制日志,從服務器通過拷貝這個日志到自己的日志中,然后再進行數據的更新,才能實現主從服務器數據的一致;
server-id=1 就是為該服務器配置一個服務器id,要確保其他服務器沒有占用該id,我在這里設置的為1,從服務器設置為10;
3),配置修改完成后保存,重啟服務就可以了,然后為從服務器創建一個賬戶,以便從服務器來鏈接主服務器讀取數據。
注意:開啟和關閉服務都要使用管理員權限打開cmd后進行操作,不然是是會失敗的;還有,mysql服務的名字也許不一樣,可以通過在查看服務來確認。
服務重啟完成后,創建從服務器的賬戶:
參數說明:
*.* :表示對所有表的所有操作
sirius:slave連接master使用的賬號
IDENTIFIED BY 'admin' :slave連接master使用的密碼
192.168.77.128:slave IP
執行成功后,可以到創建的賬戶是存在的
4),查詢主服務器的狀態,記錄 File 和 Position的值,在從服務器端使用;
圖沒有截好,這里的File是mysql-bin.0000003,這個數字如果是第一次開啟二進制日志那么就是1,如果不是就是其他數字;
主服務器端的配置暫時記錄到這,從服務器的配置之后更新····················