linux环境安装Mycat及验证

环境

步骤

  1. 把下载到/root/mycat 并解压
cd /root/mycat
tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 
  1. 设置mycat环境变量
#编辑环境变量
 vim /etc/profile
#变更内容
JAVA_HOME=/usr/java/jdk1.8.0_171
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
MYCAT_HOME=/root/mycat/mycat
export PATH=$PATH:/usr/local/git/bin:$MYCAT_HOME/bin
#变量生效
source /etc/profile
  1. host绑定
#绑定host
vim /etc/hosts 
#绑定内容
机器ip mycat-server
127.0.0.1 mycat-server

4.设置 wrapper.java.command 的java 路径

#设置路径
vim /root/mycat/mycat/conf/wrapper.conf 
#编辑内容
wrapper.java.command=%JAVA_HOME%/bin/java 

5.修改servce.xml文件

#修改配置文件
cd /root/mycat/mycat/conf
vim server.xml
<property name="useSqlStat">1</property>  <!-- 1为开启实时统计、0为关闭 -->
<!--去掉如下的注释,使其生效-->
 <property name="maxStringLiteralLength">65535</property>
 <property name="sequnceHandlerType">0</property>
 <property name="backSocketNoDelay">1</property>
 <property name="frontSocketNoDelay">1</property>

6.修改schema.xml文件

#修改配置文件
cd /root/mycat/mycat/conf
vim schema.xml
# 修改内容
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
                <!-- auto sharding by id (long) -->
                <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
                <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
                        /> -->
        </schema>
        <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
                /> -->
        <dataNode name="dn1" dataHost="localhost1" database="mycat" />
        <dataNode name="dn2" dataHost="localhost2" database="mycat" />
        <dataNode name="dn3" dataHost="localhost3" database="mycat" />
        <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
         <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
        <dataNode       name="jdbc_dn2" dataHost="jdbchost" database="db2" />
        <dataNode name="jdbc_dn3"       dataHost="jdbchost" database="db3" /> -->
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="127.0.0.1:3306" user="root"
                                   password="password">
                </writeHost>
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>
        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="127.0.0.1:3306" user="root"
                                   password="password">
                </writeHost>
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>
        <dataHost name="localhost3" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="password:3306" user="root"
                                   password="password">
                </writeHost>
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>
</mycat:schema>

7.修改日志级别

#修改配置文件
cd /root/mycat/mycat/conf
vim log4j2.xml
#编辑内容
<asyncRoot level="debug" includeLocation="true">

8.启动服务

#启动
mycat start

#查看启用状态
 mycat status

验证

查询

首先同一台服务器上分库分表
分别创建mycat1、mycat2、mycat3 三个数据库并同时创建表mycat1
并各插入一条数据:
然后登陆mycat进行查询(端口8806)

select * from mycat1 
mycat查询

结果显示能查询出来。
再试试带条件执行:

select * from mycat1 where id =1
mycat带条件查询

带条件执行也是没有问题的

插入

看表mycat1配置的插入规则

#schema配置
<table name="mycat1" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
#rule配置
<tableRule name="auto-sharding-long">
                <rule>
                        <columns>id</columns>
                        <algorithm>rang-long</algorithm>
                </rule>
 </tableRule>
 <function name="rang-long"
                class="io.mycat.route.function.AutoPartitionByLong">
                <property name="mapFile">autopartition-long.txt</property>
    </function>
#autopartition-long.txt 配置
#K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2

插入数据

#插入数据库mycat1
INSERT into mycat1 VALUES(100,'100name',1,'100desc');
#插入数据库mycat2
INSERT into mycat1 VALUES(6000000,'6000000name',2,'6000000desc');
#插入数据库mycat3
INSERT into mycat1 VALUES(11000000,'11000000name',3,'11000000desc');

但是执行报错:


插入数据报错

提示带上所有字段,那我们带上字段再执行

INSERT into mycat1(id,name,pid,desc) VALUES(100,'100name',1,'100desc');
INSERT into mycat1(id,name,pid,desc)  VALUES(6000000,'6000000name',2,'5000000desc');
INSERT into mycat1(id,name,pid,desc)  VALUES(11000000,'11000000name',3,'11000000desc');

还是报错


插入还是报错

看出是表字段 dec 冲突了,那我们把dec换成 description
再执行插入语句

INSERT into mycat1(id,name,pid,description) VALUES(100,'100name',1,'100desc');
INSERT into mycat1(id,name,pid,description)  VALUES(5000000,'5000000name',2,'5000000desc');
INSERT into mycat1(id,name,pid,description)  VALUES(11000000,'11000000name',3,'11000000desc');

成功


插入成功

验证数据是否存入预想的库


100存入mycat1

6000000存入mycat

11000000存入mycat3

好奇:如果id大于1500M(15000000)会出入哪里:

INSERT into mycat1(id,name,pid,description)  VALUES(16000000,'16000000name',3,'16000000desc');
超出范围、插入失败

这个时候需要在配置文件指定defaultNode,默认节点

#修改rule.xml文件
vim rule.xml
#制定defaultNode
<function ndefaultNodeame="rang-long"
                class="io.mycat.route.function.AutoPartitionByLong">
                <property name="mapFile">autopartition-long.txt</property>
                <property name="defaultNode">0</property>
 </function>

重启mycat再插入超出范围数据

#重启mycat
mycat reatart
#重新插入查处范围的数据
INSERT into mycat1(id,name,pid,description)  VALUES(16000000,'16000000name',3,'16000000desc');

插入成功并且存储到制定的第一节点


超出范围的数据存储到指定的默认节点
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容