旧项目mycat分片改造初体验

本文详细介绍了在停车场项目中使用Mycat进行数据库分片的配置与实践过程,包括分片规则设置、数据节点分配及连接测试,为解决大规模数据存储与查询效率问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目背景

旧项目为停车场项目,停车记录数据持续增长,所以这里以停车记录(parking_record)分片为例。

分片配置

<mycat:schema xmlns:mycat="http://io.mycat/">

	<!--未配置分片的表走dn0,配置了分片的表走分片dataNode-->
    <schema name="parkingDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn0">
        <!-- 按车场id取模分片-->
        <table name="parking_record" primaryKey="parking_lot_id" dataNode="dn1,dn2,dn3" rule="mod-long"/>
    </schema>

    <dataNode name="dn0" dataHost="localhost1" database="parking-dev-db0"/>
    <dataNode name="dn1" dataHost="localhost1" database="parking-dev-db1"/>
    <dataNode name="dn2" dataHost="localhost1" database="parking-dev-db2"/>
    <dataNode name="dn3" dataHost="localhost1" database="parking-dev-db3"/>

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <heartbeat>select 1</heartbeat>
        <writeHost host="hostS1" url="127.0.0.1:3306" user="root" password="123456"/>
    </dataHost>
</mycat:schema>

说明:

1、配置了一个mycat逻辑库:parkingDB
2、配置了4个数据节点:dn0,dn1,dn2,dn3
3、其中dn0作为默认节点,未分片的表走该节点查询数据
4、配置分片的表走配置的数据节点查询数据

db0主数据节点

1、主节点包含工程里的所有表信息(可以不包含分片表)

image

db1,db2,db3分片数据节点

1、mycat连接中执行分片表的创建语句会自动在对应的分片数据节点上创建表,无需单个单个创建
2、可以看到分片数据节点目前只有parking_record一张表

image

连接mycat测试

// mysql怎么连mycat就怎么连,只不过端口改成mycat连接端口(例如8066)
mysql -uroot -p -P8066 -h127.0.0.1

ps:heidisql工具看不到表数据请忽略(但是执行sql语句都能查询到信息)

image

测试查询主节点数据
select * from sys_user;
执行成功
测试分片表查询
select * from parking_record;
执行成功

程序数据源配置

切换非常简单,只需要将原来的mysql连接信息替换为mycat的ip端口账户等信息即可

image

配置完毕,项目重启,基本不会有什么问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值