Mycat水平分表
一、 水平分表
1、選擇水平分表
- 訂單表orders表已經有600萬資料超過MySQL單表資料瓶頸,需要進行水平分表
- 鑑於訂單表特性,無論是按照id、時間進行分表均不合適,應該保證每個人的訂單在同一張表裡。所以應該按照客戶id(customer_id)進行分表,具體做法:按照客戶id取模平均分配到兩張表裡。
Java培訓Mycat水平分表
2、配置檔案修改
- 修改配置檔案schema.xml
<?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>
<table name=”orders” dataNode=”dn1,dn2″ rule=”mod_rule” ></table>
</schema>
<dataNode name=”dn1″ dataHost=”host1″ database=”atguigu_mc” />
<dataNode name=”dn2″ dataHost=”host2″ database=”atguigu_sm” />
<dataHost name=”host1″ maxCon=”1000″ minCon=”10″ balance=”2″
writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″ slaveThreshold=”100″>
<heartbeat>select user()</heartbeat>
<writeHost host=”hostm1″ url=”192.168.67.1:3306″ user=”root”
password=”123123″>
</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>
<writeHost host=”hostm2″ url=”192.168.67.1:3306″ user=”root”
password=”123123″>
</writeHost>
</dataHost>
- 修改配置檔案rule.xml
<tableRule name=”mod_rule”>
<rule>
<columns>customer_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
……
<function name=”mod-long” class=”io.mycat.route.function.PartitionByMod”>
<!– how many data nodes –>
<property name=”count”>2</property>
</function>
Java培訓Mycat水平分表
3、重啟Mycat
先在另一個庫裡建立訂單表,之後重啟Mycat,讓新配置生效
Java培訓Mycat水平分表
4、 驗證
- 連線Mycat向訂單表插入資料
注:表名後必須加上相關欄位,告知Mycat,哪個欄位是customer_id
INSERT INTO orders(id,order_type,customer_id,amount) values(1,101,100,100100);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(2,101,100,100300);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(3,101,101,120000);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(4,101,101,103000);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(5,102,101,100400);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(6,102,100,100020);
- 執行成功後,分別去兩個資料庫檢視,兩個客戶的訂單已分到兩個表裡。
相關文章
- MySQL運維7-Mycat水平分表MySql運維
- Docker安裝Mycat和Mysql進行水平分庫分表實戰【圖文教學】DockerMySql
- 徹底搞清分庫分表(垂直分庫,垂直分表,水平分庫,水平分表)
- 徹底搞清MySQL分庫分表(垂直分庫,垂直分表,水平分庫,水平分表)MySql
- Mycat分庫分表(一)
- mycat配置分庫分表
- Mycat分庫分表配置
- mycat和sharding JDBC分庫分表JDBC
- Linux MySQL分庫分表之MycatLinuxMySql
- MyCat分庫分表、讀寫分離
- Laravel 資料表按月份水平分表,表不存在,自動建立生成Laravel
- MySQL運維8-Mycat範圍分表MySql運維
- 你分庫分表的姿勢對麼?——詳談水平分庫分表
- Mycat監控工具Mycat-webWeb
- 儀器儀表水銀,水銀溫度計,水銀體溫計
- MyCat入門篇-什麼是MyCat
- 【Mycat】Mycat核心開發者帶你輕鬆掌握Mycat路由轉發!!路由
- 【Mycat】Mycat核心開發者帶你看盡Mycat三大核心配置檔案
- MySQL運維9-Mycat分庫分表之列舉分片MySql運維
- 【Mycat】作為Mycat核心開發者,怎能不來一波Mycat系列文章?
- MySQL運維12-Mycat分庫分表之按天分片MySql運維
- 你們要的MyCat實現MySQL分庫分表來了MySql
- MyCat的快速搭建
- .netcore微服務-MycatNetCore微服務
- 1、MyCat入門
- Mycat垂直分庫
- MyCAT中的DDL
- 儀器儀表水銀,水銀溫度計,水銀體溫計,水銀鍍金,汞的價格,水銀回收處理,淘砂金專用水銀
- MySQL運維11-Mycat分庫分表之應用指定分片MySql運維
- 分散式資料庫中介軟體 MyCat | 分庫分表實踐分散式資料庫
- 基於代理的資料庫分庫分表框架 Mycat實踐資料庫框架
- 如何公平分配?AI比人更懂AI
- 淘砂金水銀,淘沙金水銀,儀器儀表水銀,水銀溫度計,水銀體溫計
- 儀器儀表水銀價格多少錢
- 你分庫分表的姿勢對麼?——詳談水平分庫分表 轉至後設資料結尾
- Mycat2 安裝
- docker中安裝mycatDocker
- Mycat問題規避