mycat主从分离,分库分表

本文详细介绍了Mycat数据库中间件的配置过程,包括主从分离、读写分离及分库分表的策略。通过配置server.xml、schema.xml和rule.xml三个核心文件,实现Mycat的高效数据管理和负载均衡。

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

一、mycat的主从分离
概述:Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库Mycat没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。

通过配置以下三个文件,设定mycat配置:

文件 说明
server.xml Mycat的配置文件,设置账号、参数等
schema.xml Mycat对应的物理数据库和数据库表的配置
rule.xml Mycat分片(分库分表)规则

1.配置server.xml
表示外界连接mycat的信息。连接的默认端口时8066,以下连接的信息时用户名:root,密码:l2532390K, 端口8066

l2532390K TESTDB

2、配置schema.xml
配置实际数据库,这里只做读写的分库,但是要配合数据库自带的主从数据库写功能。读写分离原理:通过将写数据请求负载到不同的主数据库,不同主数据库之间要做主从复制功能,从数据库和主数据库也要做主从功能。通过将数据写入主数据库,后利用数据库自带主从读写功能,将数据写入不同的主数据库和从数据库,保证所有主数据库之间和所有分数据库数据一致。读数据是,通过将每次的请求均衡负载到分数据库进行读取数据。

这里也可以设置一个写数据库作为主数据库,多个读数据库做为从数据库,比较请求数据量远远大于写的数据量。

<?xml version="1.0"?>

<mycat:schema xmlns:mycat=“http://io.mycat/”>

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">     
</schema>
<dataNode name="dn1" dataHost="jtc" database="jtcone" />
<dataHost name="jtc" maxCon="1000" minCon="10" balance="0"
          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100" maxRetryCount="4">
    <heartbeat>select user()</heartbeat>      
    <writeHost host="jtcone" url="rm-wz93hgv0kswo.mysql.rds.aliyuncs.com:3306" user="jtcuser"
               password="i63630390d">
        <readHost host="jtcone" url="126.79.20.214:3306" user="jtcuser" password="k63630390d" />

       <readHost host="jtcone" url="126.79.20.215:3306" user="jtcuser" password="k63630390d" />

        <readHost host="jtcone" url="126.79.20.216:3306" user="jtcuser" password="k63630390d" />
    </writeHost>

<writeHost host="jtcone" url="rm-wz93gv0kswo.mysql.rds.aliyuncs.com:3306" user="jtcuser"
               password="i63630390d">
        <readHost host="jtcone" url="126.79.20.214:3306" user="jtcuser" password="k63630390d" />

       <readHost host="jtcone" url="126.79.20.215:3306" user="jtcuser" password="k63630390d" />

        <readHost host="jtcone" url="126.79.20.216:3306" user="jtcuser" password="k63630390d" />
    </writeHost>

</dataHost>

</mycat:schema>

host="jtcone"表示需要关联的数据库名称,name=“TESTDB” 中TESTDB需要与server.xml中设置数据库名称相同。

3、配置rule.xml
分片的规则,主要关注rule属性,rule属性的内容来源于rule.xml这个文件,Mycat支持10种分表分库的规则,基本能满足你所需要的要求,这个必须赞一个,其他数据库中间件好像都没有这么多。目前未做分片,暂时未用到。

二、mycat的分库分表
分库:上面样例中已经做了数据的读写分库

分表:由于数据库之间读写信息具有一定延时,所有原则上不建议分表,容易造成数据丢失。

三、调试:
1、源码调试,在官网下载源码后,引进eclipse后,找到MycatStartup.java文件,左键-》Run As -》Java Application运行即可。

2、源码调试好后,将rule.xml,server.xml,schame.xml存放到官方编译好的mycat工具包中,部署工具包即可。

四、java工程中数据库登录
应用工程中连接mycat中间级与直接连接mysql是一样的,如下:

jdbc:mysql://127.0.0.1:8066/TESTDB?useUnicode=true&characterEncoding=utf-8

userName=root
password=l2532390K

原文:https://blog.youkuaiyun.com/kunzai6/article/details/80930333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值