17. Mycat分库

分库原则

  • 拆成两个库的数据表,一定不能有关联查询
  • 需要两个空的库,用Mycat做分库的操作
    image-20201118055445508

测试

  1. 修改配置文件

    schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
               <!--逻辑库    name名称,   checkSQLschema         sqlMaxLimit 末尾是否要加 limit xxx-->
            <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
                    <table name="customer" dataNode="dn2" ></table>
            </schema>
                <!--逻辑库    name名称,   dataHost 引用的哪个dataHost      database:对应mysql的database-->
            <dataNode name="dn1" dataHost="host1" database="order_indi" />
            <dataNode name="dn2" dataHost="host2" database="order_indi" />
            <!-- 主机信息 -->
            <dataHost name="host1" maxCon="1000" minCon="10" balance="0"
                              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
                    <!-- can have multi write hosts -->
                    <writeHost host="hostM1" url="192.168.2.229:3306" user="root"
                                       password="123456">
                    </writeHost>
            </dataHost>
            
            <!-- 从机信息 -->
            <dataHost name="host2" maxCon="1000" minCon="10" balance="0"
                              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
                    <!-- can have multi write hosts -->
                    <writeHost host="hostM2" url="192.168.2.190:3306" user="root"
                                       password="123456">
                    </writeHost>
            </dataHost>
    </mycat:schema>
    
  2. 在主机与从机上分别创建数据库‘

    create database order_indi
    
  3. 前台启动Mycat

    cd /usr/local/mycat/bin
    ./mycat console
    
  4. 进入Mycat环境开始建表

    #客户表  rows:20万 
    CREATE TABLE customer(
        id INT AUTO_INCREMENT,
        NAME VARCHAR(200),
        PRIMARY KEY(id)
    );
     
     
    #订单表   rows:600万
    CREATE TABLE orders(
        id INT AUTO_INCREMENT,
        order_type INT,
        customer_id INT,
        amount DECIMAL(10,2),
        PRIMARY KEY(id)  
    ); 
     
     
    #订单详细表     rows:600万
    CREATE TABLE orders_detail(
        id INT AUTO_INCREMENT,
        detail VARCHAR(2000),
        order_id INT,
        PRIMARY KEY(id)
    );
     
     
    #订单状态字典表   rows:20
    CREATE TABLE dict_order_type(
        id INT AUTO_INCREMENT,
        order_type VARCHAR(200),
        PRIMARY KEY(id)
    );
    
  5. 结果
    主机只有三张表
    image-20201118062815132
    从机有一张表
    image-20201118062717203
    Mycat中有四张表
    image-20201118063109785

使用Mycat分库时,最好使用命令行操作,SQL工具一般都有兼容问题,显示不全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值