若開啟半同步複製,超過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...