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

  • 相关阅读:
    博客备份小工具3
    博客转发小工具1
    04-属性选择器
    05-伪类选择器
    03-高级选择器
    02-css的选择器
    01-css的引入方式
    函数进阶-(命名空间、作用域、函数嵌套、作用域链、函数名本质、闭包)
    函数基础-(引子、定义函数、调用函数、函数返回值、函数参数)
    Python之路【第08章】:Python函数
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/14210254.html
Copyright © 2011-2022 走看看