日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
基于MyCat構(gòu)建MySQL分布式集群

基于Mycat構(gòu)建mysql分布式集群

作者:梁銘圖 2020-07-15 09:20:48

數(shù)據(jù)庫(kù)

MySQL

分布式 MyCat是一個(gè)開(kāi)源的分布式數(shù)據(jù)庫(kù)中間件,是一個(gè)實(shí)現(xiàn)了MySQL協(xié)議的服務(wù)器,前端用戶可以把它看作是一個(gè)數(shù)據(jù)庫(kù)代理,用MySQL客戶端工具和命令行訪問(wèn)。

十年建站經(jīng)驗(yàn), 成都做網(wǎng)站、成都網(wǎng)站制作客戶的見(jiàn)證與正確選擇。成都創(chuàng)新互聯(lián)公司提供完善的營(yíng)銷型網(wǎng)頁(yè)建站明細(xì)報(bào)價(jià)表。后期開(kāi)發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。

 什么是MyCat

MyCat是一個(gè)開(kāi)源的分布式數(shù)據(jù)庫(kù)中間件,是一個(gè)實(shí)現(xiàn)了MySQL協(xié)議的服務(wù)器,前端用戶可以把它看作是一個(gè)數(shù)據(jù)庫(kù)代理,用MySQL客戶端工具和命令行訪問(wèn),而其后端可以用MySQL原生協(xié)議與多個(gè)MySQL服務(wù)器通信,也可以用JDBC協(xié)議與大多數(shù)主流數(shù)據(jù)庫(kù)服務(wù)器通信,其核心功能是分表分庫(kù),即將一個(gè)大表水平分割為N個(gè)小表,存儲(chǔ)在后端MySQL服務(wù)器里或者其他數(shù)據(jù)庫(kù)里。

MyCat通過(guò)定義表的分片規(guī)則來(lái)實(shí)現(xiàn)分片,每個(gè)表格可以捆綁一個(gè)分片規(guī)則,每個(gè)分片規(guī)則指定一個(gè)分片字段并綁定一個(gè)函數(shù),來(lái)實(shí)現(xiàn)動(dòng)態(tài)分片算法。

  1.  Schema:邏輯庫(kù),與MySQL中的Database(數(shù)據(jù)庫(kù))對(duì)應(yīng),一個(gè)邏輯庫(kù)中定義了所包括的Table。
  2.  Table:邏輯表,即物理數(shù)據(jù)庫(kù)中存儲(chǔ)的某一張表,與傳統(tǒng)數(shù)據(jù)庫(kù)不同,這里的表格需要聲明其所存儲(chǔ)的邏輯數(shù)據(jù)節(jié)點(diǎn)DataNode。在此可以指定表的分片規(guī)則。
  3.  DataNode:MyCat的邏輯數(shù)據(jù)節(jié)點(diǎn),是存放table的具體物理節(jié)點(diǎn),也稱之為分片節(jié)點(diǎn),通過(guò)DataSource來(lái)關(guān)聯(lián)到后端某個(gè)具體數(shù)據(jù)庫(kù)上。
  4.  DataSource:定義某個(gè)物理庫(kù)的訪問(wèn)地址,用于捆綁到Datanode上。
  5.  分片規(guī)則:前面講了數(shù)據(jù)切分,一個(gè)大表被分成若干個(gè)分片表,就需要一定的規(guī)則,這樣按照某種業(yè)務(wù)規(guī)則把數(shù)據(jù)分到某個(gè)分片的規(guī)則就是分片規(guī)則,數(shù)據(jù)切分選擇合適的分片規(guī)則非常重要,將極大的避免后續(xù)數(shù)據(jù)處理的難度。

測(cè)試MySQL分布式集群架構(gòu)

本次測(cè)試環(huán)境部署集群架構(gòu)為MyCat 1.6.5(2個(gè)節(jié)點(diǎn))+MySQL 8.0.11(5個(gè)節(jié)點(diǎn))。

MySQL節(jié)點(diǎn)安裝與配置

首先在5個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)中安裝MySQL 8.0.11,參考MySQL的官方文檔,8.0.11的安裝與5.7安裝基本上是一樣的。安裝MySQL軟件后,每個(gè)MySQL數(shù)據(jù)庫(kù)都創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)名稱為szabm。篇幅所限,MySQL的安裝和配置過(guò)程就此略過(guò)。

但是值得注意的是,使用參考常規(guī)方法安裝完數(shù)據(jù)庫(kù),其中最重的一個(gè)配置是“l(fā)ower_case_table_names=1”,表示不區(qū)分大小寫(xiě)。如果不配置該參數(shù),容易由于大小寫(xiě)問(wèn)題而找不到表。

