mycat配置有哪些?mycat安装配置使用

关于mycat,小伙伴们知道mycat该如何配置与使用吗?下面就听小编来讲解一下吧

一、从官网下载解压mycat

二、查看mycat目录结构

[root@aliyun-ecs mycat]# ll
total 24
drwxr-xr-x 2 root root 4096 Apr 18 10:28 bin
drwxrwxrwx 2 root root 4096 Oct 22 21:26 catlet
drwxrwxrwx 4 root root 4096 Feb 9 22:21 conf
drwxr-xr-x 2 root root 4096 Apr 18 10:28 lib
drwxrwxrwx 2 root root 4096 Jan 16 23:04 logs
-rwxrwxrwx 1 root root 227 Feb 9 22:22 version.txt

以上mycat就搭建完成了

PS:mycat是用java语言开发的,所以安装mycat是需要有jdk环境的。

三、配置mycat

1)、 修改wrapper.conf

[root@aliyun-ecs mycat]# vim conf/wrapper.conf

非正式环境修改下面两个参数为256M,否则会出现内存不足

修改前:

wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G

修改后:

wrapper.java.additional.10=-Xmx256M
wrapper.java.additional.11=-Xms256M

2)、配置server.xml

[root@aliyun-ecs mycat]# vim conf/server.xml

添加一个mycat用户:scwyfy

并设置对应的逻辑库:admin_db,order_db,product_db

<user name="scwyfy">
  <property name="password">123456</property>
  <property name="schemas">admin_db,order_db,product_db</property>
  <property name="readOnly">true</property>
 </user>

3)、配置schema.xml

配置schema->table->dataNode->dataHost->writeHost->readHost

[root @aliyun - ecs mycat]# vim conf / schema.xml
 <!--name:给新增的mycat用户配置对应的逻辑库-->
 <schema name="admin_db" checkSQLschema="false" sqlMaxLimit="100">
  <!-- auto sharding by id (long):约定范围 0-1k = 0  1k-10k = 1  10k-100k=2 --> 
       <!-- name: 数据表名称-->
       <!-- dataNode: 数据表存放的实际节点(真实服务器+数据库)-->
      <table name="travelrecord" dataNode="dn1,dn2,dn3"  rule="auto-sharding-long" />
  <!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node -->
  <table name="company" primaryKey="ID"  type="global"  dataNode="dn1,dn2,dn3" />
  <!-- random sharding using mod sharind rule -->
  <table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" />
       
        <!--配置有联表关系的表数据存放在同一个分片上-->
       <table name="customer" primaryKey="ID" dataNode="dn1,dn2"  rule="sharding-by-intfile">
     <!--将orders表的customer_id与customer表的id关联起来,这样在orders表插入时,会首先判断customer_id在哪个分片上,然后将数据插入该分片
      这样便实现了将关联数据存放在一个分片的目的-->
    <childTable name="orders" primaryKey="ID" joinKey="customer_id"  parentKey="id">
      <childTable name="order_items" joinKey="order_id"  parentKey="id" />
    </childTable>
    <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id" parentKey="id" />
  </table>
 </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>
  <!-- can have multi write hosts :配置写库-->
  <writeHost host="hostM1" url="localhost:3306" user="root"  password="123456">
    <!-- can have multi read hosts :配置从库-->
    <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
  </writeHost>
</dataHost>

以上就是关于如何配置与使用mycat的所有内容,想了解更多java项目中常见问题及答案,快关注本网站了解详情吧。

推荐阅读:

mycat读写分离怎么实现?

mycat原理,mycat分库分表的原理是什么?

mycat是什么意思?是啥意思?特性介绍