mycat1.6.5分片(一致性hash)
阿新 • • 發佈:2018-12-19
mycat one群:106088787。
分片規則:一致性hash
一、conf/schema.xml檔案
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="partition_by_murmur_hash" primaryKey="id" dataNode="dn$0-2" rule="partition-by-murmur-hash" /> </schema> <dataNode name="dn0" dataHost="dh-1" database="db0"/> <dataNode name="dn1" dataHost="dh-1" database="db1"/> <dataNode name="dn2" dataHost="dh-1" database="db2"/> <dataHost name="dh-1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"> </writeHost> </dataHost> </mycat:schema>
二、 conf/rule.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://io.mycat/"> <tableRule name="partition-by-murmur-hash"> <rule> <columns>id</columns> <algorithm>partition-by-murmur-hash</algorithm> </rule> </tableRule> <function name="partition-by-murmur-hash" class="io.mycat.route.function.PartitionByMurmurHash"> <property name="seed">0</property><!-- 預設是0 --> <property name="count">2</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> </mycat:rule>
三、規則檔案資訊
無
四、測試用到的sql
五、注意事項=============按照id欄位 一致性hash ================ CREATE TABLE partition_by_murmur_hash (id int(10) null,`db_nm` varchar(20) NULL); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (1, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (2, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (3, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (4, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (5, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (6, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (7, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (8, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (9, database()); INSERT INTO `partition_by_murmur_hash` (id,db_nm) VALUES (10, database()); select * from partition_by_murmur_hash;
1、資料庫節點必須大於等於分片數
六、引數說明