免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

MyCat安裝配置,及數(shù)據(jù)分片

:2024年09月10日 程序員總結(jié)文檔
分享到:

本文介紹了一種新的數(shù)據(jù)庫中間件產(chǎn)品,Mycat,支持MySQL集群或Mariadb cluster,并提供高可用性。Mycat基于cobar,重構(gòu)網(wǎng)絡模塊,優(yōu)化Buffer和Join等基本特性,并兼容絕大多數(shù)數(shù)據(jù)庫。

一、Mycat是什么?

二、Mycat安裝

三、MyCat分片

前言

那么大表的數(shù)據(jù)如何優(yōu)化呢?

當MySQL單表記錄數(shù)過大時,數(shù)據(jù)庫的CRUD性能會明顯下降

  1. 限定數(shù)據(jù)的范圍 例如日期限制在一個月之內(nèi)

  2. 讀/寫分離

  3. 對數(shù)據(jù)庫表進行垂直拆分根據(jù)數(shù)據(jù)庫里面數(shù)據(jù)表的相關性進行拆分。例如,用戶表中既有用戶的登錄信息又有用戶的基本信息,可以將用戶表拆分成兩個單獨的表

  4. 對數(shù)據(jù)庫表進行水平拆分保持數(shù)據(jù)表結(jié)構(gòu)不變,通過某種策略對數(shù)據(jù)進行分片。這樣每一片數(shù)據(jù)分散到不同庫中,達到了分布式的目的。水平拆分可以支撐非常大的數(shù)據(jù)量。

  5. 如何實現(xiàn)數(shù)據(jù)庫的水平拆分呢中間件代理:在應用和數(shù)據(jù)中間加了一個代理層。分片邏輯統(tǒng)一維護在中間件服務中。我們現(xiàn)在談的 Mycat 、360的Atlas、網(wǎng)易的DDB等等都是這種架構(gòu)的實現(xiàn)。

一、Mycat是什么?

官網(wǎng):http://www.mycat.org.cn/

Mycat 背后是阿里曾經(jīng)開源的知名產(chǎn)品——Cobar。Cobar的核心功能和優(yōu)勢是MySQL數(shù)據(jù)庫分片,此產(chǎn)品曾經(jīng)廣為流傳,阿里隨后開源的 Cobar,并維持到 2013 年年初。Cobar 的思路和實現(xiàn)路徑的確不錯。基于 Java 開發(fā)的,實現(xiàn)了 MySQL 公開的二進制傳輸協(xié)議,巧妙地將自己偽裝成一個 MySQL Server,目前市面上絕大多數(shù) MySQL 客戶端工具和應用都能兼容。比自己實現(xiàn)一個新的數(shù)據(jù)庫協(xié)議要明智的多,因為生態(tài)環(huán)境在哪里擺著。 Mycat 是基于 cobar 演變而來,對 cobar 的代碼進行了徹底的重構(gòu),使用 NIO 重構(gòu)了網(wǎng)絡模塊,并且優(yōu)化了 Buffer 內(nèi)核,增強了聚合,Join 等基本特性,同時兼容絕大多數(shù)數(shù)據(jù)庫成為通用的數(shù)據(jù)庫中間件。簡單的說,MyCAT是一****個新穎的數(shù)據(jù)庫中間件產(chǎn)品支持 mysql 集群,或者 mariadb cluster,提供高可用性數(shù)據(jù)分片集群。你可以像使用mysql一樣使用mycat。對于開發(fā)人員來說根本感覺不到mycat的存在。

支持以下數(shù)據(jù)庫

二、Mycat安裝

2.1 下載

下載地址:https://github.com/MyCATApache/Mycat-download/

在這里插入圖片描述

在這里插入圖片描述

2.2 MyCat的安裝及啟動

2.2.1上傳包到linux解壓

Mycat的默認端口號為:8066

# 1、將 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 上傳至服務器

# 2、將壓縮包解壓縮。建議將mycat放到/usr/local目錄下。

tar -xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local

# 3、進入mycat目錄的bin目錄,啟動mycat

./mycat start

# 4、停止MyCat

./mycat stop

# 5、Mycat的默認端口號為:8066

目錄結(jié)構(gòu)為:

2.2.2 啟動注意事項

server.xml中的邏輯庫和schema.xml中的邏輯庫名稱對應

2.2.3 啟動失敗問題記錄

