MyCat教程四:實現讀寫分離

本文咱們來給你們介紹下經過MyCat來實現MySQL的讀寫分離操做mysql


MyCat讀寫分離

1、讀寫分離配置

  前面咱們已經介紹過了mysql的主從同步和mycat的安裝及相關配置文件的介紹,如今咱們來配置下具體的讀寫分離操做。程序員

1.1 建立物理表

  咱們如今master庫中建立一張t_user表,由於主從的關係,slave中也會同步建立該表。
在這裏插入圖片描述sql

1.1 schema.xml配置

<?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>

  
  
  

 
複製代碼

注意數據庫

  1. schema中的name TESTDB 沒變
  2. table中的是邏輯表的名稱,因此和物理表同名’t_user’
  3. dataNode中的database表示的是物理數據庫名稱demo1
  4. balance的值要設置爲1不然查詢會讀取不到從庫的數據
  5. writeHost中的url表示庫的地址
  6. readHost表示配置讀庫的信息
  7. user屬性對應的應該是server.xml中配置的帳號
balance的值 描述
0 不開啓讀寫分離機制,全部讀操做都發送到當前可用的 writeHost 上
1 所有的 readHost 與 stand by writeHost(分庫中沒有參與寫操做的) 參與 select 語句的負載均衡
2 全部讀操做都隨機的在 writeHost、 readhost 上分發。
3 全部讀請求隨機的分發到 writeHost 對應的 readhost 執行,writerHost 不負擔讀壓力

1.2 server.xml配置

  本案例中server.xml文件不須要修改,若是在schema.xml中中將TESTDB修改了那麼在server.xml文件中對應的也須要修改後端

1.3 rule.xml配置

  在讀寫分離中不須要修改rule.xml文件微信

2、MyCat啓動

  經過前面的介紹咱們已經安裝好了MyCat,如今咱們先啓動MyCat,MyCat的啓動腳本位於bin目錄下,經常使用的命令負載均衡

操做 命令
啓動 ./bin/mycat start
中止 ./bin/mycat stop
重啓 ./bin/mycat restart
查詢狀態 ./bin/mycat status

在這裏插入圖片描述

3、測試讀寫分離

3.1 客戶端鏈接MyCat

  咱們能夠經過客戶端來鏈接MyCat操做,客戶端能夠是Navicat或者DataGrip,本文經過Navicat來鏈接,注意鏈接的端口爲8066前後端分離

在這裏插入圖片描述
在這裏插入圖片描述

3.2 寫數據測試

  咱們經過mycat鏈接來執行insert語句,來查看是否會寫入到物理庫中。微服務

在這裏插入圖片描述

如上,經過對MyCat的邏輯庫的寫操做,真實的寫入到了物理庫中。測試

3.3 讀數據測試

  接下來咱們看下操做,爲了演示讀操做,咱們直接在slave中手動插入一條數據,這樣主庫和從庫中的數據就不同了,這時咱們經過MyCat來查詢數據,經過查詢的結果就能判斷出查詢的數據究竟是哪一個庫的數據了。具體操做以下:

在這裏插入圖片描述

經過上面的演示驗證了咱們經過MyCat配置的讀寫分離是成功的!

好了本文到此,下篇咱們介紹MyCat的分庫分表操做。



關注微信公衆號【程序員的夢想】,專一於Java,SpringBoot,SpringCloud,微服務,Docker以及先後端分離等全棧技術。

在這裏插入圖片描述
相關文章
相關標籤/搜索