中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

配置mod-long分片规则

  1. 配置schema.xml文件,schema.xml文件主要配置Mycat数据库、MySQL表、分片规则、分片类型。
    1. 打开文件。
      1
      vim /usr/local/mycat/conf/schema.xml
      
    2. 全部替换如下内容。
       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,可根据实际环境进行调整。

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  2. 启动Mycat。
    1. 启动Mycat。
      1
      mycat start
      
    2. 查看Mycat是否正常启动。
      1
      mycat status
      

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

  3. 连接Mycat数据库,执行数据插入操作。
    1. 编辑文件。
      vim /home/insert.sh
    2. 添加如下脚本内容。
      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
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行脚本。
      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条数据均匀分布在每个数据库分片。