lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

mycat 安装和简单应用

 

 

 

一、mycat 概述

 

  mycat用于数据库的分库分表,本文以数据库mysql-8.0.31为例。mycat主要用“逻辑库、逻辑表”来管理各个物理节点主机的数据库和表。mycat需要配置“逻辑库、逻辑表(需要配置分库分表规则rule,核心内容)、逻辑节点、逻辑主机、登录mycat的用户名和密码”。schema.xml,主要配置了“逻辑库、逻辑表、逻辑节点、逻辑主机(关联逻辑节点和真实主机,以及真实主机登录mysql的用户名和密码)”。sever.xml,主要配置mycat登录的用户名和密码。rule.xml, 主要配置了分库分表的规则,注意在function中关联的文件。

 

 

 

 

二、mycat的安装和使用

 

mycat的安装和使用(mycat1.6.7.3)







== mycat 安装 ==




	--、安装说明:
	
	
		-- mycat 节点:
		
			-- 我配置2个节点。需要2台主机,一台真机windows11, 一台虚拟机Linux_rockylinux8.5。
			
			-- windows11: ip=10.10.10.12
				-- 需要安装jdk:	我安装jdk11(mycat使用);
				-- mysql 版本:	mysql-8.0.31-winx64.zip;
				-- mycat 信息;
					--	mycat 版本: Mycat-server-1.6.7.3-release-20190923113828-win.tar; 
					--	mycat 主机ip:	10.10.10.12
					--	mycat 登录:	mysql -h 10.10.10.12	-P 8066		-uadmin 	-p
					
			-- linux_rockylinux: ip=10.10.10.15
				-- 安装mysql: mysql-8.0.31
				-- 需要开放端口: 3306
				-- 需要关闭SElinux


		-- mycat 前置条件:	
			--	必须安装jdk(mycat使用);	
			--	可以用版本:	 jdk11、jdk8


		-- mycat: 
			--	安装目录:		../mycat_install;		
			--	版本:Mycat-server-1.6.7.3-release-20190923113828-win.tar


		-- mysql 版本: 	8.0.31


		-- jdk 版本:	
			-- jdk_download:
				--	https://www.oracle.com/java/technologies/downloads/
				--	https://www.oracle.com/java/technologies/downloads/#java8
			-- jdk 版本:	jdk-11.0.17_windows-x64_bin.zip(选用);  jdk-8u351-windows-x64.exe
			-- jdk11_install	=	D:\tools\web\java\jdk\jdk11\bin\java




	--	下载连接:


		-- mycat_download:		http://www.mycat.org.cn/mycat1.html

		-- mysql_download: 		https://dev.mysql.com/downloads/mysql/


		-- mysql_connector_j_download: 		https://dev.mysql.com/downloads/connector/j/
		
			-- 说明: 由于mycat 的jdbc版本比较旧,所以需要用新版本替换旧版本; mycat 安装跟目录为 ../mycat_install
			
			-- select operating system:  platform independent
			
			-- version:  mysql-connector-j-8.0.31.tar.gz;   mysql-connector-j-8.0.31.zip
			
			--	替换位置: ../mycat_install/lib/mysql-connector-java-5.1.35.jar; 
						-- 删除: mysql-connector-java-5.1.35.jar
						-- 改名: mysql-connector-j-8.0.31.jar ==> mysql-connector-java-8.0.31.jar;
						-- 复制: mysql-connector-java-8.0.31.jar ==> ../mycat_install/lib/						


		

	-- mycat安装(解压式安装)


		-- 解压文件: 
			--	Mycat-server-1.6.7.3-release-20190923113828-win.tar; 
			--	安装目录为 mycat_install = D:\tools\web\db\mysql\plugins\mycat1673

			
		-- 配置mycat的系统环境变量:	
			-- mycat_install=D:\tools\web\db\mysql\plugins\mycat1673		
			-- path=%mycat_install%\bin;

				
		-- 配置文件wrapper.conf:			../mycat_install/conf/wrapper.conf
		
			# wrapper.java.command=java
			# wrapper.java.command=jdk_install\bin\java
			# wrapper.java.command=C:\Program Files\Java\jdk1.8.0_351\bin\java
			wrapper.java.command=D:\tools\web\java\jdk\jdk11\bin\java









