mycat完成分库分表【水平】

本文介绍了如何利用mycat完成MySQL的分库分表操作及读写分离。首先,完成了mycat的安装,接着修改了配置文件server.xml、schema.xml和rule.xml。启动mycat并确认其运行状态。接着在主节点创建数据库和表,并通过mycat插入数据,验证了数据的正确分发和读写分离效果。

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

1、前提

需要完成mycat的安装:https://mp.weixin.qq.com/s/7d05OmBLcK34DXjL2lm4uA

 

2、修改配置文件

查看文件内容:mycat\conf\server.xml

    <user name="root" defaultAccount="true">        <property name="password">123456</property>        <property name="schemas">TESTDB</property>                <!-- 表级 DML 权限设置 -->        <!--                <privileges check="false">            <schema name="TESTDB" dml="0110" >                <table name="tb01" dml="0000"></table>                <table name="tb02" dml="1111"></table>            </schema>        </privileges>                -->    </user>     <user name="user">        <property name="password">user</property>        <property name="schemas">TESTDB</property>        <property name="readOnly">true</property>    </user>

即有两个账号,一个是root/123456,另外一个是user/user,对应的数据库实例就是TESTDB,而这个TESTDB就是真正的mysql实例映射而成的。

我将名字改为了cool,所以现在看到的是cool的名字

继续修改mycat\conf\schema.xml

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/">  <schema name="cool" checkSQLschema="true" sqlMaxLimit="100">    <table name="t1" primaryKey="id" dataNode="dn1,dn2" rule="rule1" />   </schema>    <dataNode name="dn1" dataHost="db1" database="db01" />    <dataNode name="dn2" dataHost="db1" database="db02" />  <dataHost name="db1" maxCon="1000" minCon="10" balance="0"        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">    <heartbeat>select user()</heartbeat>    <writeHost host="127.16.10.51" url="172.16.10.51:3306" user="root"      password="root">      <readHost host="172.16.10.52" url="172.16.10.52:3306" user="root" password="root" />    </writeHost>  </dataHost>   </mycat:schema>

修改mycat\conf\rule.xml

  <tableRule name="rule1">    <rule>      <columns>id</columns>      <algorithm>mod-long</algorithm>    </rule>  </tableRule>    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">    <!-- how many data nodes -->    <property name="count">2</property>  </function>

启动mycat​:

./mycat restart

查看启动状态​:

ps -ef |grep mycat

 

启动成功​!

然后开始在自己的主节点创建数据库和表​:

create database db01;use db01;create table t1(id int,name varchar(20));create database db02;use db02;create table t1(id int,name varchar(20));

然后登录mycat数据库​:

登录后看到表结构​:

然后我们通过mycat插入几条数据​:

insert into t1(id,name) values(1,'ali');insert into t1(id,name) values(2,'elvis');insert into t1(id,name) values(2,'JackRen');insert into t1(id,name) values(3,'nihao');

mycat中数据​:

然后我们登录主节点数据库​查看数据:

然后去从数据库查看​:

和主数据库是一样的,可见我们mycat实现的分库分表+读写分离已经实现!

​若有疑问可留言公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值