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

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

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

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

一、Mycat是什么?

二、Mycat安裝

三、MyCat分片

前言

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

當(dāng)MySQL單表記錄數(shù)過(guò)大時(shí),數(shù)據(jù)庫(kù)的CRUD性能會(huì)明顯下降

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

  2. 讀/寫(xiě)分離

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

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

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

一、Mycat是什么?

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

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

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

二、Mycat安裝

2.1 下載

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

在這里插入圖片描述

在這里插入圖片描述

2.2 MyCat的安裝及啟動(dòng)

2.2.1上傳包到linux解壓

Mycat的默認(rèn)端口號(hào)為:8066

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

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

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

# 3、進(jìn)入mycat目錄的bin目錄,啟動(dòng)mycat

./mycat start

# 4、停止MyCat

./mycat stop

# 5、Mycat的默認(rèn)端口號(hào)為:8066

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

2.2.2 啟動(dòng)注意事項(xiàng)

server.xml中的邏輯庫(kù)和schema.xml中的邏輯庫(kù)名稱對(duì)應(yīng)

2.2.3 啟動(dòng)失敗問(wèn)題記錄

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

  1. 進(jìn)入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. 保存文件并從新啟動(dòng)Mycat服務(wù)

啟動(dòng)正常

2.2.4 登錄MyCat

終端登錄

mysql  -uroot -p  -p27.0.0.1  -P8066

navicat登錄

三、MyCat分片

3.1 MyCat架構(gòu)

1、邏輯庫(kù)(schema):

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

2、邏輯表(table):

既然有邏輯庫(kù),那么就會(huì)有邏輯表,分布式數(shù)據(jù)庫(kù)中,對(duì)應(yīng)用來(lái)說(shuō),讀寫(xiě)數(shù)據(jù)的表就是邏輯表。邏輯表,可以是數(shù)據(jù)切分后,分布在一個(gè)或多個(gè)分片庫(kù)中,也可以不做數(shù)據(jù)切分,不分片,只有一個(gè)表構(gòu)成。

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

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

5、數(shù)據(jù)節(jié)點(diǎn)(dataNode): 數(shù)據(jù)節(jié)點(diǎn)也被稱之為分片節(jié)點(diǎn),數(shù)據(jù)切分以后,每一個(gè)部分就可以被稱之為一個(gè)分片。每一個(gè)分片需要對(duì)應(yīng)一個(gè)節(jié)點(diǎn)主機(jī)。

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

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

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

3.2 分片配置

3.2.1 配置文件schema.xml

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

schema標(biāo)簽用于定義MyCat實(shí)例中的邏輯庫(kù)Table 標(biāo)簽定義了MyCat中的邏輯表

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

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

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

修改schema.xml文件

3.2.2 配置文件server.xml

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

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

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

<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分片測(cè)試

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

CREATE TABLE TB_TEST (

id BIGINT(20) NOT NULL,

title VARCHAR(100) NOT NULL ,

PRIMARY KEY (id)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

測(cè)試改名后能否成功,發(fā)現(xiàn)失敗,因此需要在schema.xml中指定邏輯表使用TB_TEST后創(chuàng)建成功,我們?cè)诓榭碝ySQL的3個(gè)庫(kù),發(fā)現(xiàn)表都自動(dòng)創(chuàng)建好啦。

在這里插入圖片描述

接下來(lái)是插入表數(shù)據(jù),注意,在寫(xiě) INSERT 語(yǔ)句時(shí)一定要寫(xiě)把字段列表寫(xiě)出來(lái)

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');

在這里插入圖片描述

在這里插入圖片描述

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

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

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

因?yàn)槲覀儾捎玫姆制?guī)則是每節(jié)點(diǎn)存儲(chǔ)500萬(wàn)條數(shù)據(jù),所以當(dāng)ID大于5000000則會(huì)存儲(chǔ)到第二個(gè)節(jié)點(diǎn)上。目前只設(shè)置了兩個(gè)節(jié)點(diǎn),如果數(shù)據(jù)大于1000萬(wàn)條,會(huì)怎么樣呢?執(zhí)行下列語(yǔ)句測(cè)試一下

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

