Linux上安裝Mycat和配置連接MySQL 8

一、Mycat安裝

1、Mycat官網下載

http://www.mycat.org.cn/
在這裏插入圖片描述

2、解壓文件

tar -xvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

3、移動到系統的本地軟件目錄

mv mycat /usr/local/mycat

4、啓動Mycat

cd /usr/local/mycat/bin
./mycat start

參數: ./mycat { console | start | stop | restart | status | dump }

5、檢查啓動情況

第一種:查看端口號,默認端口:8066

netstat -tunlp|grep 8066

第二種:Mycat的命令

./mycat status

二、Mycat配置

1、schema.xml

  這個文件是Mycat最重要的配置文件,負責管理庫、表、分片規則、DataNode、DataSource。

<schema name="MYCATDB" checkSQLschema="false" sqlMaxLimit="100">
	<table name="tb_user" dataNode="dn1,dn2,dn3" rule="mod-long"/>
</schema>

<dataNode name="dn1" dataHost="localhost1" database="db1"/>
<dataNode name="dn2" dataHost="localhost1" database="db2"/>
<dataNode name="dn3" dataHost="localhost1" database="db3"/>

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
	<heartbeat>select user()</heartbeat>
	<writeHost host="hostS1" url="localhost:3306" user="root" password="root"/>
</dataHost>
屬性 釋義
checkSQLschema 是否去掉表前面的數據庫的名稱,默認false
sqlMaxLimit 相當於SQL加上limit 語句
heartbeat 用於和後端數據庫進行心跳檢查的語句

2、server.xml

  Server.xml保存了Mycat需要的所有的系統配置信息,代碼映射爲SystemConfig類。

<system>  
    <property name="charset">utf8</property> 
    <property name="defaultSqlParser">druidparser</property>  
    <property name="mutiNodeLimitType">1</property>
    <property name="serverPort">8066</property>  
    <property name="managerPort">9066</property>
    <property name="bindIp">0.0.0.0</property>   
</system>  
        
<user name="mycat">  
    <property name="password">mycat</property>  
    <property name="schemas">MYCATDB</property>
</user> 
屬性 釋義
charset 字符集
processors 處理線程數量,默認是cpu數量
processorBufferChunk 每次讀取buffer的數量,默認4096
sequnceHandlerType 全局ID生成方式。(0:本地文件方式,1:數據庫方式;2:時間戳序列方式;3:ZK生成ID;4:ZK遞增ID生成)
idleTimeout 指定連接的空閒超時時間,默認 30 分鐘
sqlExecuteTimeout SQL 執行超時的時間,Mycat 會檢查連接上最後一次執行 SQL 的時間,若超過這個時間則會直接關閉這連接。默認時間爲 300 秒,單位秒
bindIp Mycat 服務監聽的 IP 地址
serverPort Mycat 的使用端口
managerPort Mycat 的管理端口
useSqlStat 是否開啓實時統計。1:開啓;0:關閉
useGlobleTableCheck 是否開啓全局表一致性檢測。1:開啓;0:關閉
handleDistributedTransactions 分佈式事務開關。0:不過濾分佈式事務;1:過濾分佈式事務;2 :不過濾分佈式事務,但是記錄分佈式事務日誌

3、rule.xml

  rule.xml 裏面就定義了我們對錶進行拆分所涉及到的規則定義。

<tableRule name="mod-long">
	<rule>
		<columns>id</columns>
		<algorithm>mod-long</algorithm>
	</rule>
</tableRule>

<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
	<property name="count">3</property>
</function>
屬性 釋義
columns 要拆分的列名稱
algorithm 使用function標籤中name屬性,連接表規則的路由算法

三、連接MySQL 8遇到的問題

  目前Mycat仍主要面對MySQL 5.5、5.6、 5.7版,對最新的MySql 8尚未完全支持,需要用戶對MySQL 8和Mycat的配置進行一系列的修改。
1、Mycat的加密方式爲mysql_native_password,MySQL 8的默認加密方式爲caching_sha2_password。
解決方案:看了很多別人的辦法,改驅動jar包、改my.cnf、改url連接,太麻煩了!
下面這個方法我覺得最方便!其實就是單獨創建一個mycat用戶做連接,設置其加密方式爲mysql_native_password,並賦予權限。

CREATE USER 'mycat'@'%' IDENTIFIED BY 'mycat';
ALTER USER 'mycat'@'%' IDENTIFIED WITH mysql_native_password BY 'mycat'; 
GRANT ALL PRIVILEGES  ON *.* TO 'mycat'@'%';
FLUSH PRIVILEGES;

2、Mycat使用圖形化工具創建表報錯
解決方案:使用SQL語句建表

3、使用命令連接Mycat報錯
解決方案:增加加密方式參數,如:mysql -umycat -p -P8066 -h127.0.0.1 --default-auth=mysql_native_password。

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