zoukankan      html  css  js  c++  java
  • MyCat数据库主键

      在现实的技术开发之中,对于数据表中的主键肯定不可能交由数据库独立生成,也就是说所有的主键都应该通过程序控制的形式来完成定义,那么这样一来所有的主键基本上都是以字符串的形式出现居多,如果现在使用的是字符串则必须根据字符串的内容实现水平分库,而如果使用的是数字,那么就可以采用之前的做法进行求模分库 。

    1. 使用一张新的数据库,而这张表之中的id使用字符串存储:

    DROP DATABASE IF EXISTS yootk ;
    CREATE DATABASE yootk CHARACTER SET UTF8 ;
    use yootk ;
    CREATE TABLE member(
       mid VARCHAR(50) ,
       name VARCHAR(50),
       CONSTRAINT pk_mid PRIMARY KEY(mid)
    ) ;

    2. 如果要想按照字符串的方式进行水平分库的话,这个时候就需要设置一个处理算法,修改rule.xml文件:

      》打开rule.xml配置文件:vim /usr/local/mycat/conf/rule.xml 

      》定义规则:

    <tableRule name="member-mid-murmur">
            <rule>
                    <columns>mid</columns>
                    <algorithm>member-murmur</algorithm>
            </rule>
    </tableRule>

      》定义算法:

    <function name="member-murmur"
            class="io.mycat.route.function.PartitionByMurmurHash">
            <property name="seed">0</property>
            <property name="count">3</property>
            <property name="virtualBucketTimes">160</property>
    </function>

    3. 修改schema.xml配置文件:vim /usr/local/mycat/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="member" primaryKey="mid" dataNode="dna,dnb,dnc" rule="member-mid-murmur"/>
            </schema>
            <dataNode name="dna" dataHost="localhost1" database="yootk" />
            <dataNode name="dnb" dataHost="localhost2" database="yootk" />
            <dataNode name="dnc" dataHost="localhost3" database="yootk" />
            <dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
                    <writeHost host="hostM1" url="192.168.195.148:3306" user="root" password="mysqladmin">
                            <readHost host="hostS2" url="192.168.195.149:3306" user="root" password="mysqladmin" />
                    </writeHost>
            </dataHost>
            <dataHost name="localhost2" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
                    <writeHost host="hostM1" url="192.168.195.150:3306" user="root" password="mysqladmin"/>
            </dataHost>
            <dataHost name="localhost3" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
            <writeHost host="hostM1" url="192.168.195.151:3306" user="root" password="mysqladmin"/>
            </dataHost>
    </mycat:schema>

    4. 重新启动MyCat进程:/usr/local/mycat/bin/mycat restart

    5. 登录数据库操作端口实现数据增加:

    mysql -uroot -p123456 -P8066 -DTESTDB -h127.0.0.1
    》增加数据:
    INSERT INTO member(mid,name) VALUES ('lee-a',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-b',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-c',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-d',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-e',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-f',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-g',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-h',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-i',@@hostname) ;
    INSERT INTO member(mid,name) VALUES ('lee-j',@@hostname) ;

      那么此时的数据是根据字符串的ID形式进行了分配处理;

  • 相关阅读:
    超强问卷调查系统源码购买及二次开发
    asp.net core mvc上传大文件解决方案
    asp.net core mvc发布后显示异常错误信息的方法
    基于.net core 2.0+mysql+AceAdmin搭建一套快速开发框架
    改造kindeditor支持asp.net core mvc上传文件
    Centos7 Nginx安装使用
    Centos7 守护进程supervisord 安装使用
    Centos7 .net core 2.0安装使用
    Centos7 Mysql安装
    Centos7 Redis安装
  • 原文地址:https://www.cnblogs.com/luliang888/p/11148172.html
Copyright © 2011-2022 走看看