Mycat跨数据库配置使用

需要的配置如下:

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

	<!-- 逻辑库的配置 -->
	<schema name="win_test" checkSQLschema="false" dataNode="dn_test">
		<table name="user" primaryKey="ID" dataNode="dn_test_01,dn_test_02,dn_test_03" rule="sharding-by-test">
    <!--  <childTable name="course" primaryKey="ID" joinKey="id"
        parentKey="id">
      </childTable> 
      -->
    </table>
	</schema>
	
	<!-- 数据节点配置 -->
  <dataNode name="dn_test" dataHost="dh_test" database="trc_test_db" />
  
  <!-- 可以配置主从库 -->
	<dataNode name="dn_test_01" dataHost="dh_test1" database="test_01" />
  <dataNode name="dn_test_02" dataHost="dh_test1" database="test_02" />
  <dataNode name="dn_test_03" dataHost="dh_test1" database="test_03" />
	
  <!-- 集群地址配置,可以在此添加需要加入mycat中的数据库安装的服务器地址 -->
  <dataHost name="dh_test" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native" switchType="-1"
    slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="host_test" url="127.0.0.1:3306" user="root"
      password="qq123456789">
    </writeHost>
  </dataHost>
  
  <!-- 主从可以配置读写分离 -->
  <dataHost name="dh_test1" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native" switchType="-1"
    slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="host_test1" url="127.0.0.1:3306" user="root"
      password="qq123456789">
    </writeHost>
  </dataHost>
  
</mycat:schema>

schema.xml配置

上面对从数据库进行了从库分片,所以需要对配置分片策略,对应于rule.xml文件

<tableRule name="sharding-by-test">
    <rule>
      <columns>id</columns>
      <algorithm>user</algorithm>
    </rule>
  </tableRule>
    <function name="test"
    class="org.opencloudb.route.function.PartitionByMurmurHash">
    <property name="seed">0</property><!-- 默认是0 -->
    <property name="count">10</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>

rule.xml配置

本配置只是简单配置了分片,可以根据自身的需求来采用更加灵活的分片策略

需要对mycat进行安全设置,需要对用户进行访问安全控制,修改文件是server.xml

  <property name="charset">utf8</property>
	<property name="defaultSqlParser">druidparser</property>
      <!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
	<!-- <property name="processorBufferChunk">40960</property> -->
	<!-- 
	<property name="processors">1</property> 
	<property name="processorExecutor">32</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="mutiNodeLimitType">1</property> 0:开启小数量级(默认) ;1:开启亿级数据排序
	    	<property name="mutiNodePatchSize">100</property> 亿级数量排序批量
			<property name="processors">32</property> <property name="processorExecutor">32</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="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
	</system>
	<user name="root">
		<property name="password">xxxxxx</property>
		<property name="schemas">win_test,win_test1</property>
	</user>

server.xml配置

一个用户名只能对应一个<user></user>,如果需要兼用一个用户访问多个逻辑库,可以用逗号隔开来控制。

如有同学有更深的理解或者想理解更多,欢迎交流 

发布了100 篇原创文章 · 获赞 300 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/win7system/article/details/77328217