== mycat 使用 ==




	-- 一些说明:


		-- 在mycat和数据库中, 英文大小写敏感;


		-- mycat的用户名和密码:	admin	123456
			-- 配置文件:	plugins\mycat\mycat1600\win\mycat_config_examples\mycat1673\conf\server.xml
				<user name="admin">
					<property name="password">123456</property>
					<property name="schemas">MYCAT</property>
				</user>


		-- 表和数据
		
			CREATE TABLE IF NOT EXISTS TBL_INFO(
			 `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
			 `i_name` VARCHAR(20),
			 PRIMARY KEY(`id`)
			)ENGINE=INNODB;

			INSERT INTO TBL_INFO(id, i_name) VALUES(88, "laohu");
			INSERT INTO TBL_INFO(id, i_name) VALUES(188, "tuzi");




	-- mycat 配置


		-- mycat配置内容:	逻辑库/逻辑表/逻辑节点/逻辑主机; 	
			--	位置:	plugins\mycat\mycat1600\win\mycat_config_examples\mycat1673\conf\schema.xml
				-- 逻辑库:	在mycat中,显示的虚拟库名;
				-- 逻辑表: 	在mycat中,显示的虚拟库中的虚拟表名;
				-- 逻辑节点:	将“逻辑节点”和“逻辑主机”关联;
				-- 逻辑主机:	将“逻辑主机”和“真实主机”关联; 并配置在“真实主机”登录mysql的用户名和密码;

				
		-- mycat配置内容:	mycat登录用户和密码;
			--	位置:	plugins\mycat\mycat1600\win\mycat_config_examples\mycat1673\conf\server.xml
				<user name="admin">
					<property name="password">123456</property>
					<property name="schemas">MYCAT</property>
				</user>


		-- mycat配置内容: 分库分表规则;
		
				-- 分片规则,重点研究,认真研读
		
				--	位置:	plugins\mycat\mycat1600\win\mycat_config_examples\mycat1673\conf\rule.xml
			
				-- 关联关系: 
				
					-- (1)
					(schema.xml)<table rule="auto-sharding-long" />	   ==>		rule.xml的
									
					<tableRule name="auto-sharding-long">
						<rule>
							<columns>id</columns>					   ==>		rule.xml的
							<algorithm>rang-long</algorithm>
						</rule>
					</tableRule>
					
					
					-- (2)
					<function name="rang-long"
						class="io.mycat.route.function.AutoPartitionByLong">
						<property name="mapFile">autopartition-long.txt</property>  ==>  autopartition-long.txt   
					</function>
					
					
					-- (3)
					autopartition-long.txt 位置:
						= plugins\mycat\mycat1600\win\mycat_config_examples\mycat1673\conf\autopartition-long.txt




	-- mycat 服务:


		-- 安装服务:
			G:\tmpWorkspaces>mycat install
			wrapper  | Mycat-server installed.
			

		-- 开启服务: 
			G:\tmpWorkspaces>mycat start
			wrapper  | Starting the Mycat-server service...
			wrapper  | Waiting to start...
			wrapper  | Mycat-server started.
		
		
		-- 关闭服务:
			G:\tmpWorkspaces>mycat stop
			wrapper  | Stopping the Mycat-server service...
			wrapper  | Mycat-server stopped.
		
		
		-- 卸载服务:
			G:\tmpWorkspaces>mycat remove
			wrapper  | Mycat-server removed.

		
		
		



	-- 登录和退出 mycat:


		--  登录mycat:		mysql	-h mycat_install_host_ip	-P 8066		-uadmin 	-p
			G:\tmpWorkspaces>mysql -h 10.10.10.12 -P 8066 -uadmin -p
			Enter password: ********


		-- 退出mycat:
			mysql> \q
			Bye	


	-- mycat中操作数据库:

			mysql>
			mysql> show databases;
			+----------+
			| DATABASE |
			+----------+
			| MYCAT    |
			+----------+
			1 row in set (0.01 sec)

			mysql>
			mysql> use MYCAT;
			Database changed
			mysql>
			mysql> CREATE TABLE IF NOT EXISTS TBL_INFO(
				->  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
				->  `i_name` VARCHAR(20),
				->  PRIMARY KEY(`id`)
				-> )ENGINE=INNODB;
			Query OK, 0 rows affected (0.32 sec)
			 OK!

			mysql>
			mysql> INSERT INTO TBL_INFO(id, i_name) VALUES(88, "laohu");
			Query OK, 1 row affected (0.34 sec)
			 OK!

			mysql> INSERT INTO TBL_INFO(id, i_name) VALUES(188, "tuzi");
			Query OK, 1 row affected (0.01 sec)
			 OK!

			mysql> select * from TBL_INFO;
			+------+--------+
			| id   | i_name |
			+------+--------+
			|   88 | laohu  |
			|  188 | tuzi   |
			+------+--------+
			2 rows in set (0.11 sec)






	-- mycat 完整操作流程:
		


		-- mycat服务安装:
			G:\tmpWorkspaces>mycat install
			wrapper  | Mycat-server installed.


		-- mycat服务开启:
			G:\tmpWorkspaces>mycat start
			wrapper  | Starting the Mycat-server service...
			wrapper  | Waiting to start...
			wrapper  | Mycat-server started.

		-- mycat登录:
			G:\tmpWorkspaces>mysql -h 10.10.10.12 -P 8066 -uadmin -p
			Enter password: ********
			Welcome to the MySQL monitor.  Commands end with ; or \g.
			Your MySQL connection id is 1
			Server version: 5.6.29-mycat-1.6.7.3-release-20190923113828 MyCat Server (OpenCloudDB)

			Copyright (c) 2000, 2022, Oracle and/or its affiliates.

			Oracle is a registered trademark of Oracle Corporation and/or its
			affiliates. Other names may be trademarks of their respective
			owners.

			Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

		-- mycat操作数据库:
			mysql>
			mysql> show databases;
			+----------+
			| DATABASE |
			+----------+
			| MYCAT    |
			+----------+
			1 row in set (0.01 sec)

			mysql>
			mysql> use MYCAT;
			Database changed
			mysql>
			mysql> CREATE TABLE IF NOT EXISTS TBL_INFO(
				->  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
				->  `i_name` VARCHAR(20),
				->  PRIMARY KEY(`id`)
				-> )ENGINE=INNODB;
			Query OK, 0 rows affected (0.32 sec)
			 OK!

			mysql>
			mysql> INSERT INTO TBL_INFO(id, i_name) VALUES(88, "laohu");
			Query OK, 1 row affected (0.34 sec)
			 OK!

			mysql> INSERT INTO TBL_INFO(id, i_name) VALUES(188, "tuzi");
			Query OK, 1 row affected (0.01 sec)
			 OK!

			mysql> select * from TBL_INFO;
			+------+--------+
			| id   | i_name |
			+------+--------+
			|   88 | laohu  |
			|  188 | tuzi   |
			+------+--------+
			2 rows in set (0.11 sec)

		-- mycat退出:
			mysql>
			mysql> \q
			Bye

		-- mycat服务关闭:
			G:\tmpWorkspaces>
			G:\tmpWorkspaces>mycat stop
			wrapper  | Stopping the Mycat-server service...
			wrapper  | Mycat-server stopped.

		-- mycat服务卸载:
			G:\tmpWorkspaces>
			G:\tmpWorkspaces>
			G:\tmpWorkspaces>mycat remove
			wrapper  | Mycat-server removed.

			G:\tmpWorkspaces>
			G:\tmpWorkspaces>
				

 

 

 

 

 

三、主要配置文件:

 

  1、配置文件: schema.xml 

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





	<!-- 配置:逻辑库, 库名:MYCAT-->
	<schema name="MYCAT" checkSQLschema="true" sqlMaxLimit="100">
		<!-- 配置:逻辑表, 表名:TBL_INFO -->
		<table name="TBL_INFO" dataNode="dn1,dn2" rule="auto-sharding-long" />
	</schema>
	
	




	
	<!-- 配置节点: 将‘逻辑节点’和‘逻辑主机’关联;  database="真实节点的数据库"	-->
	<dataNode name="dn1" dataHost="dh1" database="MYCAT" />
	<dataNode name="dn2" dataHost="dh2" database="MYCAT" />





	<!-- 配置逻辑主机: 将“逻辑主机”和“实际主机”关联; “user,password”,在“真实主机”登录mysql时的用户名和密码; -->
	<dataHost name="dh1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="master1" url="jdbc:mysql://10.10.10.12:3306" user="admin"
				   password="123456" />
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
	
	<dataHost name="dh2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="slave1" url="jdbc:mysql://10.10.10.15:3306" user="admin"
				   password="123456" />
		<!-- <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>

 

 

  2、配置文件:server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
	- you may not use this file except in compliance with the License. - You 
	may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
	- - Unless required by applicable law or agreed to in writing, software - 
	distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
	License for the specific language governing permissions and - limitations 
	under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	<system>
	<property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户-->
	<property name="useHandshakeV10">1</property>
	<property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
	<property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->
		<property name="sqlExecuteTimeout">300</property>  <!-- SQL 执行超时 单位:秒-->
		<property name="sequnceHandlerType">2</property>
		<!--<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>-->
		<!--必须带有MYCATSEQ_或者 mycatseq_进入序列匹配流程 注意MYCATSEQ_有空格的情况-->
		<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
	<property name="subqueryRelationshipCheck">false</property> <!-- 子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false -->
      <!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
        <!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号-->
	<!-- <property name="processorBufferChunk">40960</property> -->
	<!-- 
	<property name="processors">1</property> 
	<property name="processorExecutor">32</property> 
	 -->
        <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
		<property name="processorBufferPoolType">0</property>
		<!--默认是65535 64K 用于sql解析时最大文本长度 -->
		<!--<property name="maxStringLiteralLength">65535</property>-->
		<!--<property name="sequnceHandlerType">0</property>-->
		<!--<property name="backSocketNoDelay">1</property>-->
		<!--<property name="frontSocketNoDelay">1</property>-->
		<!--<property name="processorExecutor">16</property>-->
		<!--
			<property name="serverPort">8066</property> <property name="managerPort">9066</property> 
			<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
			<property name="dataNodeIdleCheckPeriod">300000</property> 5 * 60 * 1000L; //连接空闲检查
			<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
		<!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->
		<property name="handleDistributedTransactions">0</property>
		
			<!--
			off heap for merge/order/group/limit      1开启   0关闭
		-->
		<property name="useOffHeapForMerge">0</property>

		<!--
			单位为m
		-->
        <property name="memoryPageSize">64k</property>

		<!--
			单位为k
		-->
		<property name="spillsFileBufferSize">1k</property>

		<property name="useStreamOutput">0</property>

		<!--
			单位为m
		-->
		<property name="systemReserveMemorySize">384m</property>


		<!--是否采用zookeeper协调切换  -->
		<property name="useZKSwitch">false</property>

		<!-- XA Recovery Log日志路径 -->
		<!--<property name="XARecoveryLogBaseDir">./</property>-->

		<!-- XA Recovery Log日志名称 -->
		<!--<property name="XARecoveryLogBaseName">tmlog</property>-->
		<!--如果为 true的话 严格遵守隔离级别,不会在仅仅只有select语句的时候在事务中切换连接-->
		<property name="strictTxIsolation">false</property>
		
		<property name="useZKSwitch">true</property>
		
	</system>
	
	<!-- 全局SQL防火墙设置 -->
	<!--白名单可以使用通配符%或着*-->
	<!--例如<host host="127.0.0.*" user="root"/>-->
	<!--例如<host host="127.0.*" user="root"/>-->
	<!--例如<host host="127.*" user="root"/>-->
	<!--例如<host host="1*7.*" user="root"/>-->
	<!--这些配置情况下对于127.0.0.1都能以root账户登录-->
	<!--
	<firewall>
	   <whitehost>
	      <host host="1*7.0.0.*" user="root"/>
	   </whitehost>
       <blacklist check="false">
       </blacklist>
	</firewall>
	-->


<!--
	<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>	
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
	</user>

	<user name="user">
		<property name="password">user</property>
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
	</user>
-->
	
	

	<!-- 配置日期: 2022-10-27;	david  -->
	<!-- 配置mycat账户;   用户名:admin  密码:123456	-->
	<!-- 登录mycat: mysql -h 10.10.10.12(mycat安装的主机地址) -P 8066(mycat服务端口)  -u admin -p211224ln -->
	<user name="admin">
		<property name="password">123456</property>
		<property name="schemas">MYCAT</property>
	</user>
	

</mycat:server>

 

 

  3、配置文件: rule.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
	- you may not use this file except in compliance with the License. - You 
	may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
	- - Unless required by applicable law or agreed to in writing, software - 
	distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
	License for the specific language governing permissions and - limitations 
	under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
	<tableRule name="rule1">
		<rule>
			<columns>id</columns>
			<algorithm>func1</algorithm>
		</rule>
	</tableRule>

	<tableRule name="rule2">
		<rule>
			<columns>user_id</columns>
			<algorithm>func1</algorithm>
		</rule>
	</tableRule>

	<tableRule name="sharding-by-intfile">
		<rule>
			<columns>sharding_id</columns>
			<algorithm>hash-int</algorithm>
		</rule>
	</tableRule>
	<tableRule name="auto-sharding-long">
		<rule>
			<columns>id</columns>
			<algorithm>rang-long</algorithm>
		</rule>
	</tableRule>
	<tableRule name="mod-long">
		<rule>
			<columns>id</columns>
			<algorithm>mod-long</algorithm>
		</rule>
	</tableRule>
	<tableRule name="sharding-by-murmur">
		<rule>
			<columns>id</columns>
			<algorithm>murmur</algorithm>
		</rule>
	</tableRule>
	<tableRule name="crc32slot">
		<rule>
			<columns>id</columns>
			<algorithm>crc32slot</algorithm>
		</rule>
	</tableRule>
	<tableRule name="sharding-by-month">
		<rule>
			<columns>create_time</columns>
			<algorithm>partbymonth</algorithm>
		</rule>
	</tableRule>
	<tableRule name="latest-month-calldate">
		<rule>
			<columns>calldate</columns>
			<algorithm>latestMonth</algorithm>
		</rule>
	</tableRule>
	
	<tableRule name="auto-sharding-rang-mod">
		<rule>
			<columns>id</columns>
			<algorithm>rang-mod</algorithm>
		</rule>
	</tableRule>
	
	<tableRule name="jch">
		<rule>
			<columns>id</columns>
			<algorithm>jump-consistent-hash</algorithm>
		</rule>
	</tableRule>

	<function name="murmur"
		class="io.mycat.route.function.PartitionByMurmurHash">
		<property name="seed">0</property><!-- 默认是0 -->
		<property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 -->
		<property name="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍 -->
		<!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 -->
		<!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 
			用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 -->
	</function>

	<function name="crc32slot"
			  class="io.mycat.route.function.PartitionByCRC32PreSlot">
	</function>
	<function name="hash-int"
		class="io.mycat.route.function.PartitionByFileMap">
		<property name="mapFile">partition-hash-int.txt</property>
	</function>
	<function name="rang-long"
		class="io.mycat.route.function.AutoPartitionByLong">
		<property name="mapFile">autopartition-long.txt</property>
	</function>
	<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
		<!-- how many data nodes -->
		<property name="count">3</property>
	</function>

	<function name="func1" class="io.mycat.route.function.PartitionByLong">
		<property name="partitionCount">8</property>
		<property name="partitionLength">128</property>
	</function>
	<function name="latestMonth"
		class="io.mycat.route.function.LatestMonthPartion">
		<property name="splitOneDay">24</property>
	</function>
	<function name="partbymonth"
		class="io.mycat.route.function.PartitionByMonth">
		<property name="dateFormat">yyyy-MM-dd</property>
		<property name="sBeginDate">2015-01-01</property>
	</function>
	
	<function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod">
        	<property name="mapFile">partition-range-mod.txt</property>
	</function>
	
	<function name="jump-consistent-hash" class="io.mycat.route.function.PartitionByJumpConsistentHash">
		<property name="totalBuckets">3</property>
	</function>
</mycat:rule>

 

 

  4、相关文件(autopartition-long.txt):    rule.xml  (auto-sharding-long) -- > autopartition-long.txt   

 

# range start-end ,data node index
# K=1000,M=10000.
# 0-500M=0
# 500M-1000M=1
# 1000M-1500M=2

1-100=0
101-200=1

 

 

 

 

四、图片实例

 

  1、mycat服务的安装和开启、登录mycat

 

 

  2、mycat操作数据库1:创建表

 

 

  3、mycat 数据库操作2:插入数据和查询

 

 

  4、mycat退出登录、关闭服务、卸载服务

 

 

posted on 2022-10-27 16:20  lnlidawei  阅读(351)  评论(0编辑  收藏  举报