mycat github上
master分支進行全域性序列號測試,經過測試,在多次版本更新後功能沒有被損壞
1.6.6-druid 分支進行本地檔案方式的全域性序列號測試
新版1.66-druid分支問題,因為更新druid版本1.10,因為mysql的語法是沒有next value for mycatseq_***x這樣的語法的,而sql server/ oracle是支援這種sql的..druid公升級後,對mysql的語法要求更為嚴格.考慮之後全域性序列號這個功能統一使用函式呼叫的語法在mycat中表示.
1.6分支的全域性序列號功能在sqlyog圖形化客戶端中的表現如下圖
有警告提示,經過檢視後端mysql的資料以及抓包分析,發現mysql中存有正確的插入結果,檢視sqlyog的日誌,發現sqlyog傳送了帶有explain的語句導致出現該警告
可以忽略此警告
以下是使用資料庫方式獲取全域性序列號通訊過程的一些抓包截圖
mycat發出獲取資料庫中全域性序列號用到的sql
資料庫返回序列表中的當前id與步長
mycat使用上述獲得的id作為當前sql中插入語句所需的自增id組裝成新的sql傳送給資料
本地檔案方式,資料庫方式, 本地時間戳方式, 分布式zk id生成器, zk遞增方式,這五種方式,其中資料庫方式最為實用.本地檔案方式因為存在當mycat重新發布後,配置檔案中的sequence會恢復到初始值的瑕疵,並不實用.而本地時間戳方式, 分布式zk id生成器生成的id是64位二進位制數,存在占用空間大,而且id本身摻雜一些其他的資訊,導致使用該id作為分片主鍵存在一定的資料分布混亂的問題,可能需要獲取資料之後進行排序.
zk遞增方式採用的是zookeeper作為全域性id的方式進行遞增,通訊開銷大,效能較差,不建議使用.
分布式zk id生成器與zk遞增方式的區別是
分布式zk id生成器是在mycat啟動的時候,連上zookeeper獲取例項的id,並且讀取本地的mycat集群配置資訊,其後的id生成是在mycat例項本身內部處理的id遞增
而zk遞增方式採用的是zookeeper作為全域性id的方式進行遞增,通訊開銷大,效能較差,不建議使用.
資料庫方式因為可以配置序列表在哪個節點上,而且把id遞增的處理下放到了儲存過程,較為實用.
mycat 1 6實現讀寫分離
使用mysql的root賬號執行 mysql grant all privileges on to mycatuser identified by 123456 mysql flush privileges vi usr local mycat conf server.xml 123456 bala...
mycat 1 6實現讀寫分離
使用mysql的root賬號執行 mysql grant all privileges on to mycatuser identified by 123456 mysql flush privileges vi usr local mycat conf server.xml 123456 bala...
Mycat 全域性序列
在實現分庫分表的情況下,資料庫自增主鍵已無法保證主鍵的全域性唯一。所以,mact提供了全區sequence,並且提供了包含本地配置和資料庫配置等多種實現方式。1.本地檔案 原理 此方式mycat將sequence配置到檔案中,當使用到sequence中的配置後,mycat會更下classpath中的...