安裝Java

1、下載軟件

從Java的官網(wǎng)下載Java的二進(jìn)制包,本次下載的版本是jdk-8u152-linux-x64.tar.gz。

注:必須JDK7或更高版本。

2、解壓軟件

使用tar命令解壓上傳好的二進(jìn)制軟件包,為了方便管理,創(chuàng)建一個(gè)Java的軟鏈接。

  
 
 
 
  1. tar -xzvf jdk-8u152-linux-x64.tar.gz 
  2. ln -s jdk1.8.0_152 java

3、配置Java環(huán)境變量

參考實(shí)際的Java安裝目錄,配置環(huán)境變量,如下僅供參考。

  
 
 
 
  1. export JAVA_HOME=/gpdb/java 
  2. export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH

安裝MySQL客戶端

1、下載軟件

從MySQL的官網(wǎng)下載二進(jìn)制包的軟件,本次由于后端要部署MySQL數(shù)據(jù)庫(kù),因此直接下載了服務(wù)端當(dāng)客戶端使用,本次下載為mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz。

2、解壓軟件

使用tar命令解壓上傳的MySQL二進(jìn)制軟件包,為了方便管理,創(chuàng)建了一個(gè)MySQL的軟鏈接。

  
 
 
 
  1. tar -xzvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 
  2. ln -s mysql-8.0.11-linux-glibc2.12-x86_64 mysql

3、配置MySQL環(huán)境變量

MySQL客戶端的環(huán)境變量,只需要配置bin目錄路徑即可。

export PATH=$PATH:$/gpdb/mysql/bin

MyCat軟件安裝

1、下載軟件

從MyCat的官網(wǎng)下載MyCat軟件,本次使用的是很久之前下載的MyCat 1.6.5版本。

2、解壓軟件

使用tar命令解壓軟件,解壓之后,直接在當(dāng)前目錄生成一個(gè)MyCat的目錄。

tar -xzvf MyCat-server-1.6.5-release-20180122220033-linux.tar.gz

3、配置環(huán)境變量

運(yùn)行MyCat需要配置MYCAT_HOME環(huán)境變量,和bin目錄。

  
 
 
 
  1. export MYCAT_HOME=/gpdb/MyCat 
  2. export PATH=$PATH:$MYCAT_HOME/bin

4、啟動(dòng)MyCat

1)啟動(dòng)MyCat

使用MyCat start命令啟動(dòng)MyCat服務(wù)。MyCat默認(rèn)為服務(wù)端口是8066,管理端口是9066。

MyCat start

執(zhí)行完成在$MYCAT_HOME目錄下的logs目錄,查看wrapper.log日志文件,成功啟動(dòng)提示如下:

  
 
 
 
  1. STATUS | wrapper  | 2018/07/02 18:20:04 | Launching a JVM... 
  2. INFO   | jvm 1    | 2018/07/02 18:20:04 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org 
  3. INFO   | jvm 1    | 2018/07/02 18:20:04 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved. 
  4. INFO   | jvm 1    | 2018/07/02 18:20:04 |  
  5. INFO   | jvm 1    | 2018/07/02 18:20:06 | log4j:WARN No appenders could be found for logger (io.MyCat.memory.MyCatMemory). 
  6. INFO   | jvm 1    | 2018/07/02 18:20:06 | log4j:WARN Please initialize the log4j system properly. 
  7. INFO   | jvm 1    | 2018/07/02 18:20:06 | log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
  8. INFO   | jvm 1    | 2018/07/02 18:20:10 | MyCat Server startup successfully. see logs in logs/MyCat.log

2)啟動(dòng)遇到的問(wèn)題

