MyCat教程五:實現分庫分表
本文我們來介紹下MyCat的分庫分表操作
分庫分表
一、分片規則介紹
在rule.xml
中定義了各種myCat支援的分片規則。
- 取模mod-long
- 自然月分片 sharding-by-month
- 按日期(天)分片sharding-by-date
- 按單月小時拆分sharding-by-hour
- 範圍約定,提前規劃好分片欄位某個範圍屬於哪個分片,auto-sharding-long
- 範圍求模分片
- 取模範圍約束sharding-by-pattern
- 分片列舉sharding-by-intfile
- 固定分片hash演算法
- 擷取數字hash解析sharding-by-stringhash
- 一致性hash
- 日期範圍hash分片rangeDateHash
- 擷取數字做hash求模範圍約束sharding-by-prefixpattern
- 應用指定,在執行階段有應用自主決定路由到那個分片。sharding-by-substring
- 冷熱資料分片 sharding-by-date
- 有狀態分片演算法
- crc32slot分片演算法
注意
:
- id中推薦配置主鍵列
- 所有的 tableRule 只能使用一次。如果需要為多個表配置相同的分片規則,那麼需要在此重新定義該規則。
- 在 crc32Slot 演算法中的分片數量一旦給定,MyCat 會將該分片數量和 slor 的取值範圍儲存到檔案中。在次修改分片數量時是不會生效的,需要將該檔案刪除。檔案位置位於 conf目錄中的 ruledata 目錄中。
二、分庫配置
2.1 建立3個數據庫
在master
中分別建立3個數據庫demo1
,demo2
,demo3
,因為主從的關係會同步到從庫中。
create database demo1 default character set utf8;
create database demo2 default character set utf8;
create database demo3 default character set utf8;
2.2 schema.xml配置
修改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">
<table name="t_user" dataNode="dn1,dn2,dn3" rule="crc32slot" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="demo1" />
<dataNode name="dn2" dataHost="localhost1" database="demo2" />
<dataNode name="dn3" dataHost="localhost1" database="demo3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
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.88.180:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
注意
:
- 因為有三個庫,所以添加了三個
dataNode
- 使用的分配規則是
crc32slot
- 主從和讀寫分離設定沒有動,所以
writeHost
和readHost
的配置沒變
2.3 修改rule.xml檔案
因為使用的是crc32slot
演算法,且有3個數據庫,所以需要修改rule.xml中的配置
同時我們需要刪除掉ruledata
目錄中的規則檔案,不然修改的3
不會起作用
重啟mycat服務
檢視分配規則
2.3 在mycat中建立t_user表
先刪除原來建立的t_user
表,然後通過mycat建立t_user
表示,通過mycat建立會多出來一個_slot
欄位。
CREATE TABLE t_user (
`id` INT,
`name` VARCHAR (30),
`age` INT,PRIMARY KEY (
三、分庫測試
在mycat客戶端插入資料,然後去對應的物理庫中查詢具體的情況
insert into t_user(id,name,age)values(1,'HG-93',14)
注意
:插入語句的語法要完整,不要偷懶省略欄位,尤其是id
自增長!!!
資料按照我們設定的規則分別儲存到了各自資料的表結構中了。
然後我們來看下查詢操作,通過mycat看能否將所有的資料都查詢出來,
關注微信公眾號【程式設計師的夢想】,專注於Java,SpringBoot,SpringCloud,微服務,Docker以及前後端分離等全棧技術。
相關推薦
MyCat教程五:實現分庫分表
本文我們來介紹下MyCat的分庫分表操作 分庫分表 一、分片規則介紹 在rule.xml中定義了各種myCat支援的分片規則。 取模mod-long 自然月分片 sharding-by-month 按日期(天)分片sharding-by-date 按單月小時拆分sharding-by-hour 範圍約
阿里P8架構師談:資料庫分庫分表、讀寫分離的原理實現,使用場景
為什麼要分庫分表和讀寫分離? 類似淘寶網這樣的網站,海量資料的儲存和訪問成為了系統設計的瓶頸問題,日益增長的業務資料,無疑對資料庫造成了相當大的負載,同時對於系統的穩定性和擴充套件性提出很高的要求。隨著時間和業務的發展,資料庫中的表會越來越多,表中的資料量也會越來越大,相應地,
阿里P8架構師談:資料庫分庫分表、讀寫分離的原理和實現,以及使用場景
架構設計的重要的一環:資料庫分庫分表、讀寫分離,希望你看完本篇,能獨立完成該環節的設計! 為什麼要分庫分表和讀寫分離? 類似淘寶網這樣的網站,海量資料的儲存和訪問成為了系統設計的瓶頸問題,日益增長的業務資料,無疑對資料庫造成了相當大的負載,同時對於系統的穩定性和擴充套件性提出很高的要求。隨
分散式資料層中介軟體詳解:如何實現分庫分表+動態資料來源+讀寫分離
優知學院 2018-10-13 12:10:20 分散式資料層中介軟體: 1.簡介: 分散式資料訪問層中介軟體,旨在為供一個通用資料訪問層服務,支援MySQL動態資料來源、讀寫分離、分散式唯一主鍵生成器、分庫分表、動態化配置等功能,並且支援從客戶端角度對
spingboot 整合mycat 實現分庫分表功能
程式碼已上傳到我的github上,如果有需要的話可以移步:https://github.com/1181888200/boot-mycat.git最後祝大家學業有成,歡迎關注和starhttps://github.com/1181888200/boot-mycat.githt
Mycat實現 分庫分表+讀寫分離(基於主從配置)
前兩篇文章分別講解了分庫分表 和主從配置下面來介紹 分庫分表+讀寫分離(基於主從配置)簡單的架構圖:配置:cd進入到mycat的conf目錄下 檢視 server.xml rule.xml schema.xml 三個配置檔案server.xml 與之前的配置基本沒有變
EF多租戶例項:快速實現分庫分表
前言 來到這篇隨筆,我們繼續演示如何實現EF多租戶。 今天主要是演示多租戶下的變形,為下圖所示 實施 專案結構 這次我們的示例專案進行了精簡,僅有一個API專案,直接包含所有程式碼。 其中Controller,StoreContext,Entity都完全和以往的示例一模一樣,這裡
sharding-jdbc結合mybatis實現分庫分表功能
源自:https://www.cnblogs.com/zwt1990/p/6762135.html最近忙於專案已經好久幾天沒寫部落格了,前2篇文章我給大家介紹了搭建基礎springMvc+mybatis的maven工程,這個簡單框架已經可以對付一般的小型專案。但是我們實際專案
乾貨:資料庫分庫分表基礎和實踐
資料庫架構的演變 在業務資料量比較少的時代,我們使用單機資料庫就能滿足業務使用,隨著業務請求量越來越多,資料庫中的資料量快速增加,這時單機資料庫已經不能滿足業務的效能要求,資料庫主從複製架構隨之應運而生。 主從複製是將資料庫寫操作和讀操作進行分離,使用多個只讀例項(s
spring+hibernate實現分庫分表操作
分庫的實現: 寫一個動態的資料來源類 public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey
詳解yii2實現分庫分表的方案與思路
前言 大家可以從任何一個gii生成model類開始程式碼上溯,會發現:yii2的model層基於ActiveRecord實現DA
springboot + mybatis + mysql + sharding-jdbc 實現分庫分表
配置檔案 mybatis.config-locations=classpath:mybatis/mybatis-config.
利用ShardingSphere-JDBC實現分庫分表
利用ShardingSphere-JDBC實現分庫分表 1. ShardingSphere概述 1.1 概述 業務發展到一定程度,分庫分表是一種必然的要求,分庫可以實現資源隔離,分表則可以降低單表資料量,提高訪問效率。 分庫分表的技術方案,很久以來都有兩種理念: 集中式的Proxy,實現MySQL客戶端協議
分庫分表(5) ---SpringBoot + ShardingSphere 實現分庫分表
分庫分表(5)--- ShardingSphere實現分庫分表 有關分庫分表前面寫了四篇部落格: 1、分庫分表(1) --- 理論 2、分庫分表(2) --- ShardingSphere(理論) 3、分庫分表(3) ---SpringBoot + ShardingSphere實現讀寫分離 4、分庫分表(4
Springboot2.x + ShardingSphere 實現分庫分表
之前一篇文章中我們講了基於Mysql8的讀寫分離(文末有連結),這次來說說分庫分表的實現過程。 概念解析 垂直分片 按照業務拆分的方式稱為垂直分片,又稱為縱向拆分,它的核心理念是專庫專用。 在拆分之前,一個數據庫由多個數據表構成,每個表對應著不同的業務。而拆分之後,則是按照業務將表進行歸類,分佈到不同的資料庫
分庫分表(7)--- SpringBoot+ShardingSphere實現分庫分表 + 讀寫分離
分庫分表(7)--- ShardingSphere實現分庫分表+讀寫分離 有關分庫分表前面寫了六篇部落格: 1、分庫分表(1) --- 理論 2、分庫分表(2) --- ShardingSphere(理論) 3、分庫分表(3) ---SpringBoot + ShardingSphere實現讀寫分離 4、分
SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 實現分庫分表
今天專案不忙,想搞一下shardingJDBC分庫分表看看,主要想實現以下幾點: 捨棄xml配置,使用.yml或者.properties檔案+java的方式配置spring。 使用 Druid 作為資料庫連線池,同時開啟監控介面,並支援監控多資料來源。 不依賴 com.dangdang 的 shardi
MySQL 高可用:mysql+mycat實現數據庫分片(分庫分表)
native 分布 for 成功 img 問題 represent apache 新一代 本文引用於http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat實現數據庫分片(
MySQL 高可用:mysql+mycat實現資料庫分片(分庫分表)
什麼是MYCAT: 一個徹底開源的,面向企業應用開發的大資料庫叢集 支援事務、ACID、可以替代MySQL的加強版資料庫 一個可以視為MySQL叢集的企業級資料庫,用來替代昂貴的Oracle叢集 一個融合記憶體快取技術、NoSQL技術、HDFS大資料的新型SQL Se
MyCat:對MySQL數據庫進行分庫分表
文件 res names sel reg l數據庫 esp chan 規則 本篇前提: mycat配置正確,且能正常啟動。1、schema.xml<table>