日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mycat配置访问oracle_教程 | MySql都会了,确定不学习一下MyCat分片?

發(fā)布時間:2024/4/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mycat配置访问oracle_教程 | MySql都会了,确定不学习一下MyCat分片? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是MyCat
官方網(wǎng)站::http://www.mycat.org.cn/ http://www.mycat.io/ db proxy MycatMyCat 架構(gòu)

MyCat 核心概念Schema
Schema:由它指定邏輯數(shù)據(jù)庫(相當(dāng)于MySQL的database數(shù)據(jù)庫)Table
Table:邏輯表(相當(dāng)于MySQL的table表)DataNode
DataNode:真正存儲數(shù)據(jù)的物理節(jié)點(diǎn)DataHost
DataHost:存儲節(jié)點(diǎn)所在的數(shù)據(jù)庫主機(jī)(指定MySQL數(shù)據(jù)庫的連接信息)User
User:MyCat的用戶(類似于MySQL的用戶,支持多用戶)MyCat 主要解決問題

  • 海量數(shù)據(jù)保存 2。查詢優(yōu)化
  • MyCat 對多數(shù)據(jù)庫的支持

    MyCat 分片策略
    MyCAT支持水平分片與垂直分片:水平分片:一個表格的數(shù)據(jù)分割到多個節(jié)點(diǎn)上,按照行分隔。垂直分片:一個數(shù)據(jù)庫中多個表格A,B,C,A存儲到節(jié)點(diǎn)1上,B存儲到節(jié)點(diǎn)2上,C存儲到節(jié)點(diǎn)3 上。

    MyCAT通過定義表的分片規(guī)則來實(shí)現(xiàn)分片,每個表格可以捆綁一個分片規(guī)則,每個分片規(guī)則指定一個分 片字段并綁定一個函數(shù),來實(shí)現(xiàn)動態(tài)分片算法。Schema
    Schema:邏輯庫,與MySQL中的Database(數(shù)據(jù)庫)對應(yīng),一個邏輯庫中定義了所包括的Table。Table
    Table:表,即物理數(shù)據(jù)庫中存儲的某一張表,與傳統(tǒng)數(shù)據(jù)庫不同,這里的表格需要聲明其所存儲的 邏輯數(shù)據(jù)節(jié)點(diǎn)DataNode。在此可以指定表的分片規(guī)則。DataNode
    DataNode:MyCAT的邏輯數(shù)據(jù)節(jié)點(diǎn),是存放table的具體物理節(jié)點(diǎn),也稱之為分片節(jié)點(diǎn),通過 DataHost來關(guān)聯(lián)到后端某個具體數(shù)據(jù)庫上DataHost
    DataHost:定義某個物理庫的訪問地址,用于捆綁到Datanode上MyCat 安裝下載MyCat
    wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-
    linux.tar.gz解壓縮
    tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz進(jìn)入mycat/bin,啟動MyCat
    - 啟動命令:./mycat start
    - 停止命令:./mycat stop
    - 重啟命令:./mycat restart
    - 查看狀態(tài):./mycat status訪問MyCat
    使用mysql的客戶端直接連接mycat服務(wù)。默認(rèn)服務(wù)端口為【8066】
    mysql -uroot -p123456 -h127.0.0.1 -P8066MyCat 分片配置schema.xml什么是schema.xml
    schema.xml作為Mycat中重要的配置文件之一,管理著Mycat的邏輯庫、表、分片規(guī)則、DataNode 以及DataHost之間的映射關(guān)系。弄懂這些配置,是正確使用Mycat的前提。schema 標(biāo)簽用于定義MyCat實(shí)例中的邏輯庫 Table 標(biāo)簽定義了MyCat中的邏輯表 dataNode 標(biāo)簽定義了MyCat中的數(shù)據(jù)節(jié)點(diǎn),也就是我們通常說所的數(shù)據(jù)分片。dataHost標(biāo)簽在mycat邏輯庫中也是作為最底層的標(biāo)簽存在,直接定義了具體的數(shù)據(jù)庫實(shí)例、讀 寫分離配置和心跳語句。Schema.xml 配置
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    <!--
    schema : 邏輯庫 name:邏輯庫名稱
    sqlMaxLimit:一次取多少條數(shù)據(jù) 要超過用limit xxx
    table:邏輯表
    dataNode:數(shù)據(jù)節(jié)點(diǎn) 對應(yīng)datanode標(biāo)簽
    rule:分片規(guī)則,對應(yīng)rule.xml
    subTables:子表
    primaryKey:分片主鍵 可緩存
    -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
    <!-- auto sharding by id (long) -->
    配置Server.xml
    server.xml介紹
    server.xml幾乎保存了所有mycat需要的系統(tǒng)配置信息。最常用的是在此配置用戶名、密碼及權(quán)限。
    server.xml配置
    配置rule.xml
    rule.xml里面就定義了我們對表進(jìn)行拆分所涉及到的規(guī)則定義。我們可以靈活的對表使用不同的分片算
    法,或者對表使用相同的算法但具體的參數(shù)不同。這個文件里面主要有tableRule和function這兩個標(biāo)
    簽。在具體使用過程中可以按照需求添加tableRule和function。
    此配置文件可以不用修改,使用默認(rèn)即可。
    <table name="item" dataNode="dn1,dn2,dn3" rule="mod-long"
    primaryKey="ID"/>
    </schema>
    <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
    /> -->
    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost1" database="db2" />
    <dataNode name="dn3" dataHost="localhost1" database="db3" />
    <!--
    dataHost : 數(shù)據(jù)主機(jī)(節(jié)點(diǎn)主機(jī))
    balance:1 :讀寫分離 0 :讀寫不分離
    writeType:0 第一個writeHost寫, 1 隨機(jī)writeHost寫
    dbDriver:數(shù)據(jù)庫驅(qū)動 native:MySQL JDBC:Oracle、SQLServer
    switchType:是否主動讀
    1、主從自動切換 -1 不切換 2 當(dāng)從機(jī)延時超過slaveThreshold值時切換為主讀
    -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1"
    slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="192.168.24.129:3306" user="root"
    password="root" >
    </writeHost>
    </dataHost>
    </mycat:schema>配置server.xmlserver.xml 介紹
    server.xml幾乎保存了所有mycat需要的系統(tǒng)配置信息。最常用的是在此配置用戶名、密碼及權(quán)限。server.xml 配置
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="defaultSqlParser">druidparser</property>
    </system>
    <user name="mycat">
    <property name="password">mycat</property>
    <property name="schemas">TESTDB</property>
    </user>
    </mycat:server>配置rule.xml
    rule.xml里面就定義了我們對表進(jìn)行拆分所涉及到的規(guī)則定義。我們可以靈活的對表使用不同的分片算 法,或者對表使用相同的算法但具體的參數(shù)不同。這個文件里面主要有tableRule和function這兩個標(biāo) 簽。在具體使用過程中可以按照需求添加tableRule和function。此配置文件可以不用修改,使用默認(rèn)即可
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:rule SYSTEM "rule.dtd">
    <mycat:rule xmlns:mycat=”http://io.mycat/“ >
    <tableRule name="sharding-by-intfile">
    <rule>
    <columns>sharding_id</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>
    </function>
    </mycat:rule>tableRule 標(biāo)簽配置說明:
    name 屬性指定唯一的名字,用于標(biāo)識不同的表規(guī)則 rule 標(biāo)簽則指定對物理表中的哪一列進(jìn)行拆分和使用什么路由算法。columns 內(nèi)指定要拆分的列名字。algorithm 使用 function 標(biāo)簽中的 name 屬性。連接表規(guī)則和具體路由算法。當(dāng)然,多個表規(guī)則 可以連接到同一個路由算法上。table 標(biāo)簽內(nèi)使用。讓邏輯表使用這個規(guī)則進(jìn)行分片。function 標(biāo)簽配置說明:
    name 指定算法的名字。class 制定路由算法具體的類名字。property 為具體算法需要用到的一些屬性。幾個常用的分片規(guī)則連續(xù)分片日期列分區(qū)法
    <!--按固定時間分片-->
    <tableRule name="sharding-by-date">
    <rule>
    <columns>create_time</columns>
    <algorithm>sharding-by-date</algorithm>
    </rule>
    </tableRule>
    <function name="sharding-by-date"
    class="io.mycat.route.function..PartitionByDate">
    <property name="dateFormat">yyyy-MM-dd</property>
    <property name="sBeginDate">2014-01-01</property>
    <property name="sPartionDay">10</property>
    </function>
    <!--按自然月分片-->
    <tableRule name="sharding-by-month">
    <rule>
    配置說明:
    tableRule標(biāo)簽:
    columns :標(biāo)識將要分片的表字段
    algorithm :指定分片函數(shù)
    function標(biāo)簽:
    dateFormat :日期格式
    sBeginDate :開始日期
    sPartionDay :分區(qū)天數(shù),即默認(rèn)從開始日期算起,分隔10天一個分區(qū)
    二、范圍約定
    配置說明:
    tableRule標(biāo)簽:
    <columns>create_time</columns>
    <algorithm>sharding-by-month</algorithm>
    </rule>
    </tableRule>
    <function name="sharding-by-month"
    class="io.mycat.route.function..PartitionByMonth">
    <property name="dateFormat">yyyy-MM-dd</property>
    <property name="sBeginDate">2014-01-01</property>
    </function>
    <!--
    按單月小時分片
    適合做日志,每月末,手工清理
    -->
    <tableRule name="sharding-by-hour">
    <rule>
    <columns>create_time</columns>
    <algorithm>sharding-by-hour</algorithm>
    </rule>
    </tableRule>
    <function name="sharding-by-hour"
    class="io.mycat.route.function..LastestMonthPartition">
    <property name="splitOneDay">24</property>
    </function>
    配置說明 tableRule標(biāo)簽:columns :標(biāo)識將要分片的表字段 algorithm :指定分片函數(shù) function標(biāo)簽:dateFormat :日期格式 sBeginDate :開始日期 sPartionDay :分區(qū)天數(shù),即默認(rèn)從開始日期算起,分隔10天一個分區(qū)范圍約定
    <tableRule name="auto-sharding-long">
    <rule>
    <columns>user_id</columns>
    <algorithm>rang-long</algorithm>
    </rule>
    </tableRule>
    <function name="rang-long"
    class="io.mycat.route.function.AutoPartitionByLong">
    <property name="mapFile">autopartition-long.txt</property>
    </function>
    配置說明 tableRule標(biāo)簽:columns :標(biāo)識將要分片的表字段 algorithm :指定分片函數(shù) function標(biāo)簽:mapFile :指定分片函數(shù)需要的配置文件名稱
    autopartition-long.txt文件內(nèi)容:所有的節(jié)點(diǎn)配置都是從0開始,及0代表節(jié)點(diǎn)1,此配置非常簡單,即預(yù)先制定可能的id范圍對應(yīng)某個分 片
    # range start-end ,data node index
    # K=1000,M=10000.
    0-500M=0 0-100 0
    500M-1000M=1 101-200 1
    201-300 2
    1000M-1500M=2
    default=0
    # 或以下寫法
    # 0-10000000=0
    # 10000001-20000000=1
    優(yōu)勢:擴(kuò)容無需遷移數(shù)據(jù) 缺點(diǎn):熱點(diǎn)數(shù)據(jù),并發(fā)受限離散分片枚舉法
    <tableRule name="sharding-by-intfile">
    <rule>
    <columns>user_id</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>
    配置說明 tableRule標(biāo)簽:columns :標(biāo)識將要分片的表字段 algorithm :指定分片函數(shù) function標(biāo)簽:mapFile :指定分片函數(shù)需要的配置文件名稱 type :默認(rèn)值為0,0表示Integer,非零表示String defaultNode :指定默認(rèn)節(jié)點(diǎn),小于0表示不設(shè)置默認(rèn)節(jié)點(diǎn),大于等于0表示設(shè)置默認(rèn)節(jié)點(diǎn),0代表節(jié) 點(diǎn)1。
    默認(rèn)節(jié)點(diǎn)的作用:枚舉分片時,如果碰到不識別的枚舉值,就讓它路由到默認(rèn)節(jié)點(diǎn)。如果不配置默認(rèn)節(jié)點(diǎn)(defaultNode值小于0表示不配置默認(rèn)節(jié)點(diǎn)),碰到不識別的枚舉值 就會報錯:
    partition-hash-int.txt 配置:
    10000=0 列等于10000 放第一個分片
    10010=1
    男=0
    女=1
    beijing=0
    tianjin=1
    zhanghai=2求模法
    <tableRule name="mod-long">
    <rule>
    <columns>user_id</columns>
    <algorithm>mod-long</algorithm>
    </rule>
    </tableRule>
    <function name="mod-long"
    class="io.mycat.route.function.PartitionByMod">
    <!-- how many data nodes -->
    <property name="count">3</property>
    </function>
    tableRule標(biāo)簽:columns :標(biāo)識將要分片的表字段 algorithm :指定分片函數(shù) function標(biāo)簽:count :節(jié)點(diǎn)數(shù)量一致性hash
    <tableRule name="sharding-by-murmur">
    <rule>
    <columns>user_id</columns>
    <algorithm>murmur</algorithm>
    </rule>
    </tableRule>
    <function name="murmur"
    class="io.mycat.route.function.PartitionByMurmurHash">
    <!-- 默認(rèn)是0 -->
    <property name="seed">0</property>
    <!-- 要分片的數(shù)據(jù)庫節(jié)點(diǎn)數(shù)量,必須指定,否則沒法分片 -->
    <property name="count">2</property>
    <!-- 一個實(shí)際的數(shù)據(jù)庫節(jié)點(diǎn)被映射為這么多虛擬節(jié)點(diǎn),默認(rèn)是160倍,也就是虛擬節(jié)點(diǎn)數(shù)是物理節(jié)點(diǎn)數(shù)
    的160倍 -->
    <property name="virtualBucketTimes">160</property>
    <!-- <property name="weightMapFile">weightMapFile</property> 節(jié)點(diǎn)的權(quán)重,沒有指
    定權(quán)重的節(jié)點(diǎn)默認(rèn)是1。以properties文件的格式填寫,以從0開始到count-1的整數(shù)值也就是節(jié)點(diǎn)索引為
    key,以節(jié)點(diǎn)權(quán)重值為值。所有權(quán)重值必須是正整數(shù),否則以1代替 -->
    <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property>
    用于測試時觀察各物理節(jié)點(diǎn)與虛擬節(jié)點(diǎn)的分布情況,如果指定了這個屬性,會把虛擬節(jié)點(diǎn)的murmur
    hash值與物理節(jié)點(diǎn)的映射按行輸出到這個文件,沒有默認(rèn)值,如果不指定,就不會輸出任何東西 -->
    </function>

    等,還有一些其他分片,這里,暫時不說明測試分片
    把商品表分片存儲到三個數(shù)據(jù)節(jié)點(diǎn)上。

    創(chuàng)建表
    配置完畢后,重新啟動mycat。使用mysql客戶端連接mycat,創(chuàng)建表。
    CREATE TABLE item (
    id int(11) NOT NULL,
    name varchar(20) DEFAULT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8分片測試
    分片策略指定為“auto-sharding-long” 分片規(guī)則指定為“mod-long”

    總結(jié)

    以上是生活随笔為你收集整理的mycat配置访问oracle_教程 | MySql都会了,确定不学习一下MyCat分片?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。