Mycat 讀寫分離,主從切換

一. mycat原理圖如下: 

 

如上篇文章,在搭建好mysql主從數據庫的基礎上,現在開始利用mycat實現一主一從讀寫分離,主要有以下幾個步驟:

二.  準備工作(後面會用到)

1.  主從機名稱修改

主機:192.168.1.10  從機:192.168.1.108

修改主從機的名字:

hostnamectl set-hostname 192.168.108

hostnamectl set-hostname 192.168.108

修改完畢通過hostname,查看機器名

三. mycat解壓安裝

mycat官方使用文檔:https://github.com/MyCATApache/Mycat-Server/wiki

去官網下載mycat:http://dl.mycat.io/1.6.7.3/20190927161129/ 

Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz

利用ftp上傳到主機上,然後在主機上解壓安裝mycat

mv Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz  /usr/local

tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz

mv Mycat-server-1.6.7.3-release-20190927161129-linux mycat

四. mycat 配置 

/usr/local/mycat/conf 下有幾個文件

1. server.xml : 定義用戶以及系統相關變量,如端口等

vim  server.xml 修改如下部分,設置登錄mycat的用戶名,密碼,以及邏輯庫名

<user name="mycat">  // 用戶名

                <property name="password">123456</property>  // 密碼

                <property name="schemas">TESTDB</property> // 邏輯庫名稱

        </user>

2.rule.xml:分片規則

3.schema.xml:定義邏輯庫,表分片,節點

這裏我們主要配置下schema.xml

負載均衡類型,目前的取值有4 種:
(1)balance="0", 不開啓讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。

(2)balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從 模式(M1->S1,M2->S2,並且 M1 與 M2 互爲主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。

(3)balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發。

(4)balance="3",所有讀請求隨機的分發到 readhost 執行,writerHost 不負擔讀壓力

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
	</schema>

        <!-- 配置物理數據庫名testDB -->
	<dataNode name="dn1" dataHost="localhost1" database="testDB" />
        <!-- 爲了能看到讀寫分離的效果,把balance設置成2,會在兩個主機間切換查詢 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
                <!-- 主機寫庫ip-->
		<writeHost host="hostM1" url="192.168.1.10:3306" user="root"
				   password="123456">
                     <!-- 從機讀庫ip-->
                    <readHost host="hostS1" url="192.168.1.108:3306" user="root"
                                   password="123456"/>
		</writeHost>
	</dataHost>
	
</mycat:schema>

4. 遠程連接主機數據庫,從機數據庫,看看是否可以連得上。

cd /usr/local/mysql/bin

./mysql -u root -p -h 192.168.1.10 -P3306   //主機

密碼123456

./mysql -u root -p -h 192.168.1.108 -P3306 // 從機

密碼123456

五. 啓動&登錄mycat

  1. 啓動等命令

   啓動程序 mycat是用Java寫的

(1) 控制檯啓動:去mycat/bin目錄下執行./mycat console 使用控制它啓動,可以看到日誌-------使用這個

  (2)   後臺啓動:去mycat/bin目錄下 ./mycat start

   ./mycat restart

   ./mycat status 

  ./mycat start 

  ./mycat stop 

啓動成功輸出:Starting Mycat-server...

兩種登錄方法:

登錄管理窗口(運維管理): mysql -umycat -p123456 -h 192.168.1.10 -P9066

登錄數據窗口:mysql -umycat -p123456 -h 192.168.1.10 -P8066    使用這個

 

2. 測試mycat的配置是否正常

(1)先啓動搭建好的主從模式

(2)進入到mycat命令行中可以測試下,是否可以通過mycat可以查詢到主從數據。可以查到的話,就代表我們配置正常。然後就可以進行下面的讀寫分離了。

 

 六.  驗證讀寫分離


   1. 在寫主機插入:insert into mytable values (1, @@hostname);

    主從主機數據不一致了

 2. 在Mycat裏查詢:select * from mytable

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章