垂直切🈹️ 存放在同一目錄 數據中的的數據分散存放到多個數據庫
- 1.一種是按照不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切可以稱之爲數據的垂直(縱向)切分
- 另外一種則是根據表中的數據的邏輯關係,將同一個表中的數據按照某種條件拆分到多臺數據庫(主機)上面,這種切分稱之爲數據的水平(橫向)切分。
水平切割 把不同一張表存放在不同的數據中,解決單表數據過大的情況。
mycat 水平分割 解決 水平切割的問題:
cobar :阿里
schema 邏輯庫 與 mysql 中的 dabase 對應
邏輯庫中定義了 的table
table 表,
- 邏輯庫(schema) :
- 數據庫中間件可以被看做是一個或多個數據庫集羣構成的邏輯庫。
- 邏輯表(table):
- 那麼就會有邏輯表,分佈式數據庫中,對應用來說,讀寫數據的表就是邏輯表。邏輯表,可以是數據切分後,分佈在一個或多個分片庫中,也可以不做數據切分,不分片,只有一個表構成
-
分片表:是指那些原有的很大數據的表,需要切分到多個數據庫的表,這樣,每個分片都有一部分數據,所有分片構成了完整的數據。 總而言之就是需要進行分片的表。
非分片表:一個數據庫中並不是所有的表都很大,某些表是可以不用進行切分的,非分片是相對分片表來說的,就是那些不需要進行數據切分的表
- 分片節點(dataNode)
- 數據切分後,一個大表被分到不同的分片數據庫上面,每個表分片所在的數據庫就是分片節點(dataNode)。
- 節點主機(dataHost)
- 數據切分後,每個分片節點(dataNode)不一定都會獨佔一臺機器,同一機器上面可以有多個分片數據庫,這樣一個或多個分片節點(dataNode)所在的機器就是節點主機(dataHost),爲了規避單節點主機併發數限制,儘量將讀寫壓力高的分片節點(dataNode)均衡的放在不同的節點主機(dataHost)。
- 分片規則(rule)
- 個大表被分成若干個分片表,就需要一定的規則,這樣按照某種業務規則把數據分到某個分片的規則就是分片規則,數據切分選擇合適的分片規則非常重要,將極大的避免後續數據處理的難度。
- schema.xml
- Schema.xml作爲MyCat中重要的配置文件之一,管理着MyCat的邏輯庫、表、分片規則、DataNode以及DataSource。
-
schema 標籤用於定義MyCat實例中的邏輯庫
Table 標籤定義了MyCat中的邏輯表
dataNode 標籤定義了MyCat中的數據節點,也就是我們通常說所的數據分片。
dataHost標籤在mycat邏輯庫中也是作爲最底層的標籤存在,直接定義了具體的數據庫實例、讀寫分離配置和心跳語句。
-
-
- Server.xml介紹
-
-
server.xml幾乎保存了所有mycat需要的系統配置信息。最常用的是在此配置用戶名、密碼及權限。
-
- rule.xml
-
rule.xml裏面就定義了我們對錶進行拆分所涉及到的規則定義。我們可以靈活的對錶使用不同的分片算法,或者對錶使用相同的算法但具體的參數不同。這個文件裏面主要有tableRule和function這兩個標籤。在具體使用過程中可以按照需求添加tableRule
-
和function。MySQL來說,標準的讀寫分離是主從模式,一個寫節點Master後面跟着多個讀節點,讀節點的數量取決於系統的壓力,通常是1-3個讀節點的配置
-
Mycat讀寫分離和自動切換機制,需要mysql的主從複製機制配合
-
- Mysql的主從複製 數據同步 binlog