以前配置了MySql的主從同步,可是若是咱們程序還沒實現讀寫分離。如今能夠基於Mycat實現讀寫分離,Mycat是一個數據庫中間件,提供了Mysql分表分庫和讀寫分離等解決方案,下面僅記錄Mycat讀寫分離mysql
首先Linux下載MyCatlinux
用wget命令下載 wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gzsql
下載後解壓 tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz數據庫
下面是解壓後的目錄負載均衡
進入conf文件夾能夠看到下面的文件,配置讀寫分離咱們主要使用到了schema.xml與server.xml 文件spa
server.xml: 主要配置Mycat服務的參數,例如端口號,Myact用戶名和密碼使用的邏輯數據庫等.net
schema.xml: 主要配置數據庫的信息,例如邏輯數據庫名稱,物理上真實的數據源以及表和數據源之間的對應關係和路由策略等。server
server.xml 配置xml
找到user節點配置,配置用戶信息,說明以下:中間件
--name 登陸Mycat的用戶名
--password 登陸Mycat的密碼
--schemas 邏輯數據庫名,用於客戶端鏈接時候使用的數據庫名,這裏會和schema.xml中的配置關聯,多個用逗號分開,例如須要這個用戶須要管理兩個數據庫db01,db02,則配置db01,db02
schema.xml 配置
schema.name:關聯 server.xml的 schema
schema.dataNode:Mycat的分片,能夠自定義,多個用逗號隔開,有多少個dataNode 下面的dataNode標籤就有多少個,且必須對應上名稱
dataNode節點: 定義分片信息
dataNode.name: 當前分片的名稱
dataNode.dataHost:當前分片名稱,能夠自定義,下面的dataHost標籤的name就是該分片的dataHost
dataHost節點:當前分片物理數據庫信息,就是配置咱們mysql的信息
dataHost.name:當前分片的物理數據庫名稱
dataHost.sqlMaxLimit配置默認查詢數量
dataHost.database爲真實數據庫名
dataHost.balance="0", 不開啓讀寫分離機制,全部讀操做都發送到當前可用的writeHost 上。
dataHost.balance="1",所有的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1 ->S1 , M2->S2,而且 M1 與 M2 互爲主備),正常狀況下, M2,S1,S2 都參與 select 語句的負載均衡。
dataHost.balance="2",全部讀操做都隨機的在 writeHost、 readHost 上分發。
dataHost.balance="3", 全部讀請求隨機的分發到 readHost 對應的 readHost 執行,writerHost 不負擔讀壓力,
dataHost.writeType="0", 全部寫操做發送到配置的第一個 writeHost,第一個掛了切到第二個writeHost,從新啓動後已切換後的爲準,切換記錄在配置文件中:dnindex.properties .
dataHost.writeType="1",全部寫操做都隨機的發送到配置的 writeHost。
dataHost.writeType="2",沒實現。 -1 表示不自動切換 1 默認值,自動切換 2 基於MySQL 主從同步的狀態決定是否切換
由於此次只配置讀寫分配,不配置分表分庫,因此用一個dataNode就能夠了
啓動Mycat
而後用Java鏈接Mycat,8066是Mycat的默認端口
而後用Java程序添加一條數據
主庫和從庫都插入了一條數據
接下來試試查詢,咱們先把從庫的名稱改一下
而後再執行Java代碼,由於我上面的 dataHost.balance="3" ,因此每次讀都是讀取從庫
以上就是此次使用Mycat實現讀寫分離的所有內容