mycat 知識總結

2021-10-07 14:41:41 字數 2960 閱讀 4842

若開啟半同步複製,超過10秒(預設)沒有收到ack確認訊息,會改變為非同步複製。mysql預設是非同步複製。

按照使用者id求模,將資料分散到不同的資料庫,具有相同資料使用者的數 據都被分散到乙個庫中。

按照日期,將不同月甚至日的資料分散到不同的庫中。

按照某個特定的字段求摸,或者根據特定範圍段分散到不同的庫中。

引入分布式事務的問題;

跨節點 join 的問題;

跨節點合併排序分頁問題

非分片

分表

分庫

通過在配置檔案中配置可能的列舉id,自己配置分片,本規則適用於特定的場景,比如有些業務需要按照省份或區縣來做儲存,不同的省份存到不同的資料節點。

本條規則類似於十進位制的求模運算,區別在於是二進位制的操作,是取id的二進位制低10位,即id二進位制&1111111111。 此演算法的優點在於如果按照10進製取模運算,在連續插入1-10時候1-10會被分到1-10個分片,增大了插入的事務 控制難度,而此演算法根據二進位制則可能會分到連續的分片,減少插入事務事務控制難度

此分片適用於,提前規劃好分片字段某個範圍屬於哪個分片

此規則為按天分片

資料均勻分布,不出現資料傾斜的情況。

在mycat er分片表,需要滿足幾個特點

1、表和表之間存在主從關係

2、存在外來鍵關聯

比如:訂單表和訂單明細表

t_order,t_order_detail

這種就需要把存在關聯關係的id儲存到

同乙個分片節點裡面

相應的配置:

![在這裡插入描述]( select b.* from t_order a join t_order_detail b on a.orderid=b.orderid;

1、新建用於擴容的newschema.xml和newrule.xml檔案

這兩個檔案是擴容以後的分片節點配置

2、修改datamigrate.s**件

該檔案型別是dos的,需要修改為unix型別

檢視.s**件型別::set ff

修改.s**件型別::set ff=unix 回車

3、修改datamigrate.sh中的配置

基本上修改乙個即可:

#mysql bin路徑

run_cmd="$run_cmd -mysqlbin=/usr/bin"

這個是mysqldump檔案的路徑,

找該檔案:find / -name mysqldump

4、修改migratetables.properties配置檔案,指定需要遷移的邏輯庫和表

注意事項

1、jdk不能用openjdk,需要自己安裝,配置環境變數

2、之前的老的schema.xml和rule.xml老配置不能動

3、新增遷移後的節點新配置newschema.xml和newrule.xml

4、mycat bug migratetables.properties中邏輯庫的名稱不能既有大些又有小寫,如:enjoydb,必須全小寫或全大寫。

5、遷移類:datamigrator

xa 協議

在mysql例項中開啟乙個xa事務,指定乙個全域性唯一標識

xa start 『any_unique_id』;

insert

xa事務的操作結束

xa end 『any_unique_id』;

告知mysql準備提交這個xa事務

xa prepare 『any_unique_id』;

告知mysql提交這個 xa事務

xa commit 『any_unique_id』;

告知mysql回滾這個 xa事務;

xa rollback 『any_unique_id』;

檢視本機mysql目前有哪些xa事務處於prepare狀態;

同乙個會話(同乙個使用者)跟普通是互斥的

有隔離性

xa prepare xid 有返回值

xa prepare xid

xa start xid1

connection1.execulte(xa start xid1

)connection1.insert()

connection1.end;

connection2.。。。。

result1 = connection1.prepare()

result2 = conneciont2.prepare();

tmif(allok) else

xxdatasource implment datasouce mybatis jpa

connection.createpreparestatement.

分庫分表Mycat總結

在日常的工作中,關係型資料庫本身比較容易成為系統的瓶頸點,雖然讀寫分離能分散資料庫的讀寫壓力,但並沒有分散儲存壓力,當資料量達到千萬甚至上億時,單台資料庫伺服器的儲存能力會成為系統的瓶頸,主要體現在以下幾個方面 資料量太大,讀寫的效能會下降,即使有索引,索引也會變得很大,效能同樣會降下。資料庫檔案會...

mycat系列 mycat原理

mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返回的結果做適當的處...

mycat是什麼 MYCAT學習2

1.mycat的使用 rule 1 的作用是什麼?指定使用的分片演算法 2 中name屬性的作用是什麼?name 屬性指定唯一的名字,用於標識不同的分片規則。內嵌的 rule 標籤則指定對物理表中的哪一列進行拆分和使用什麼分演算法 3 中columns屬性的作用是什麼?指定要拆分的列名字 4 中al...