---
title: 配置mod-long分片规则
description: "1. 配置schema.xml文件，schema.xml文件主要配置Mycat数据库、MySQL表、分片规则、分片类型。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0020.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0020.html
indexId: 93cecc77ddbc1259cb0df077a84df5feab410260f8df6a22c139f51f6e4afc6769
---
# 配置mod-long分片规则

1. 配置schema.xml文件，schema.xml文件主要配置Mycat数据库、MySQL表、分片规则、分片类型。

  a. 打开文件。
    1 vim /usr/local/mycat/conf/schema.xml

  b. 全部替换如下内容。
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="sysbench" checkSQLschema="false" > <table name="users" primaryKey="id" dataNode="dn1,dn2,dn3" rule="mod-long" autoIncrement="true" fetchStoreNodeByJdbc="true"> </table> </schema> <dataNode name="dn1" dataHost="dh1" database="sysbench" /> <dataNode name="dn2" dataHost="dh2" database="sysbench" /> <dataNode name="dn3" dataHost="dh3" database="sysbench" /> <dataHost name="dh1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3309" user="root" password="123456"> <readHost host="lh" url="localhost:3309" user="root" password="123456"/> </writeHost> </dataHost> <dataHost name="dh2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3310" user="root" password="123456"> <readHost host="lh" url="localhost:3310" user="root" password="123456"/> </writeHost> </dataHost> <dataHost name="dh3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3311" user="root" password="123456"> <readHost host="lh" url="localhost:3311" user="root" password="123456"/> </writeHost> </dataHost> </mycat:schema>

    该示例将users表按照mod-long分片规则，将数据平均分散到三个数据库中，配置每个数据库的用户密码、IP地址和端口，该示例将Mycat和MySQL数据库部署在同一台物理机上，IP地址采用localhost，可根据实际环境进行调整。

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 启动Mycat。

  a. 启动Mycat。
    1 mycat start

  b. 查看Mycat是否正常启动。
    1 mycat status

    回显内容与图片内容一致，则表示已正常启动。

3. 连接Mycat数据库，执行数据插入操作。

  a. 编辑文件。
    1 vim /home/insert.sh

  b. 添加如下脚本内容。
    1 2 3 4 5 #!/bin/bash for i in {1..10000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into users(id,name) values($i,'ccc')" done

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行脚本。
    1 sh /home/insert.sh

4. 查看数据分布。
  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql1.sock -Dsysbench -e "select count(*) from users"

  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql2.sock -Dsysbench -e "select count(*) from users"

  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql3.sock -Dsysbench -e "select count(*) from users"

  10000条数据均匀分布在每个数据库分片。
