本文咱們來給你們介紹下經過MyCat來實現MySQL的讀寫分離操做mysql
前面咱們已經介紹過了mysql的主從同步和mycat的安裝及相關配置文件的介紹,如今咱們來配置下具體的讀寫分離
操做。程序員
咱們如今master
庫中建立一張t_user
表,由於主從的關係,slave
中也會同步建立該表。
sql
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="t_user" primaryKey="ID" type="global" dataNode="dn1" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="demo1" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.88.180:3306" user="root" password="123456"> <readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> 複製代碼
注意
:數據庫
TESTDB
沒變demo1
1
不然查詢會讀取不到從庫的數據寫
庫的地址server.xml
中配置的帳號balance的值 | 描述 |
---|---|
0 | 不開啓讀寫分離機制,全部讀操做都發送到當前可用的 writeHost 上 |
1 | 所有的 readHost 與 stand by writeHost(分庫中沒有參與寫操做的) 參與 select 語句的負載均衡 |
2 | 全部讀操做都隨機的在 writeHost、 readhost 上分發。 |
3 | 全部讀請求隨機的分發到 writeHost 對應的 readhost 執行,writerHost 不負擔讀壓力 |
本案例中server.xml文件不須要修改,若是在schema.xml中中將TESTDB
修改了那麼在server.xml文件中對應的也須要修改後端
在讀寫分離中不須要修改rule.xml文件微信
經過前面的介紹咱們已經安裝好了MyCat,如今咱們先啓動MyCat,MyCat的啓動腳本位於bin
目錄下,經常使用的命令負載均衡
操做 | 命令 |
---|---|
啓動 | ./bin/mycat start |
中止 | ./bin/mycat stop |
重啓 | ./bin/mycat restart |
查詢狀態 | ./bin/mycat status |
咱們能夠經過客戶端來鏈接MyCat操做,客戶端能夠是Navicat
或者DataGrip
,本文經過Navicat來鏈接,注意鏈接的端口爲8066
前後端分離
咱們經過mycat鏈接來執行insert
語句,來查看是否會寫入到物理庫中。微服務
如上,經過對MyCat的邏輯庫的寫操做,真實的寫入到了物理庫中。測試
接下來咱們看下讀
操做,爲了演示讀操做,咱們直接在slave
中手動插入一條數據,這樣主庫和從庫中的數據就不同了,這時咱們經過MyCat來查詢數據,經過查詢的結果就能判斷出查詢的數據究竟是哪一個庫的數據了。具體操做以下:
經過上面的演示驗證了咱們經過MyCat配置的讀寫分離
是成功的!
好了本文到此,下篇咱們介紹MyCat的分庫分表操做。