centos7 mycat安装 ,分库分表测试

安装mycat

  1. 安装JDK;

下载jdk 解压 放到/opt/jdk目录下

配置环境变量

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
  1. 安装mysql;
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
yum install  -y  mysql-community-server
  1. 启动mysql 并且修改root密码;
systemctl status mysqld.service
#获得初始root 密码
grep 'temporary password' /var/log/mysqld.log
#修改root 账户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#授权其他机器登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH  PRIVILEGES;
  1. 安装mycat;
cd /opt
#下载
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
#解压
tar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# 启动mycat
cd mycat/bin
./mycat start

测试分库分表

  1. 创建数据库
create database db01; 
use db01;
 CREATE TABLE user (  
    id INT NOT NULL AUTO_INCREMENT,  
    name varchar(50) NOT NULL default '',  
    indate DATETIME NOT NULL ,  
    PRIMARY KEY (id)  
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;  


create database db02;  
use db02;
 CREATE TABLE goods(  
    id INT NOT NULL AUTO_INCREMENT,  
    value INT NOT NULL default 0,  
    indate DATETIME NOT NULL ,  
    PRIMARY KEY (id)  
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

create database db03;  
use db03;
CREATE TABLE goods(  
    id INT NOT NULL AUTO_INCREMENT,  
    value INT NOT NULL default 0,  
    indate DATETIME NOT NULL ,  
    PRIMARY KEY (id)  
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8; 

2.配置mycat
conf/server.xml 中定义用户以及系统相关变量,如端口等.
conf/schema.xml 中定义逻辑库,表、分片节点等内容.
conf/rule.xml 中定义分片规则.

#server.xml
#添加用户
<user name="mycat">
            <property name="password">mycat</property>
            <property name="schemas">TESTDB</property>
</user>
		#schema.xml 
        <!-- 设置表的存储方式.schema name="TESTDB" 与 server.xml中的 TESTDB 设置一致  -->  
		<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
                <table name="user" primaryKey="id"  dataNode="node_db01" />
                <table name="goods" primaryKey="id" dataNode="node_db02,node_db03" rule="rule1" />
        </schema>
        <!--设置DataNode-->
        <dataNode name="node_db01" dataHost="dataHost01" database="db01" />
        <dataNode name="node_db02" dataHost="dataHost01" database="db02" />
        <dataNode name="node_db03" dataHost="dataHost01" database="db03" />
        <!--设置DataHost-->
        <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
            <heartbeat>select user()</heartbeat>
            <writeHost host="server1" url="127.0.0.1:3306" user="root" password="123456"/>
        </dataHost>
#rule.xml
	<!--修改rule-->
    <tableRule name="rule1">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
     <!-- 分片规则为模2运算 -->  
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">2</property>
    </function>

3.重启mycat

./mycat restart

4.测试插入数据

insert into user(name,indate) values('hello',now());
insert into user(name,indate) values('world',now());
insert into goods(id,value,indate) values(1,100,now());
insert into goods(id,value,indate) values(2,100,now());

5.连接数据库查看结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分库分表成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章