分库原则
- 拆成两个库的数据表,一定不能有关联查询
- 需要两个空的库,用Mycat做分库的操作
测试
-
修改配置文件
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>
-
在主机与从机上分别创建数据库‘
create database order_indi
-
前台启动Mycat
cd /usr/local/mycat/bin ./mycat console
-
进入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) );
-
结果
主机只有三张表
从机有一张表
Mycat中有四张表
使用Mycat分库时,最好使用命令行操作,SQL工具一般都有兼容问题,显示不全。