本次測(cè)試中遇到啟動(dòng)MyCat失敗,提示內(nèi)存參數(shù)存在問(wèn)題。于是進(jìn)入到$MYCAT_HOME/conf目錄下,找到wrapper.conf文件,找到內(nèi)存的相關(guān)參數(shù)。

  
 
 
 
  1. 2018-06-29 14:53:02.257  INFO [WrapperSimpleAppMain] (io.MyCat.MyCatServer.startup(MyCatServer.java:329)) - Startup processors ...,total processors:32,aio thread pool size:64    
  2.  each process allocated socket buffer pool  bytes ,a page size:2097152  a page's chunk number(PageSize/ChunkSize) is:512  buffer page's number is:640
  3.  2018-06-29 14:53:02.257  INFO [WrapperSimpleAppMain] (io.MyCat.MyCatServer.startup(MyCatServer.java:330)) - sysconfig params:SystemConfig [processorBufferLocalPercent=100, frontSocketSoRcvbuf=1048576, frontSocketSoSndbuf=4194304, backSocketSoRcvbuf=4194304, backSocketSoSndbuf=1048576, frontSocketNoDelay=1, backSocketNoDelay=1, maxStringLiteralLength=65535, frontWriteQueueSize=2048, bindIp=0.0.0.0, serverPort=8066, managerPort=9066, charset=utf8, processors=32, processorExecutor=64, timerExecutor=2, managerExecutor=2, idleTimeout=1800000, catletClassCheckSeconds=60, sqlExecuteTimeout=300, processorCheckPeriod=1000, dataNodeIdleCheckPeriod=300000, dataNodeHeartbeatPeriod=10000, clusterHeartbeatUser=_HEARTBEAT_USER_, clusterHeartbeatPass=_HEARTBEAT_PASS_, clusterHeartbeatPeriod=5000, clusterHeartbeatTimeout=10000, clusterHeartbeatRetry=10, txIsolation=3, parserCommentVersion=50148, sqlRecordCount=10, bufferPoolPageSize=2097152, bufferPoolChunkSize=4096, bufferPoolPageNumber=640, maxResultSet=524288, bigResultSizeSqlCount=10, bufferUsagePercent=80, flowControlRejectStrategy=0, clearBigSqLResultSetMapMs=600000, defaultMaxLimit=100, sequnceHandlerType=2, sqlInterceptor=io.MyCat.server.interceptor.impl.DefaultSqlInterceptor, sqlInterceptorType=select, sqlInterceptorFile=/gpdb/MyCat/logs/sql.txt, mutiNodeLimitType=0, mutiNodePatchSize=100, defaultSqlParser=druidparser, usingAIO=0, packetHeaderSize=4, maxPacketSize=16777216, MyCatNodeId=1]
  4.  2018-06-29 14:53:03.319 ERROR [WrapperSimpleAppMain] (io.MyCat.MyCatStartup.main(MyCatStartup.java:62)) - 2018-06-29 14:53:03 startup error
  5.  java.lang.NumberFormatException: Size must be specified as bytes (b), kibibytes (k), mebibytes (m), gibibytes (g), tebibytes (t), or pebibytes(p). E.g. 50b, 100k, or 250m.
  6.  Failed to parse byte string: -375809638B
  7.          at io.MyCat.memory.unsafe.utils.JavaUtils.byteStringAs(JavaUtils.java:223) ~[MyCat-server-1.6.5-release.jar:?]

通過(guò)查閱相關(guān)文件對(duì)內(nèi)存參數(shù)的多次嘗試,最終開(kāi)啟如下兩個(gè)參數(shù),才成功啟動(dòng)服務(wù)。

  
 
 
 
  1. # Initial Java Heap Size (in MB) 
  2. wrapper.java.initmemory=16 
  3. # Maximum Java Heap Size (in MB) 
  4. wrapper.java.maxmemory=4096

MyCat配置文件

1、MyCat配置文件說(shuō)明

MyCat的配置文件全部存儲(chǔ)在$MYCAT_HOME/conf目錄下,主要是3個(gè)文件,全部采用xml格式編寫(xiě)。

  •  server.xml:MyCat服務(wù)器參數(shù)調(diào)整和用戶授權(quán)的配置文件。
  •  schema.xml:是邏輯庫(kù)定義和表以及分片定義的配置文件。
  •  rule.xml:是分片規(guī)則的配置文件,分片規(guī)則的具體一些參數(shù)信息單獨(dú)存放為文件。

注:配置文件修改,需要重啟MyCat或者通過(guò)9066端口reload。

2、MyCat配置文件架構(gòu)

MyCat配置文件變更

1、變更MyCat端口

MyCat的默認(rèn)服務(wù)端口是8066,為了保證與MySQL的常用端口保持一致,本次測(cè)試中將端口變更為3306。特別注意的是在server.xml配置文件,這一段的配置是注釋的,因此無(wú)論如何更改端口號(hào),不除掉注釋是不會(huì)生效的。本次測(cè)試中直接將服務(wù)端口號(hào)復(fù)制出來(lái)新增一行。

  
 
 
 

本次采用在server.xml文件新增一行參數(shù)配置。         

  
 
 
 
  1. 3306 9066

2、增加MyCat用戶

登陸MyCat的用戶都是存儲(chǔ)在server.xml配置文件的尾部,最好的辦法是直接復(fù)制一個(gè)用戶,然后進(jìn)行相關(guān)變更。

