• 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......  

  • 相关阅读:
    WEB网站类型系统中使用的OFFICE控件
    【架构】原型设计工具一览
    【云计算】mesos+marathon 服务发现、负载均衡、监控告警方案
    【自动部署该怎么做?】
    【OpenStack 虚拟机初始化user-data & Cloud-init】
    【数据可视化 参考资料】
    【RabbitMQ 参考资料】
    【CloudFoundry】架构、设计参考
    【OpenStack项目管理-CPU/内存/存储/网络 配额管理】
    【前端自动化构建 grunt、gulp、webpack】
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/14210254.html
Copyright © 2020-2023  润新知