Mycat运维

Mycat

参考文章:
https://zhuanlan.zhihu.com/p/72476293
基本操作

bin/mycat start
bin/mycat stop
bin/mycat restart
bin/mycat status

记得开启8066(数据端口,建议使用),9066(管理端口)的端口防火墙
登陆mycat

mysql -h10.106.11.151 -uroot -p123456 -P8066
  1. 读写分离配置(通过mysql的日志进行了验证,注意balance参数使用读写策略)
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM1" url="10.106.11.153:3306" user="root" password="123456">
        <readHost host="hostS1" url="10.106.11.152:3306" user="root" password="123456"></readHost>
    </writeHost>
    <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
  1. 同一个数据库分表配置(注意要创建 hello1,hello2,hello3数据库表)
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
    <!-- auto sharding by id (long) -->
    <!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置-->
    <!-- <table name="hello" primaryKey="id" dataNode="dn1,dn2" rule="crc32slot" splitTableNames ="true"/> -->
    <table name="hello" primaryKey="id" dataNode="dn1" subTables="hello$1-3" rule="mod-long"/>
</schema>
  1. 不同库分表配置(要先创建BIG,SMALL数据库表)
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
    <!-- auto sharding by id (long) -->
    <!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置-->
    <table name="test" primaryKey="id" dataNode="dn1,dn2" rule="mod-long" splitTableNames ="true"/>
    <!-- <table name="hello" primaryKey="id" dataNode="dn1" subTables="hello$1-3" rule="mod-long"/> -->
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
    /> -->
<dataNode name="dn1" dataHost="localhost1" database="BIG" />
<dataNode name="dn2" dataHost="localhost1" database="SMALL" />

Mysql自带分区表的创建

-- 创建分区表
CREATE TABLE `sales` (
    `id` INT (11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR (40) NOT NULL,
    `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`,`created_time`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 PARTITION BY RANGE (YEAR(created_time))(
    PARTITION p0 VALUES LESS THAN (2020),
    PARTITION p1 VALUES LESS THAN (2021),
  PARTITION p2 VALUES LESS THAN MAXVALUE);

-- 查询指定某个分区的数据
SELECT * FROM sales PARTITION (p0);

-- 观察优化器是否执行了分区过滤
EXPLAIN PARTITIONS SELECT * FROM sales;

-- 观察优化器是否执行了分区过滤
EXPLAIN PARTITIONS SELECT * FROM sales WHERE created_time>'2020-04-24 07:30:17';
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 欢迎关注公众号“Tim在路上” 1.听说你对JVM有点研究,讲一讲JVM的内存模型吧(我说虚拟机栈,本地方法栈,程...
    Tim在路上阅读 3,615评论 4 91
  • 业界公认MySQL单表容量在1千万或者或100G以下是最佳状态,一般mysql单机差不多1000QPS,因为这时它...
    Lolipiza阅读 3,950评论 0 0
  • MySQL属于关系型数据库。顾名思义,关系型数据库就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所...
    _code_x阅读 961评论 0 7
  • 特别说明: 本人平时混迹于 B 站,不咋回复这里的评论,有问题可以到 B 站视频评论区留言找我视频地址: http...
    撸帝阅读 1,710评论 2 35
  • 摘自 https://zhuanlan.zhihu.com/p/50650224[https://zhuanlan...
    圆方的鱼阅读 176评论 0 0