mycat分库分表(超详细)

引言

本文将从零开始进行分库分表,包括环境的安装;

正文

1,安装JDK,我的是1.8版本
2,安装MYSQL(必须5.5以上),我的是5.5版本
3,下载mycat

准备工作

创建三个数据库与三张表,用于测试

create database db01 ;
use db01;
 CREATE TABLE users ( 
    id INT NOT NULL AUTO_INCREMENT, 
    name varchar(50) NOT NULL default '', 
    indate DATETIME NOT NULL default '0000-00-00 00:00:00', 
    PRIMARY KEY (id) 
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8; 

create database db02;
use db02;
 CREATE TABLE item ( 
    id INT NOT NULL AUTO_INCREMENT, 
    value INT NOT NULL default 0, 
    indate DATETIME NOT NULL default '0000-00-00 00:00:00', 
    PRIMARY KEY (id) 
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
create database db03;
use db03;
CREATE TABLE item ( 
    id INT NOT NULL AUTO_INCREMENT, 
    value INT NOT NULL default 0, 
    indate DATETIME NOT NULL default '0000-00-00 00:00:00', 
    PRIMARY KEY (id) 
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

配置文件

建议备份后,我的配置全部复制过去,等熟练了自己再设置

schema.xml





  
     
        
select user()

server.xml





	 
             
                druidparser 
                1 
                8066 
                9066  
         
         
         
                test 
                TESTDB 
         
 
         
                user 
                TESTDB 
                true 
         
         



rule.xml





	
        
            id
            mod-long
        
    
 
    
        
        2
    


注意

这个是在bin目录下的startup_nowrap.bat(没有报内存错误可不修改),
改动的是**-Xms512M -Xmx512M**(原本是-Xms1G -Xmx2G)


REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set. 
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
set "CURR_DIR=%cd%"
cd ..
set "MYCAT_HOME=%cd%"
cd %CURR_DIR%
"%JAVA_CMD%" -server -Xms512M -Xmx512M -XX:MaxPermSize=64M  -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.MycatStartup

测试

如果配置没问题就到测试阶段了

第一步

使用命令行,mycat的bin目录下启动startup_nowrap.bat
在这里插入图片描述
成功后可以在log文件下查看日志

第二步

找到mysql的bin目录,在命令行输入:mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
mycat分库分表(超详细)_第1张图片

第三步

依次执行SQL

insert into users(name,indate) values('kk',now());
insert into users(name,indate) values('ss',now());
insert into item(id,value,indate) values(1,100,now());
insert into item(id,value,indate) values(2,100,now());
最终看到:
mycat分库分表(超详细)_第2张图片

第四步

查看数据库
db01中的users表
在这里插入图片描述
db02中的item表
在这里插入图片描述
db03中的item表
在这里插入图片描述
显示,插入的users表中的数据全部在db01中,而item表中的数据通过Id取模后均匀的分布在db02db03中。这样就根据实际的路由策略进行了分表。
mycat分库分表(超详细)_第3张图片

你可能感兴趣的:(数据库)