解決Bit Server VM警告:忽略選項MaxPermSize=64M,因為在8.0中已刪除 這是由于MaxPermSize=64M選項在8.0版本中被移除了。為了解決這個問題,您可以按照以下步驟進行配置調(diào)整:

  1. 進入Mycat的配置文件目錄:mycat/conf/

  2. 編輯wrapper.conf文件,可以使用命令:vim wrapper.conf

  3. 定位到wrapper.java.additional.3=-XX:MaxPermSize=64M這一行配置

  4. 將該行配置注釋掉,改為:#wrapper.java.additional.3=-XX:MaxPermSize=64M

  5. 保存文件并從新啟動Mycat服務

啟動正常

2.2.4 登錄MyCat

終端登錄

mysql  -uroot -p  -p27.0.0.1  -P8066

navicat登錄

三、MyCat分片

3.1 MyCat架構(gòu)

1、邏輯庫(schema):

前面一節(jié)講了數(shù)據(jù)庫中間件,通常對實際應用來說,并不需要知道中間件的存在,業(yè)務開發(fā)人員只需要知道數(shù)據(jù)庫的概念,所以數(shù)據(jù)庫中間件可以被看做是一個或多個數(shù)據(jù)庫集群構(gòu)成的邏輯庫。

2、邏輯表(table):

既然有邏輯庫,那么就會有邏輯表,分布式數(shù)據(jù)庫中,對應用來說,讀寫數(shù)據(jù)的表就是邏輯表。邏輯表,可以是數(shù)據(jù)切分后,分布在一個或多個分片庫中,也可以不做數(shù)據(jù)切分,不分片,只有一個表構(gòu)成。

3、分片表:是指那些原有的很大數(shù)據(jù)的表,需要切分到多個數(shù)據(jù)庫的表,這樣,每個分片都有一部分數(shù)據(jù),所有分片構(gòu)成了完整的數(shù)據(jù)。總而言之就是需要進行分片的表。

4、非分片表:一個數(shù)據(jù)庫中并不是所有的表都很大,某些表是可以不用進行切分的,非分片是相對分片表來說的,就是那些不需要進行數(shù)據(jù)切分的表。

5、數(shù)據(jù)節(jié)點(dataNode): 數(shù)據(jù)節(jié)點也被稱之為分片節(jié)點,數(shù)據(jù)切分以后,每一個部分就可以被稱之為一個分片。每一個分片需要對應一個節(jié)點主機。

6、節(jié)點主機(dataHost):數(shù)據(jù)切分后,每個分片節(jié)點(dataNode)不一定都會獨占一臺機器,同一機器上面可以有多個分片節(jié)點,這樣一個或多個分片節(jié)點(dataNode)所在的機器就是節(jié)點主機(dataHost),為了規(guī)避單節(jié)點主機并發(fā)數(shù)限制,盡量將讀寫壓力高的分片節(jié)點(dataNode)均衡的放在不同的節(jié)點主機(dataHost)。

7、分片規(guī)則(rule):

前面講了數(shù)據(jù)切分,一個大表被分成若干個分片表,就需要一定的規(guī)則,這樣按照某種業(yè)務規(guī)則把數(shù)據(jù)分到某個分片的規(guī)則就是分片規(guī)則,數(shù)據(jù)切分選擇合適的分片規(guī)則非常重要,將極大的避免后續(xù)數(shù)據(jù)處理的難度。

3.2 分片配置

3.2.1 配置文件schema.xml

schema.xml 作為MyCat中重要的配置文件之一,**管理著MyCat的邏輯庫、邏輯表以及對應的分片規(guī)則、DataNode以及DataSource。** 弄懂這些配置,是正確使用MyCat的前提。這里就一層層對該文件進行解析。

schema標簽用于定義MyCat實例中的邏輯庫Table 標簽定義了MyCat中的邏輯表

rule用于指定分片規(guī)則

auto-sharding-long的分片規(guī)則是按ID值的范圍進行分片 1-5000000 為第1片

5000001-10000000 為第2片.... 具體設置我們會在第5小節(jié)中講解。dataNode 標簽定義了MyCat中的數(shù)據(jù)節(jié)點,也就是我們通常說所的數(shù)據(jù)分片。dataHost標簽在mycat邏輯庫中也是作為最底層的標簽存在,直接定義了具體的數(shù)據(jù)庫實例、讀寫分離配置和心跳語句。

修改schema.xml文件

3.2.2 配置文件server.xml

