美文网首页
Mycat分库--按自然月

Mycat分库--按自然月

作者: sknfie | 来源:发表于2020-12-23 09:13 被阅读0次

概述

单库多表的分片策略已经完成,那么怎么才能把多库单表和单库多表结合起来呢?

项目环境

192.168.201.34  mycat
192.168.201.33  node1
192.168.201.35  node2

一、创建测试库

node1

create database testdb01;
create database testdb02;
create database testdb03;
create database testdb04;
create database testdb05;
create database testdb06;
create database testdb07;
create database testdb08;
create database testdb09;
create database testdb10;
create database testdb11;
create database testdb12;

node2

create database testdb13;
create database testdb14;
create database testdb15;
create database testdb16;
create database testdb17;
create database testdb18;
create database testdb19;
create database testdb20;
create database testdb21;
create database testdb22;
create database testdb23;
create database testdb24;

二、配置schema.xml

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
    <table name="test" dataNode="dn$1-24" rule="sharding-by-month-adddate"></table>
</schema>

        <dataNode name="dn1" dataHost="node1" database="testdb01" />
        <dataNode name="dn2" dataHost="node1" database="testdb02" />
        <dataNode name="dn3" dataHost="node1" database="testdb03" />
        <dataNode name="dn4" dataHost="node1" database="testdb04" />
        <dataNode name="dn5" dataHost="node1" database="testdb05" />
        <dataNode name="dn6" dataHost="node1" database="testdb06" />
        <dataNode name="dn7" dataHost="node1" database="testdb07" />
        <dataNode name="dn8" dataHost="node1" database="testdb08" />
        <dataNode name="dn9" dataHost="node1" database="testdb09" />
        <dataNode name="dn10" dataHost="node1" database="testdb10" />
        <dataNode name="dn11" dataHost="node1" database="testdb11" />
        <dataNode name="dn12" dataHost="node1" database="testdb12" />
        <dataNode name="dn13" dataHost="node2" database="testdb13" />
        <dataNode name="dn14" dataHost="node2" database="testdb14" />
        <dataNode name="dn15" dataHost="node2" database="testdb15" />
        <dataNode name="dn16" dataHost="node2" database="testdb16" />
        <dataNode name="dn17" dataHost="node2" database="testdb17" />
        <dataNode name="dn18" dataHost="node2" database="testdb18" />
        <dataNode name="dn19" dataHost="node2" database="testdb19" />
        <dataNode name="dn20" dataHost="node2" database="testdb20" />
        <dataNode name="dn21" dataHost="node2" database="testdb21" />
        <dataNode name="dn22" dataHost="node2" database="testdb22" />
        <dataNode name="dn23" dataHost="node2" database="testdb23" />
        <dataNode name="dn24" dataHost="node2" database="testdb24" />

<!-- 物理机的 url -->
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <writeHost host="server1" url="192.168.201.33:3306" user="root" password="123456"/>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <writeHost host="server2" url="192.168.201.35:3306" user="root" password="123456"/>
</dataHost>
</mycat:schema>

三、配置rule.xml

<tableRule name="sharding-by-month-adddate">
                <rule>
                        <columns>adddate</columns>
                        <algorithm>partbymonth</algorithm>
               </rule>
</tableRule>
<function name="partbymonth" class="io.mycat.route.function.PartitionByMonth">
                <property name="dateFormat">yyyy-MM-dd</property> <!-- 日期格式-->
                <property name="sBeginDate">2019-01-01</property> <!-- 开始日期-->
</function>

四、启动mycat

/usr/local/mycat/bin/mycat start

五、登录MySQL查看逻辑表

mysql -uroot -pmysql -P8066 -h192.168.8.30

mysql> create table test(
    -> id int not null auto_increment,
    -> name varchar(64),
    -> adddate datetime,
    -> primary key(id)
    -> );

六、插入测试数据

insert into test(id,name,adddate) values(1,'steven','2019-05-09 12:32:12');
insert into test(id,name,adddate) values(2,'steven','2019-09-09 12:32:12');
insert into test(id,name,adddate) values(3,'steven','2019-12-09 12:32:12');
insert into test(id,name,adddate) values(4,'steven','2020-5-09 12:32:12');
insert into test(id,name,adddate) values(5,'steven','2020-06-09 12:32:12');
insert into test(id,name,adddate) values(6,'steven','2020-07-09 12:32:12');

七、验证数据

1.node1

mysql> select * from testdb01.test;
Empty set (0.00 sec)
mysql> select * from testdb02.test;
Empty set (0.00 sec)
mysql> select * from testdb03.test;
Empty set (0.00 sec)
mysql> select * from testdb04.test;
Empty set (0.01 sec)
mysql> select * from testdb05.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  1 | steven | 2019-05-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.00 sec)
mysql> select * from testdb06.test;
Empty set (0.01 sec)
mysql> select * from testdb07.test;
Empty set (0.01 sec)
mysql> select * from testdb08.test;
Empty set (0.01 sec)
mysql> select * from testdb09.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  2 | steven | 2016-09-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.00 sec)
mysql> select * from testdb10.test;
Empty set (0.00 sec)
mysql> select * from testdb11.test;
Empty set (0.00 sec)
mysql> select * from testdb12.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  3 | steven | 2019-12-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.00 sec)
  • node2
mysql> select * from testdb13.test;
Empty set (0.00 sec)
mysql> select * from testdb14.test;
Empty set (0.00 sec)
mysql> select * from testdb15.test;
Empty set (0.00 sec)
mysql> select * from testdb16.test;
Empty set (0.00 sec)
mysql> select * from testdb17.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  4 | steven | 2020-05-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.00 sec)
mysql> select * from testdb18.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  5 | steven | 2020-06-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.01 sec)
mysql> select * from testdb19.test;
+----+--------+---------------------+
| id | name   | adddate             |
+----+--------+---------------------+
|  6 | steven | 2020-07-09 12:32:12 |
+----+--------+---------------------+
1 row in set (0.00 sec)
mysql> select * from testdb20.test;
Empty set (0.01 sec)
mysql> select * from testdb21.test;
Empty set (0.00 sec)
mysql> select * from testdb22.test;
Empty set (0.00 sec)
mysql> select * from testdb23.test;
Empty set (0.00 sec)
mysql> select * from testdb24.test;
Empty set (0.01 sec)

相关文章

网友评论

      本文标题:Mycat分库--按自然月

      本文链接:https://www.haomeiwen.com/subject/jgwzgktx.html