參考如下: 

  
 
 
 
  1.  
  2.              123456 
  3.              szabm  
  4.              false 
  5.      

本次新增了個(gè)test用戶,密碼是“123456”,能夠訪問(wèn)的數(shù)據(jù)庫(kù)是“szabm”,具有讀寫(xiě)權(quán)限。這里用戶訪問(wèn)的數(shù)據(jù)庫(kù)必須在schema.xml文件中配置。

3、增加MyCat數(shù)據(jù)庫(kù)

MyCat中的數(shù)據(jù)庫(kù)一般通稱為邏輯數(shù)據(jù)庫(kù),一般建議與后端的MySQL數(shù)據(jù)庫(kù)實(shí)際名稱保持一致。server.xml用戶配置的邏輯數(shù)據(jù)庫(kù)必須與schema.xml中的邏輯數(shù)據(jù)庫(kù)保持一致。在啟動(dòng)MyCat是會(huì)自動(dòng)進(jìn)行檢查,必須保持一致。

本次在測(cè)試在schema.xml配置了1個(gè)szabm的邏輯數(shù)據(jù)庫(kù),包含4個(gè)測(cè)試表(abm_acct_balance,abm_counter,abm_realtime_fee,abm_resource_present,表名必須與后端的MySQL數(shù)據(jù)庫(kù)實(shí)際表名保持一致)。每個(gè)表存儲(chǔ)在5個(gè)數(shù)據(jù)節(jié)點(diǎn)(ceph3,ceph4,ceph5,ceph6,ceph7),每個(gè)表一個(gè)分片規(guī)則。

  
 
 
 
  1.  
  2.  
  3.       
  4.       
  5.       
  6.       
  7.        

4、增加MyCat數(shù)據(jù)節(jié)點(diǎn)

MyCat中的數(shù)據(jù)節(jié)點(diǎn)就是邏輯的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),表與數(shù)據(jù)節(jié)點(diǎn)之間為1對(duì)多的關(guān)系。每個(gè)邏輯節(jié)點(diǎn)對(duì)應(yīng)一個(gè)后端的邏輯主機(jī)和實(shí)際數(shù)據(jù)庫(kù),即邏輯節(jié)點(diǎn),邏輯主機(jī),實(shí)際數(shù)據(jù)庫(kù)之間全部為一一對(duì)應(yīng)的關(guān)系,數(shù)據(jù)庫(kù)名稱為同一個(gè),是后端MySQL數(shù)據(jù)庫(kù)的實(shí)際數(shù)據(jù)庫(kù)名稱。

本次的測(cè)試參考節(jié)點(diǎn)如下:

  
 
 
 
  1.  
  2.      
  3.      
  4.      
  5.     

本次配置了5個(gè)邏輯數(shù)據(jù)節(jié)點(diǎn),對(duì)應(yīng)5個(gè)邏輯主機(jī),對(duì)應(yīng)的是后端同一個(gè)數(shù)據(jù)庫(kù)szabm7。

5、增加MyCat分片規(guī)則

MyCat的分片規(guī)則,表明該表按什么算法規(guī)則進(jìn)行分節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)?,F(xiàn)在MySQL支持多種的分片規(guī)則,本次的分片規(guī)則采用最簡(jiǎn)單的求模取余。

  
 
 
 
  1.  
  2.              
  3.                     ACCT_BALANCE_ID 
  4.                     mod-long_abm 
  5.              
  6.      
  7.      
  8.              
  9.                     COUNTER_ID 
  10.                     mod-long_abm 
  11.              
  12.      
  13.      
  14.              
  15.                     SUBSID 
  16.                     mod-long_abm 
  17.              
  18.      
  19.      
  20.              
  21.                     RESOURCE_ID 
  22.                     mod-long_abm 
  23.              
  24.      
  25.      
  26.              
  27.             
  28.     

MyCat服務(wù)驗(yàn)證

1、檢查MyCat服務(wù)的端口狀態(tài)

在使用MySQL客戶端登陸驗(yàn)證之前,可以先檢查MyCat的服務(wù)端口和管理端口是否存在。

參考命令如下:

  
 
 
 
  1. netstat -an | grep 8066 
  2. netstat -an | grep 9066

2、使用MySQL客戶端連接MyCat服務(wù)

可以使用MySQL客戶端連接MyCat服務(wù),特別注意端口是8066。

參考命令如下:

  
 
 
 
  1. mysql -uuser -puser -h127.0.0.1 -P8066 

網(wǎng)頁(yè)名稱:基于MyCat構(gòu)建MySQL分布式集群
URL地址:http://www.dlmjj.cn/article/dpiphsg.html