zoukankan      html  css  js  c++  java
  • Mycat(垂直拆分——分库)

    如何划分表

    问题:在两台主机上的两个数据库中的表,能否关联查询?

    不可以关联查询

    分库的原则:有紧密关联关系的表应该在一个库里面,相互没有关联关系的表可以分到不同的库里面

    #客户表 
    CREATE TABLE customer(
       id INT AUTO_INCREMENT,
       NAME VARCHAR(200),
       PRIMARY KEY(id)
    );
    
    #订单表
    CREATE TABLE orders(
            id INT AUTO_INCREMENT,
            order_type INT,
            customer_id INT,
            amount DECIMAL(10,2),
            PRIMARY KEY(id)
    );
    
    #订单详情表
    CREATE TABLE orders_detail(
         id INT AUTO_INCREMENT,
         detail VARCHAR(200),
         order_id INT,
         PRIMARY KEY(id)
    );
    
    #订单状态字典表
    CREATE TABLE dict_order_type(
         id INT AUTO_INCREMENT,
         order_type VARCHAR(200),
         PRIMARY KEY(id)
    );

    已上四个表如何拆分?客户表分在一个数据库,其他三张表都需要关联查询,分在一个别的数据库。

    配置分库

    1.修改schena配置文件

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
            <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
                <table name="customer" dataNode="dn2"></table> //默认是dn1这里是将customer分到dn2上
            </schema>
            <dataNode name="dn1" dataHost="localhost1" database="orders" />
            <dataNode name="dn2" dataHost="localhost2" database="orders" />
            <dataHost name="localhost1" 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="172.17.0.2:3306" user="root" password="123">
    
                    </writeHost>
            </dataHost>
             <dataHost name="localhost2" 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="172.17.0.3:3306" user="root" password="123">
    
                    </writeHost>
            </dataHost>
    
    </mycat:schema>

    2.新增两个空白库

    分库操作不是在原来的老数据库上进行操作,需要准备两个数据库。

    #在数据节点db1,db2上都创建数据库orders
    CREATE DATABASE orders;

    进入mysql访问mycat(也可以通过可视化工具连接)

    mysql -uroot -pdigdeep -h 容器ip -P8066

    切换到TESTDB

    创建四张表

    查看表信息,可以看到成功分库。

    mycat:

     dn1:

     dn2:

    over......  

  • 相关阅读:
    17963 完美数
    17086 字典序的全排列
    17082 两个有序数序列中找第k小(优先做)
    11087 统计逆序对(优先做)
    8594 有重复元素的排列问题(优先做)
    11076 浮点数的分数表达(优先做)
    9715 相邻最大矩形面积
    剑指offer----替换空格
    [IIS][ASP.NET]“拒绝访问临时目录”的解决方法
    windows 2003端口80system进程占用的情况
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/14210254.html
Copyright © 2011-2022 走看看