mycatを使用して、MyCat-08のcentos7に水平シャーディングテーブルをデプロイします---デジタルレンジシャーディング

前の投稿「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

おすすめ

転載: blog.csdn.net/xoofly/article/details/105119275