前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mycat1.6.7.6对Mysql分表配置

Mycat1.6.7.6对Mysql分表配置

作者头像
itze
发布2022-10-31 16:17:39
4730
发布2022-10-31 16:17:39
举报
文章被收录于专栏:IT者

环境

  • 操作系统:CentOS 7
  • Mysql版本:Mysql8
  • Mycat版本:Mycat1.6.7.6

需求

需要对用户表分片操作,要求分成3个分片

用户表结构

配置

涉及需要修改的配置文件,schema.xml、rule.xml

先看一下配置,下面解释

最简单的同一台机器,同一个数据库,分表配置示例

schema.xml配置文件

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1">
        <!-- 配置需要分片的表 -->
        <table name="t_user" dataNode="dn1" subTables="t_user$1-3" rule="mod_rule"></table>
    </schema>

    <dataNode name="dn1" dataHost="localhost1" database="db1" />

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="jdbc:mysql://127.0.0.1:3306" user="root"
                   password="123456">
        </writeHost>
    </dataHost>

</mycat:schema>

rule.xml配置文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
    - you may not use this file except in compliance with the License. - You 
    may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
    - - Unless required by applicable law or agreed to in writing, software - 
    distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
    License for the specific language governing permissions and - limitations 
    under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">

    <tableRule name="mod_rule"> <!-- 分片规则名称,可随意填写,与schema.xml中rule="mod_rule"对应即可 -->
        <rule>
            <columns>user_id</columns> <!-- 对应真实数据表字段,一般是该表ID主键 -->
            <algorithm>mod-long</algorithm> <!-- 使用哪个分片算法,要与下面函数名称对应 -->
        </rule>
    </tableRule>

    <!-- 以下是官方提供的分片所涉及算法函数 -->
    <!-- 暂时就是使用mod-long这一个函数 -->
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">3</property>
    </function>

</mycat:rule>

配置解释

  1. schema.xml中部分标签 table

– name:如果进行分表操作了,该值为逻辑表表名,不需要存在对应的真实表

– dataNode:节点名称

– subTables:作用可以理解为包含哪些分片,对应的为真实表表名,例如本文章配置中subTables=”t_user$1-3″,也可以单独写,中间用英文逗号隔开,则需要在真实dn1节点对应的localhost1这台机器的db1数据库下创建t_user1、t_user2、t_user3三张表,表结构保持一致

本文示例:

– rule:分片规则,值对应rule.xml中tableRule标签name值

dataNode

– name:节点名称,可随意填写

– dataHost:对应dataHost标签中name值,保持一致即可

– database:对应dataHost中name值对应的dataHost那台机器中真实存在的数据库名称,比如像本文,需要提前创建好数据库库名为db1的数据库

  1. rule.xml中部分标签 tableRule – name:分片规则名称 – columns:分片字段,该字段一般为表中的主键 – algorithm:使用那种分片算法对应的函数名 – function中需要注意一点,这里只说取模分片规则的,name=”count”对应的数值,需要和分片数量一直,比如本文subTables对应三个分片,这里的数值就要是3 其他标签解释参考:Mycat1.6.7.6安装与启动 中的标签解释

关于操作

开发者只需要通过操作Mycat服务去操作数据,不需要关心数据在哪个服务器哪个库中,比如你的后端你是Java,只需要将配置数据库的地方改为mycat的服务即可,CRUD和正常操作Mysql一样即可

比如

代码语言:javascript
复制
jdbc:mysql://127.0.0.1:8066/TESTDB...后面省略
  • 8066:Mycat服务默认端口
  • TESTDB:Mycat配置文件server.xml中配置的逻辑库名

操作的时候只需操作表名:t_user即可,比如查询

代码语言:javascript
复制
select * from t_user;

注意事项

如果使用Mycat1.x版本进行分库操作,需要注意跨库目前不支持JOIN操作,分表不分库Mycat1.6.7.6亲测默认支持JOIN操作,无须配置ER表关系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 需求
  • 配置
    • 最简单的同一台机器,同一个数据库,分表配置示例
      • 配置解释
        • 关于操作
          • 注意事项
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档