Donnie

不积跬步无以至千里

mycat demo

这里数据库使用mysql5.7 ,mycat目前好像还没对mysql8做较好的兼容,所以使用5.7版本

创建3个数据库

    create database user01
    create database user02
    create database user03

数据库分别添加user表


    CREATE TABLE `user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `name` varchar(50) DEFAULT NULL COMMENT '名称',
      `email` varchar(50) DEFAULT NULL COMMENT '用户邮箱',
      `sex` varchar(10) DEFAULT NULL COMMENT '性别',
      `age` int(3) DEFAULT NULL COMMENT '年龄',
      `status` tinyint(4) DEFAULT NULL COMMENT '状态(0:开启 1:禁用)',
      `description` varchar(100) DEFAULT NULL COMMENT '描述',
      `mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='会员表';

配置mycat

至于mycat的下载安装请移步到http://www.mycat.io/ 这里使用mycat1.6
启动mycat前这里只修改server.xml 和 schema.xml

server.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://org.opencloudb/">
        <system>
            <property name="useSqlStat">0</property>
            <property name="useGlobleTableCheck">0</property>
            <property name="sequnceHandlerType">2</property>
            <property name="handleDistributedTransactions">0</property>
            <property name="useOffHeapForMerge">1</property>
            <property name="memoryPageSize">1m</property>
            <property name="spillsFileBufferSize">1k</property>
            <property name="useStreamOutput">0</property>
            <property name="systemReserveMemorySize">384m</property>
            <property name="useZKSwitch">true</property>
        </system>
    
        <!-- 用户名:okhjp-->
        <user name="okhjp">
            <!--mycat登陆密码-->
            <property name="password">123456</property>
            <!-- 定义schema 也可以说是数据库 -->
            <property name="schemas">user_db</property>
        </user>
    
    </mycat:server>

schema.xml


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

    <!--user_db 对应server.xml 的 schemas -->
    <schema name="user_db" checkSQLschema="true" sqlMaxLimit="100">
        <!-- 3个节点合成一个表 -->
        <table name="user" dataNode="dn1,dn2,dn3" />
    </schema>

    <dataNode name="dn1" dataHost="host_17" database="user01" />
    <dataNode name="dn2" dataHost="host_17" database="user02" />
    <dataNode name="dn3" dataHost="host_17" database="user03" />

    <dataHost name="host_17" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- 设置连接mysql数据库 -->
        <writeHost
                   host="hostS1"
                   url="192.168.1.17:3306" 
                   user="root"
                   password="123456"
        />
    </dataHost>

</mycat:schema>

启动mycat

./mycat restart

连接mycat

点击连接测试,可以测试一下是否连接成功

成功后出现一个user表

使用mycat

1.查看节点

 EXPLAIN select * from user

可以看到3个节点,分别是dn1,dn2,dn3

2.往user02插入数据

    /*!mycat:datanode=dn2*/ INSERT INTO `user`(name,email,sex,age,status,description,mobile)
    values("黄一","test@163.com","男","18",1,"demo","13316990000")

注意如果不加mycat注释,会全部节点插入数据

3.查询dn2节点的数据
/!mycat:datanode=dn2/select * from user

注意如果不加mycat注释,会查全部节点的数据

赞赏支持