Mysql的讀寫分離

2021-10-06 10:24:07 字數 3432 閱讀 9962

server2上檢查主從配置:

下面開始設定讀寫分離。

我們直接使用官方提供的外掛程式mysql-proxy。

mysql-proxy是官方提供的mysql中介軟體產品可以實現負載平衡,讀寫分離,failover等。mysql proxy就是這麼乙個中間層**,簡單的說,mysql proxy就是乙個連線池,負責將前台應用的連線請求**給後台的資料庫,並且通過使用lua指令碼,可以實現複雜的連線控制和過濾,從而實現讀寫分離和負載平衡。對於應用來說,mysql proxy是完全透明的,應用則只需要連線到mysql proxy的監聽埠即可。

當然,這樣proxy機器可能成為單點失效,但完全可以使用多個proxy機器做為冗餘,在應用伺服器的連線池配置中配置到多 個proxy的連線引數即可。

安裝:因為是rmp包,所以可以直接通過yum倉庫進行直接安裝。

配置:

因為需要自己編寫配置檔案,所以建立配置檔案的目錄以及配置編寫配置檔案:

####建立配置檔案目錄

[root@localhost local]# mkdir /usr/local/mysql-proxy/bin/conf

####編寫配置檔案

[root@localhost local]# /usr/local/mysql-proxy/bin/conf/mysql-proxy.conf

配置檔案內容:

....

1 [mysql-proxy]

2 proxy-address=0.0.0.0:3306 ##監聽本機埠

3 proxy-backend-address=192.168.1.110:3306 ##讀寫資料庫

4 proxy-read-only-backend-address=192.168.1.120:3306 ##唯讀資料庫

5 proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

##讀寫啟動配置

6 pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid ##pid儲存位置

7 log-file=/usr/local/mysql-proxy/log/mysql-proxy.log ##日誌儲存位置

8 plugins=proxy ##以外掛程式形式啟動

9 log-level=debug ##日誌級別

10 keepalive=true ##檢測埠

11 daemon=true ##以守護程序方式(後台)執行

....

####修改配置檔案的許可權

[root@localhost local]# chmod 660 /usr/local/mysql-proxy/bin/conf/mysql-proxy.conf

####建立日誌目錄

[root@localhost local]# mkdir /usr/local/mysql-proxy/log

####編寫lua啟動指令碼

[root@localhost local]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

指令碼內容:

##編寫lua啟動指令碼:/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 設定

啟動:啟東時需要制定配置檔案路徑

當檢視的日誌內容為目標主機時,證明啟動成功:

在資料庫中對許可權進行設定:

###在資料庫中對使用者授權

mysql> grant insert,update,select on *.* to repl@'%' identified by 'linux+755';

###重新整理授權表

mysql> flush privileges;

###建立測試表

然後使用客戶端遠端登入,該使用者也裝有資料庫,對資料庫進行遠端登入。

在server3中檢視登入時的分配:

然後在客戶端插入資料:

在server1上檢視:

此時在server2上也可以檢視到資料,是因為我們設定的半同步,關閉半同步,此時客戶端插入的資料只能在server1上檢視。

mysql讀寫分離

5.讀寫分離適用與讀遠大於寫的場景,如果只有一台伺服器,當select很多時,update和delete會被這些select訪問中的資料堵塞,等待select結束,併發效能不高。對於寫和讀比例相近的應用,應該部署雙主相互複製。6.可以在從庫啟動是增加一些引數來提高其讀的效能,例如 skip inno...

讀寫分離 MySQL

1 what 讀寫分離 讀寫分離,基本的原理是讓主資料庫處理事務性增 改 刪操作 insert update delete 而從資料庫處理select查詢操作。資料庫複製被用來把事務性操作導致的變更同步到集群中的從資料庫。2 why 那麼為什麼要讀寫分離呢?因為資料庫的 寫 寫10000條資料到or...

mysql讀寫分離

在資料庫集群架構中,讓主庫負責處理事務性查詢,而從庫只負責處理select查詢,讓兩者分工明確達到提高資料庫整體讀寫效能。當然,主資料庫另外乙個功能就是負責將事務性查詢導致的資料變更同步到從庫中,也就是寫操作。即主從複製和讀寫分離是離不開的 1 分攤伺服器壓力,提高機器的系統處理效率 讀寫分離適用於...