server.xml幾乎保存了所有mycat需要的系統(tǒng)配置信息。最常用的是在此配置用戶名、密碼及權(quán)限。在system中添加UTF-8字符集設置,否則存儲中文會出現(xiàn)問號

<property name="charset">utf8</property>

修改user的設置 , 我們這里為 ITCAST 設置了兩個用戶,這里的TESTDB邏輯庫要和schema.xml中的邏輯庫一致

<user name="test">

<property name="password">test</property>

<property name="schemas">TESTDB</property>

</user>

<user name="root">

<property name="password">123456</property>

<property name="schemas">TESTDB</property>

</user>

3.3 MyCat分片測試

登錄Mycat后,執(zhí)行下列語句創(chuàng)建一個表,前提是你在schema.xml的邏輯表中有指定下表

CREATE TABLE TB_TEST (

id BIGINT(20) NOT NULL,

title VARCHAR(100) NOT NULL ,

PRIMARY KEY (id)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

測試改名后能否成功,發(fā)現(xiàn)失敗,因此需要在schema.xml中指定邏輯表使用TB_TEST后創(chuàng)建成功,我們在查看MySQL的3個庫,發(fā)現(xiàn)表都自動創(chuàng)建好啦。

在這里插入圖片描述

接下來是插入表數(shù)據(jù),注意,在寫 INSERT 語句時一定要寫把字段列表寫出來

INSERT INTO TB_TEST(ID,TITLE) VALUES(1,'goods1');

INSERT INTO TB_TEST(ID,TITLE) VALUES(2,'goods2');

INSERT INTO TB_TEST(ID,TITLE) VALUES(3,'goods3');

在這里插入圖片描述

在這里插入圖片描述

我們會發(fā)現(xiàn)這些數(shù)據(jù)被寫入到第一個節(jié)點中了,那什么時候數(shù)據(jù)會寫到第二個節(jié)點中呢?

我們插入下面的數(shù)據(jù)就可以插入第二個節(jié)點了

INSERT INTO TB_TEST(ID,TITLE) VALUES(5000001,'goods5000001');

因為我們采用的分片規(guī)則是每節(jié)點存儲500萬條數(shù)據(jù),所以當ID大于5000000則會存儲到第二個節(jié)點上。目前只設置了兩個節(jié)點,如果數(shù)據(jù)大于1000萬條,會怎么樣呢?執(zhí)行下列語句測試一下

INSERT INTO TB_TEST(ID,TITLE) VALUES(10000001,'goods10000001');

3.4 MyCat分片規(guī)則

3.4.1 按主鍵范圍分片rang-long

通過上述測試證明,分片的規(guī)則是每張表存儲500萬的數(shù)據(jù),那么這個數(shù)量可以修改嗎?當然是可以的,請往下看

下圖清晰的展示了規(guī)則的關聯(lián)性

在這里插入圖片描述

3.4.2 一致性哈希 murmur

當我們需要將數(shù)據(jù)平均分在幾個分區(qū)中 ,需要使用一致性hash規(guī)則 我們找到function的name為 murmur 的定義,將count屬性改為3,因為我要將數(shù)據(jù)分成3片

在rule.xml中配置如下:

<tableRule name="sharding-by-murmur">

<rule>

<columns>id</columns>

<algorithm>murmur</algorithm>

</rule>

</tableRule>

<function name="murmur" class="org.opencloudb.route.function.PartitionByMurmurHash">

<!-- 默認是0 -->

<property name="seed">0</property>

<!-- 要分片的數(shù)據(jù)庫節(jié)點數(shù)量,必須指定,否則沒法分片 -->

<property name="count">3</property>

<!-- 一個實際的數(shù)據(jù)庫節(jié)點被映射為這么多虛擬節(jié)點,默認是160倍,也就是虛擬節(jié)點數(shù)是物理節(jié)點數(shù)的160倍 -->

<property name="virtualBucketTimes">160</property>

<!-- 節(jié)點的權(quán)重,沒有指定權(quán)重的節(jié)點默認是1。以properties文件的格式填寫,以從0開始到count-1的整數(shù)值也就是節(jié)點索引為key,以節(jié)點權(quán)重值為值。所有權(quán)重值必須是正整數(shù),否則以1代替  -->

<!-- <property name="weightMapFile">weightMapFile</property> -->

<!-- 用于測試時觀察各物理節(jié)點與虛擬節(jié)點的分布情況,如果指定了這個屬性,會把虛擬節(jié)點的murmur hash值與物理節(jié)點的映射按行輸出到這個文件,沒有默認值,如果不指定,就不會輸出任何東西 -->

<!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> -->

</function>

在schema.xml中配置邏輯表時,指定規(guī)則為sharding-by-murmur-order

<table name="tb_order" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur-order" />

3.4.3 取模分片

<tableRule name="mod-long">

<rule>

<columns>id</columns>

<algorithm>mod-long</algorithm>

</rule>

</tableRule>

<function name="mod-long" class="io.mycat.route.function.PartitionByMod">

<property name="count">3</property>

</function>

id對count=3取模,結(jié)構(gòu)肯定是0,1,2,因此根據(jù)結(jié)果放到3個庫的其中一個

配置說明 :

屬性描述columns標識將要分片的表字段algorithm指定分片函數(shù)與function的對應關系class指定該分片算法對應的類count數(shù)據(jù)節(jié)點的數(shù)量

在schema.xml中配置邏輯表時,指定規(guī)則為mod-long

<table name="tb_brand" dataNode="dn1,dn2,dn3" rule="mod-long" />

3.4.4 枚舉分片

通過在配置文件中配置可能的枚舉值, 指定數(shù)據(jù)分布到不同數(shù)據(jù)節(jié)點上, 本規(guī)則適用于按照省份或狀態(tài)拆分數(shù)據(jù)等業(yè)務 , 配置如下:status是枚舉值

<tableRule name="sharding-by-intfile">

<rule>

<columns>status</columns>

<algorithm>hash-int</algorithm>

</rule>

</tableRule>

<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">

<property name="mapFile">partition-hash-int.txt</property>

<property name="type">0</property>

<property name="defaultNode">0</property>

</function>

partition-hash-int.txt ,指定枚舉指與節(jié)點索引的對應關系 內(nèi)容如下 :

1=0

2=1

3=2

配置說明:

屬性描述columns標識將要分片的表字段algorithm指定分片函數(shù)與function的對應關系class指定該分片算法對應的類mapFile對應的外部配置文件type默認值為0 ; 0 表示Integer , 1 表示StringdefaultNode默認節(jié)點 ; 小于0 標識不設置默認節(jié)點 , 大于等于0代表設置默認節(jié)點 ;

默認節(jié)點的所用:枚舉分片時,如果碰到不識別的枚舉值, 就讓它路由到默認節(jié)點 ; 如果沒有默認值,碰到不識別的則報錯 。

有趣

原文來源:https://mp.weixin.qq.com/s/zC0qTyIVI5ebs8VOjh9J9g

[我要糾錯]
文:王振袢&發(fā)表于江蘇
關鍵詞: 目錄 Mycat 是什么 Mycat 安裝

來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權(quán)及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:MyCat安裝配置,及數(shù)據(jù)分片

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網(wǎng)絡科技有限公司

南京思必達教育科技有限公司版權(quán)所有   百度統(tǒng)計

主站蜘蛛池模板: 国产成人精品实拍在线 | 夜夜操夜夜爱 | 亚洲无线码一区在线观看 | 国内欧美一区二区三区 | 国产综合视频在线观看一区 | 最新亚洲情黄在线网站 | 99国产牛牛视频在线网站 | 日产免费自线一二 | 又黄又刺激视频 | 欧美性xxxxx极品视频 | 天天看天天摸色天天综合网 | 欧美精彩视频在线观看 | 日韩一区二区三 | 一个人看的www片免费视频中文 | 色原网站 | 欧美13一14周岁a在线播放 | 无遮挡高清一级毛片免费 | 黄色在线免费网站 | 亚洲啊啊| 男女啪啪网站 | 大香伊人中文字幕精品 | 亚州激情视频 | 国产特级全黄一级毛片不卡 | 亚洲国产va | 大香人蕉免费视频75 | 国产91成人 | 欧美白人黑人xxxx猛交 | 中文精品久久久久国产网站 | 一本久久综合亚洲鲁鲁五月天 | 在线黄色网页 | 国产 欧美 日本 | 国产青春草 | 国产一区二区高清在线 | 韩国videos18高清hd | 2020欧美极品hd18 | 丁香午夜 | 韩国伦理片免费观看 | 日韩日韩日韩手机看片自拍 | 日韩精品一区二区三区在线观看l | 亚洲一区中文字幕在线观看 | 日日摸处处碰夜夜爽视频 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價格低
  • 蘋果原裝手機殼