3.4 MyCat分片規(guī)則

3.4.1 按主鍵范圍分片rang-long

通過(guò)上述測(cè)試證明,分片的規(guī)則是每張表存儲(chǔ)500萬(wàn)的數(shù)據(jù),那么這個(gè)數(shù)量可以修改嗎?當(dāng)然是可以的,請(qǐng)往下看

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

在這里插入圖片描述

3.4.2 一致性哈希 murmur

當(dāng)我們需要將數(shù)據(jù)平均分在幾個(gè)分區(qū)中 ,需要使用一致性hash規(guī)則 我們找到function的name為 murmur 的定義,將count屬性改為3,因?yàn)槲乙獙?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">

<!-- 默認(rèn)是0 -->

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

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

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

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

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

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

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

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

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

</function>

在schema.xml中配置邏輯表時(shí),指定規(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對(duì)count=3取模,結(jié)構(gòu)肯定是0,1,2,因此根據(jù)結(jié)果放到3個(gè)庫(kù)的其中一個(gè)

配置說(shuō)明 :

屬性描述columns標(biāo)識(shí)將要分片的表字段algorithm指定分片函數(shù)與function的對(duì)應(yīng)關(guān)系class指定該分片算法對(duì)應(yīng)的類count數(shù)據(jù)節(jié)點(diǎn)的數(shù)量

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

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

3.4.4 枚舉分片

通過(guò)在配置文件中配置可能的枚舉值, 指定數(shù)據(jù)分布到不同數(shù)據(jù)節(jié)點(diǎn)上, 本規(guī)則適用于按照省份或狀態(tài)拆分?jǐn)?shù)據(jù)等業(yè)務(wù) , 配置如下: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é)點(diǎn)索引的對(duì)應(yīng)關(guān)系 內(nèi)容如下 :

1=0

2=1

3=2

配置說(shuō)明:

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

默認(rèn)節(jié)點(diǎn)的所用:枚舉分片時(shí),如果碰到不識(shí)別的枚舉值, 就讓它路由到默認(rèn)節(jié)點(diǎn) ; 如果沒(méi)有默認(rèn)值,碰到不識(shí)別的則報(bào)錯(cuò) 。

有趣

原文來(lái)源:https://mp.weixin.qq.com/s/zC0qTyIVI5ebs8VOjh9J9g

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

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

點(diǎn)個(gè)贊
0
踩一腳
0

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

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

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司

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

主站蜘蛛池模板: 天堂网www在线资源网 | 日韩黄视频 | 一机毛片 | 午夜免费理论片在线看 | 亚洲激情成人网 | 在线亚洲精品国产成人二区 | 无遮羞禁黄动漫在线观看 | 亚洲一区二区三区免费看 | 精品一区二区三区影院在线午夜 | 在线一级黄色片 | 国产真实乱xxxav | 亚洲一区二区三区免费看 | 亚洲欧美日韩精品久久亚洲区 | 黄色短视频免费观看 | 一级特级毛片免费 | 国产中文字幕视频 | a级黄色毛片三 | 黄色成人免费观看 | 九九视频在线观看 | 美女视频黄.免费网址 | 久久美女性网 | 最近免费视频中文 | 2018天天操天天干 | 欧美性受xxxx喷水性欧洲 | 免费一级毛片 | 伊人网综合在线观看 | 欧美在线观看一区 | 国产精品自在线拍 | 欧美日韩一日韩一线不卡 | 欧美一级片观看 | 中文字幕亚洲综久久2021 | 成人日韩欧美 | 成年人色视频 | 18无删减羞羞网站动漫 | 亚洲系列| 午夜爽爽 | 亚洲午夜精品久久久久久人妖 | 国产三级a三级三级三级 | 亚洲乱人伦精品图片 | 日韩经典第一页 | 午夜在线视频免费 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價(jià)格低
  • 蘋(píng)果原裝手機(jī)殼