前の投稿「mycatを使用してMyCat-07のcentos7に水平サブテーブルをデプロイする---シャード列挙」からの続き
1.目標
mycatを使用してシャード列挙をデプロイします。
デジタル範囲の断片化とは何ですか?
テーブル内の指定されたフィールド値(number int type)の範囲に応じたフラグメント。たとえば、1〜3000の値はノード1サーバーに配置され、3001〜5000の値はノード2サーバーに配置されます。 。ルールの範囲内にないものは、指定されたデフォルトノードサーバーに配置されます。
次に、mycatデジタルレンジシャーディングを実装します
1./usr/local/mycat/conf/shcema.xmlを変更します。
<schema>に<tablename = "salary" dataNode = "dn1、dn2" rule = "auto_sharding_long"> </ table>の行を追加します。これは、salaryというテーブルがあり、dn1とdn2にフラグメント化されていることを意味します。ノードサーバーでは、シャーディングルールはauto_sharding_longと呼ばれます(rule.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" dataNode="dn1">
<table name="teacher" dataNode="dn2"></table>
<table name="student" dataNode="dn1,dn2" rule="mod_rule">
<childTable name="student_record" primaryKey="xid" joinKey="student_id" parentKey="xid" />
</table>
<table name="xuser" dataNode="dn1,dn2" type="global"></table>
<table name="salary" dataNode="dn1,dn2" rule="auto_sharding_long"></table>
</schema>
<dataNode name="dn1" dataHost="host1" database="xkahn" />
<dataNode name="dn2" dataHost="host2" database="xkahn" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="10.100.100.31:3306" user="root"
password="123123">
</writeHost>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="10.100.100.32:3306" user="root"
password="123123">
</writeHost>
</dataHost>
</mycat:schema>
2./usr/local/mycat/conf/rule.xmlにフラグメンテーションアルゴリズムを追加します
<tableRule name="auto_sharding_long">
<rule>
<columns>money</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
3./usr/local/mycat/conf/rule.xmlのrang-longアルゴリズムを変更します
将
<functionname = "rang-long"
class = "io.mycat.route.function.AutoPartitionByLong">
<property name = "mapFile"> autopartition-long.txt </ property>
</ function>
改是:
<function name = "rang-long"
class = "io.mycat.route.function.AutoPartitionByLong">
<property name = "mapFile"> autopartition-long.txt </ property>
<property name = "defaultNode" > 0 </プロパティ>
</機能>
注:デフォルトノードを追加します。つまり、このアルゴリズムにデータが含まれていない場合、このデータはデフォルトのmycatノードサーバー0(最初のノードサーバー)に保存され、1は2番目のサーバーと同じです。ノードサーバー。
4.アルゴリズムファイル/usr/local/mycat/conf/autopartition-long.txt
を変更して、元のファイルをすべて「#」でコメントアウトするか、すべて削除します。次に、次の2行を追加します
0-3000=0
3001-5000=1
注:これは、給与の範囲が0〜3,000元の教師の給与が最初のノードサーバーに配置され、給与の範囲が3001〜5,000元の教師の給与が2番目のノードサーバーに配置されることを意味します。
5. mycat31の新しいターミナルを開いて、mycatを起動します
cd /usr/local/mycat/bin
./mycat console
6. mycat31の新しい端末を開き、mycatのデータ管理プラットフォームに入ります。今回
は番号範囲スライステーブルの給与を作成し、テストデータを挿入します。
mysql -umycat -p123456 -h 192.168.73.100 -P 8066
use TESTDB;
create table salary(xid int(10) not null unique primary key,name varchar(20) not null,teacher_id int(10),money int(10),note varchar(500));
insert into salary(xid,name,teacher_id,money,note) values (1,"kahn",3721,3690,"kahn保安岗位工资3690元");
insert into salary(xid,name,teacher_id,money,note) values (2,"serena",129,3000,"serena的工资是3000元");
insert into salary(xid,name,teacher_id,money,note) values (3,"songsuer",138,2000,"宋姝儿的工资是2000元");
insert into salary(xid,name,teacher_id,money,note) values (4,"柳多妍",139,9999,"柳多妍的工资是9999津巴布韦币");
insert into salary(xid,name,teacher_id,money,note) values (5,"xia",3312,6613,"xia的工资是6613元");
IDが1でkahnという名前のデータのみを2番目のノードサーバーmycat32に配置し、残りは最初のノードサーバーmycat31に配置する必要があることに注意してください。
7. mycatには、データが存在するかどうかを確認する2つの物理サーバーがあります(ルールに従って断片化されているかどうかを確認します)。select
* from salary;
a。3690は3000より大きいため、2番目のmysqlサーバーに自動的に割り当てられます。b。3000は3001未満である
ため、最初のmysqlサーバーに割り当てられました
。c.2000は3001未満であったため、最初のmysqlサーバーに割り当てられました
。d.9999は5000より大きく、条件が満たされていないため、デフォルトサーバー<最初のmysqlサーバー>に割り当てられました
e.6613が5000より大きく、条件が満たされていないため、デフォルトサーバー<最初のmysqlサーバー>に割り当てられます
------------------ END -------------- 2020年3月26日15:33:50 ------- ---------------------------------
古い鉄のダブルクリック666