三 MyCat主要配置介紹

2022-07-29 03:30:15 字數 4721 閱讀 2958

1、server.xml mycat的配置檔案,設定賬號、引數等

2、schema.xml mycat對應的物理資料庫和資料庫表的配置

3、rule.xml mycat分片(分庫分表)規則

testdb

user 使用者配置節點

--name 登入的使用者名稱,也就是連線mycat的使用者名稱

--password 登入的密碼,也就是連線mycat的密碼

--schemas 資料庫名,這裡會和schema.xml中的配置關聯,多個用逗號分開,例如需要這個使用者需要管理兩個資料庫db1,db2,則配置db1,dbs 

對使用者的 schema以及表進行精細化的dml許可權控制

--check 表示是否開啟dml許可權檢查。預設是關閉。server.dtd檔案中 說明可以有多個schema的配置。

--dml 順序說明:insert,update,select,delete

db1的許可權是update,select。 

tb01的許可權是啥都不能幹。 

tb02的許可權是insert,update,select,delete。 

其他表預設是udpate,select。

這個標籤內巢狀的所有 property 標籤都與系統配置有關。

utf8

字符集1

處理執行緒數量,預設是cpu數量。

4096

每次讀取留的數量,預設4096。

409600

建立共享buffer需要占用的總空間大小。processorbufferchunk*processors*100。

0預設為0。0表示directbytebufferpool,1表示bytebufferarena。

100二級共享buffer是processorbufferpool的百分比,這裡設定的是百分比。

100全域性id生成方式。(0:為本地檔案方式,1:為資料庫方式;2:為時間戳序列方式;3:為zk生成id;4:為zk遞增id生成。

1是否開啟mysql壓縮協議。1為開啟,0為關閉,預設關閉。

4指定 mysql 協議中的報文頭長度。預設 4。

16m指定 mysql 協議可以攜帶的資料最大長度。預設 16m。

1800000

指定連線的空閒超時時間。某連線在發起空閒檢查下,發現距離上次使用超過了空閒時間,那麼這個連線會被**,就是被直接的關閉掉。預設 30 分鐘,單位毫秒。

3前端連線的初始化事務隔離級別,只在初始化的時候使用,後續會根據客戶端傳遞過來的屬性對後端資料庫連線進行同步。預設為 repeated_read,設定值為數字預設 3。 

read_uncommitted = 1; 

read_committed = 2; 

repeated_read = 3; 

serializable = 4;

300sql 執行超時的時間,mycat 會檢查連線上最後一次執行 sql 的時間,若超過這個時間則會直接關閉這連線。預設時間為 300 秒,單位秒。

1000

清理 nioprocessor 上前後端空閒、超時和關閉連線的間隔時間。預設是 1 秒,單 

位毫秒。

300000

對後端連線進行空閒、超時檢查的時間間隔,預設是 300 秒,單位毫秒。

10000

對後端所有讀、寫庫發起心跳的間隔時間,預設是 10 秒,單位毫秒。

0.0.0.0

mycat 服務監聽的 ip 位址,預設值為 0.0.0.0。

8066

定義 mycat 的使用埠,預設值為 8066。

9066

定義 mycat 的管理埠,預設值為 9066。

5.6mycat 模擬的 mysql 版本號,預設值為 5.6 版本,如非特需,不要修改這個值,目前支援設定 5.5,5.6,5.7 版本,其他版本可能會有問題。

0是否開啟實時統計。1為開啟;0為關閉 。

0是否開啟全域性表一致性檢測。1為開啟;0為關閉 。

0分布式事務開關。0為不過濾分布式事務;1為過濾分布式事務;2 為不過濾分布式事務,但是記錄分布式事務日誌。

65535

預設是65535。 64k 用於sql解析時最大文字長度 

以上舉例的屬性僅僅是一部分,可以配置的變數很多,具體可以檢視systemconfig這個類的屬性內容。 

system標籤下的屬性,一般是上線後,需要根據實際執行的情況,分析後調優的時候進行修改。

顧名思義,這個就是關於防火牆的設定,也就是在網路層對請求的位址進行限制,主要是從安全角度來保證mycat不被匿名ip進行訪問

設定很簡單,很容易理解,只要設定了白名單,表示開啟了防火牆,只有白名單的連線才可以進行連線。

--schema 資料庫設定,此資料庫為邏輯資料庫,name與server.xml中schema對應

--datanode 分片資訊,也就是分庫相關配置

--datahost 物理資料庫,真正儲存資料的資料庫

schema標籤用來定義mycat例項中的邏輯庫,mycat可以有多個邏輯庫,每個邏輯庫都有自己的相關配置。可以使用schema標籤來劃分這些不同的邏輯庫

如果不配置schema標籤,所有表的配置會屬於同乙個預設的邏輯庫。邏輯庫的概念和mysql的database的概念一樣,我們在查詢兩個不同邏輯庫中的表的時候,需要切換到該邏輯庫下進行查詢。

--name 邏輯資料庫名,與server.xml中的schema對應

--checksqlschema 資料庫字首相關設定,當該值為true時,例如我們執行語句select * from testdb.company 。mycat會把語句修改為 select * from company 去掉testdb。

--sqlmaxlimit 當該值設定為某個數值時,每條執行的sql語句,如果沒有加上limit語句,mycat會自動加上對應的值。不寫的話,預設返回所有的值。

需要注意的是,如果執行的schema為非拆分庫的,那麼該屬性不會生效。需要自己sql語句加limit。

--name 表名,物理資料庫中表名

--datanode 表儲存到哪些節點,多個節點用逗號分隔。節點為下文datanode設定的name

--primarykey 主鍵欄位名,自動生成主鍵時需要設定

--autoincrement 是否自增

--rule 分片規則名,具體規則下文rule詳細介紹

--type 該屬性定義了邏輯表的型別,目前邏輯表只有全域性表和普通表。全域性表: global 普通表:無 

注:全域性表查詢任意節點,普通表查詢所有節點效率低

--autoincrement mysql對非自增長主鍵,使用last_insert_id() 是不會返回結果的,只會返回0.所以,只有定義了自增長主鍵的表,才可以用last_insert_id()返回主鍵值。

mycat提供了自增長主鍵功能,但是對應的mysql節點上資料表,沒有auto_increment,那麼在mycat層呼叫last_insert_id()也是不會返回結果的。

--needaddlimit 指定表是否需要自動的在每個語句後面加上limit限制,由於使用了分庫分表,資料量有時候會特別龐大,這時候執行查詢語句,

忘記加上limt就會等好久,所以mycat自動為我們加上了limit 100,這個屬性預設為true,可以自己設定為false禁用。如果使用這個功能,最好配合使用資料庫模式的全域性序列。

--subtables 分表,分表目前不支援join。

1) childtable標籤

