MyCat初體驗----數據分片(一)

前提

MyCat版本 :1.6.7.4
MySQL版本 :5.7.26

1.下載

MyCat的一些介紹,MyCat的下載地址,直接解壓縮即可,無需安裝,這裏就不在過多介紹了。

2.配置

其實簡單分片測試需要改動的地方不多,但是首次接觸的情況下,難免對很多東西不瞭解,改東西也容易改錯,多多少少會出現問題,下面我們就簡單的來看下需要我們進行改動的文件。

2.1.schema.xml

MyCat的配置文件都放在MyCat目錄下的conf文件夾下,首先我們來看下schema文件。schema文件是MyCat的重要配置文件之一,管理着邏輯庫、表、分片規則、數據節點以及數據源。

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

	<schema name="TESDB" checkSQLschema="true" sqlMaxLimit="100">
		<!-- auto sharding by id (long) -->
		<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
		<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
			/> -->
	</schema>
	<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
		/> -->
	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
	<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
	 <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
	<dataNode	name="jdbc_dn2" dataHost="jdbchost" database="db2" />
	<dataNode name="jdbc_dn3" 	dataHost="jdbchost" 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>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3306" user="root"
				   password="123456">
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
	<!--
		<dataHost name="sequoiadb1" maxCon="1000" minCon="1" balance="0" dbType="sequoiadb" dbDriver="jdbc">
		<heartbeat> 		</heartbeat>
		 <writeHost host="hostM1" url="sequoiadb://1426587161.dbaas.sequoialab.net:11920/SAMPLE" user="jifeng" 	password="jifeng"></writeHost>
		 </dataHost>

	  <dataHost name="oracle1" maxCon="1000" minCon="1" balance="0" writeType="0" 	dbType="oracle" dbDriver="jdbc"> <heartbeat>select 1 from dual</heartbeat>
		<connectionInitSql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</connectionInitSql>
		<writeHost host="hostM1" url="jdbc:oracle:thin:@127.0.0.1:1521:nange" user="base" 	password="123456" > </writeHost> </dataHost>

		<dataHost name="jdbchost" maxCon="1000" 	minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc">
		<heartbeat>select 	user()</heartbeat>
		<writeHost host="hostM" url="mongodb://192.168.0.99/test" user="admin" password="123456" ></writeHost> </dataHost>

		<dataHost name="sparksql" maxCon="1000" minCon="1" balance="0" dbType="spark" dbDriver="jdbc">
		<heartbeat> </heartbeat>
		 <writeHost host="hostM1" url="jdbc:hive2://feng01:10000" user="jifeng" 	password="jifeng"></writeHost> </dataHost> -->

	<!-- <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="0" dbType="mysql"
		dbDriver="jdbc"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1"
		url="jdbc:mysql://localhost:3306" user="root" password="123456"> </writeHost>
		</dataHost> -->
</mycat:schema>

schema標籤

一個schema標籤代表一個邏輯庫,每個邏輯庫都有自己的相關配置,可以根據情況定義多個邏輯庫。

name屬性用於定義邏輯庫的名稱。
checkSQLschema屬性則用於檢測SQL語句中帶了邏輯庫名稱是否去掉。
例如

select * from TESTDB.travelrecord;

如果爲true,則去掉,語句簡化爲

select * from travelrecord;

但是非邏輯庫名稱,則無效,例如

select * from db1.travelrecord;

其中db1不會被刪除。

注意:Linux 下部署安裝MySQL,默認不忽略表名大小寫,需要手動到/etc/my.cnf 下配置lower_case_table_names=1使Linux環境下MySQL忽略表名大小寫,否則使用MyCAT的時候會提示找不到表的錯誤!

sqlMaxLimit用於定義默認顯示信息的數量,例如定義爲100

select * from TESTDB.travelrecord;

實際等同於

select * from TESTDB.travelrecord limit 100;

當然,如果SQL語句中顯示指定了limit,則不受該屬性約束。

table標籤

邏輯庫中定義的邏輯表。
name用於定義邏輯表的名稱。
dataNode定義這個邏輯表所屬的dataNode,該屬性的值需要的dataNode標籤中name屬性的值相互對應。
rule指定邏輯表需要使用的規則名稱,該名稱需在rule.xml中定義,具體可參考rule.xml相關介紹。

dataNode標籤

用於定義MyCat數據節點,也就是數據分片,通俗點講一個dataNode對應一個物理數據庫。
name定義數據節點的名稱,table標籤中dataNode屬性使用。
dataHost對應dataHost標籤中的name屬性值。
database對應的具體物理數據庫。

dataHost標籤

name dataHost名稱,供dataNode的dataHost使用。
maxCon 連接池最大連接數
minCon 連接池最小連接數
dbType 數據庫類型
dbDriver 連接數據庫的Driver類型

heartbeat標籤

用於和後端數據庫進行心跳檢查的語句。

writeHost標籤

host一般writeHost我們使用*M1,readHost我們用*S1
url 物理數據庫host+端口 localhost:3306
user 物理數據庫用戶名
password 物理數據庫密碼

雖然每個屬性都有自己的意義,但是如果不做深入研究,只需要注意幾個標籤的幾個屬性即可。

schema標籤 name屬性
table標籤 name、dataNode屬性
dataNode標籤 name、datahost、database屬性
dataHost標籤 name屬性
writeHost標籤 url、user、password

當然如果僅做測試,目前只需要修改writeHost標籤的幾個屬性即可。

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