mycat实现分库分表

1. 垂直拆分——分库

一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:

系统被切分成了,用户,订单交易,支付几个模块。

1.1. 如何划分

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

答案:不可以关联查询。

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

#客户表 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)

);

以上四个表如何分库?客户表分在一个数据库,另外三张都需要关联查询,分在另外一个数据库。

1.2. 实现分库

1.2.1. 停止mycat**,****停止主从,**修改schema配置文件

<?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>
</schema>
        <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
                /> -->
        <dataNode name="dn1" dataHost="host1" database="order" />
  <dataNode name="dn2" dataHost="host2" database="order" />

<dataHost name="host1" maxCon="1000" minCon="10" ba
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值