--childtable 標籤用於定義 e-r 分片的子表。通過標籤上的屬性與父表進行關聯。 

--name 子表的名稱

--joinkey 子表中字段的名稱

--parentkey 父表中欄位名稱

--primarykey 同table

--needaddlimit 同table

datanode標籤定義了mycat中的資料節點,也就是我們所說的資料分片。乙個datanode標籤就是乙個獨立的資料分片。

例子中的表述的意思為,使用名字為localhost1資料庫例項上的db1物理資料庫,這就組成乙個資料分片,最後我們用dn1來標示這個分片。

--name 定義資料節點的名字,這個名字需要唯一。我們在table標籤上用這個名字來建立表與分片對應的關係

--datahost 用於定義該分片屬於哪個資料庫例項,屬性與datahost標籤上定義的name對應

--database 用於定義該分片屬於資料庫例項上 的具體庫。

這個標籤直接定義了具體資料庫例項,讀寫分離配置和心跳語句。

select user()

ule.xml 裡面就定義了我們對錶進行拆分所涉及到的規則定義。我們可以靈活的對錶使用不同的分片演算法,或者對錶使用相同的演算法但具體的引數不同。 包含的標籤 tablerule 和 function。

這個標籤定義表規則。 

定義的表規則,在 schema.xml:

idfunc1

--name 屬性指定唯一的名字,用於標識不同的表規則。 內嵌的 rule 標籤則指定對物理表中的哪一列進行拆分和使用什麼路由演算法。 

--columns 內指定要拆分的列名字。 

--algorithm 使用 function 標籤中的 name 屬性。連線表規則和具體路由演算法。當然,多個表規則可以連線到 同乙個路由演算法上。table 標籤內使用。讓邏輯表使用這個規則進行分片。

partition-hash-int.txt

--name 指定演算法的名字。 

--class 制定路由演算法具體的類名字。 

--property 為具體演算法需要用到的一些屬性。

**  

mycat中介軟體配置詳情介紹

目標 低成本的將現有的單機資料庫和應用平滑遷移到 雲 端,解決資料儲存和業務規模迅速增長情況下的資料瓶頸問題。關鍵特性 支援 sql 92標準 支援mysql集群,可以作為proxy使用 支援jdbc連線oracle db2 sql server,將其模擬為mysql server使用 支援gale...

mycat 簡單介紹

一 mycat?1.為什麼叫mycat 其實mycat在最早的初期版本只支援mysql一種資料庫,換句話說mycat其實就是mysql的增強版 在mysql中只是資料庫,並沒有讀寫分離和分庫分表,這些操作全部都是由mycat進行實現 主從複製 資料同步 功能mycat沒有,必須要使用mysql所提供...

mycat是什麼 Mycat簡單介紹

官網 乙個徹底開源的,面向企業應用開發的大資料庫集群 支援事務 acid 可以替代mysql的加強版資料庫 乙個可以視為mysql集群的企業級資料庫,用來替代昂貴的oracle集群 乙個融合記憶體快取技術 nosql技術 hdfs大資料的新型sql server 結合傳統資料庫和新型分布式資料倉儲的...