Mycat跨資料庫配置使用
阿新 • • 發佈:2019-02-14
需要的配置如下:
schema.xml配置 上面對從資料庫進行了從庫分片,所以需要對配置分片策略,對應於rule.xml檔案<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <!-- 邏輯庫的配置 --> <schema name="win_test" checkSQLschema="false" dataNode="dn_test"> <table name="user" primaryKey="ID" dataNode="dn_test_01,dn_test_02,dn_test_03" rule="sharding-by-test"> <!-- <childTable name="course" primaryKey="ID" joinKey="id" parentKey="id"> </childTable> --> </table> </schema> <!-- 資料節點配置 --> <dataNode name="dn_test" dataHost="dh_test" database="trc_test_db" /> <!-- 可以配置主從庫 --> <dataNode name="dn_test_01" dataHost="dh_test1" database="test_01" /> <dataNode name="dn_test_02" dataHost="dh_test1" database="test_02" /> <dataNode name="dn_test_03" dataHost="dh_test1" database="test_03" /> <!-- 叢集地址配置,可以在此新增需要加入mycat中的資料庫安裝的伺服器地址 --> <dataHost name="dh_test" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="host_test" url="127.0.0.1:3306" user="root" password="qq123456789"> </writeHost> </dataHost> <!-- 主從可以配置讀寫分離 --> <dataHost name="dh_test1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="host_test1" url="127.0.0.1:3306" user="root" password="qq123456789"> </writeHost> </dataHost> </mycat:schema>
<tableRule name="sharding-by-test"> <rule> <columns>id</columns> <algorithm>user</algorithm> </rule> </tableRule> <function name="test" class="org.opencloudb.route.function.PartitionByMurmurHash"> <property name="seed">0</property><!-- 預設是0 --> <property name="count">10</property><!-- 要分片的資料庫節點數量,必須指定,否則沒法分片 --> <property name="virtualBucketTimes">160</property><!-- 一個實際的資料庫節點被對映為這麼多虛擬節點,預設是160倍,也就是虛擬節點數是物理節點數的160倍 --> <!-- <property name="weightMapFile">weightMapFile</property> 節點的權重,沒有指定權重的節點預設是1。以properties檔案的格式填寫,以從0開始到count-1的整數值也就是節點索引為key,以節點權重值為值。所有權重值必須是正整數,否則以1代替 --> <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 用於測試時觀察各物理節點與虛擬節點的分佈情況,如果指定了這個屬性,會把虛擬節點的murmur hash值與物理節點的對映按行輸出到這個檔案,沒有預設值,如果不指定,就不會輸出任何東西 --> </function>
rule.xml配置
本配置只是簡單配置了分片,可以根據自身的需求來採用更加靈活的分片策略需要對mycat進行安全設定,需要對使用者進行訪問安全控制,修改檔案是server.xml
server.xml配置 一個使用者名稱只能對應一個<user></user>,如果需要兼用一個使用者訪問多個邏輯庫,可以用逗號隔開來控制。<property name="charset">utf8</property> <property name="defaultSqlParser">druidparser</property> <!-- <property name="useCompression">1</property>--> <!--1為開啟mysql壓縮協議--> <!-- <property name="processorBufferChunk">40960</property> --> <!-- <property name="processors">1</property> <property name="processorExecutor">32</property> --> <!--預設是65535 64K 用於sql解析時最大文字長度 --> <!--<property name="maxStringLiteralLength">65535</property>--> <!--<property name="sequnceHandlerType">0</property>--> <!--<property name="backSocketNoDelay">1</property>--> <!--<property name="frontSocketNoDelay">1</property>--> <!--<property name="processorExecutor">16</property>--> <!-- <property name="mutiNodeLimitType">1</property> 0:開啟小數量級(預設) ;1:開啟億級資料排序 <property name="mutiNodePatchSize">100</property> 億級數量排序批量 <property name="processors">32</property> <property name="processorExecutor">32</property> <property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --> </system> <user name="root"> <property name="password">xxxxxx</property> <property name="schemas">win_test,win_test1</property> </user>
如有同學有更深的理解或者想理解更多,歡迎交流