mycat+sqlServer简单demo配置

博客参考https://www.cnblogs.com/jpfss/p/8193513.html

1.Mycat介绍

Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。

2.Mycat基础环境搭建

首先需要下载Mycat必需的一些环境: 
jdk下载(1.7以上) –mycat是基于java开发的,需要java编译环境 
native
mycat


1) JDK 下载 
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 
注:必须 JDK7 或更高版本. 
2) MySQL 下载 
http://dev.mysql.com/downloads/mysql/5.5.html#downloads 
注:MyCAT 支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用 
MySQL 做集群。 
3) MyCAT 项目主页 
https://github.com/MyCATApache/ 

注:MyCAT 相关源码、文档都可以在此地址下进行下载

3.Mycat配置

为了快速跑起一个Mycat demo,我们先在本地数据库里面建立mycat_lck_testdb、mycat_lck_db1、mycat_lck_db2数据库,创建一个名为sys_user的表,字段为user_id(int)及username(varchar)

Mycat的主要配置文件在其conf目录下面,分别是server.xml、schema.xml和rule.xml,为快速启动mycat,我们按照配置的顺序和主要配置项说明。 
1)server.xml 
这里主要配置mycat的用户和权限信息,这里的账户用于后面连接mycat使用。 
快速入门可以简单这样配置: 

schemas是后面schema.xml里面配置的DB,例如:我这里配置了一个用户名为sa,密码为123456的账户,默认只能访问mycat_lck_testdb

<user name="sa">
<property name="password">123456</property>
<property name="schemas">mycat_lck_testdb</property>

</user>

2)schema.xml 
这里主要配置数据库信息,一个schema就是一个逻辑库,可以理解为Mycat管理的一个数据库DB(实际上不存在,是一个虚拟的概念)name属性和server.xml里面对应。 
table是Mycat的逻辑表,这里我们配置一个名为sys_user的逻辑表 
dataNode属性是将其绑定在真实数据库中的数据节点中,这里我们配置了三个dataNode,分别是mycat_lck_testdb、mycat_lck_db1、mycat_lck_db2数据库,注意,这三个数据库的真实表名需和table的name一致 

dataHost属性就是我们熟悉的mysql连接,这里我们都用本地作为一台服务器,也可以配置不同服务器上的不同mysql,这里还可以配置读写分离,我们先不考虑。 需要配置ip地址、用户和密码

<writeHost host="hostM1" url="jdbc:sqlserver://ip:1433" user="sa" password="123456" >

rule属性就是分片规则,这里用的是名称,需在下一步的rule.xml里面定义好

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="mycat_lck_testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn0">
    <table name="sys_user" dataNode="dn1,dn2" rule="mod-long" />
</schema>
<dataNode name="dn0" dataHost="sqlserver1" database="mycat_lck_testdb" />
<dataNode name="dn1" dataHost="sqlserver1" database="mycat_lck_db1" />
<dataNode name="dn2" dataHost="sqlserver1" database="mycat_lck_db2" />
    <dataHost name="sqlserver1" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="sqlserver" dbDriver="jdbc">
<heartbeat></heartbeat>
<connectionInitSql></connectionInitSql>
<writeHost host="hostM1" url="jdbc:sqlserver://ip:1433" user="sa" password="123456" >
</writeHost>
</dataHost>

</mycat:schema>

3)rule.xml 

这里我们主要配置的是分片规则,Mycat支持很多分片规则,我们使用的是一个较为简单的取模规则,即根据columns标签里面的id属性来取模,count属性定义为数据节点的个数。

<tableRule name="rule1">
<rule>
<columns>user_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>

</function>

3)需要用到的jar包

sqljdbc4-4.0.jar

4.Mycat启动

1)window启动: 
window上启动mycat需要用cmd命令到mycat的bin目录下面,执行startup_nowrap.bat命令成功即可 

当看到如下图显示的启动成功标识说明mycat启动成功 
这里写图片描述  

5.Mycat使用

启动mycat成功后,我们通过本地sql连接工具,如Navicat建立到mycat的链接,连接选择mysql类型,其默认端口是8066,如果连接成功,可通过命令行执行一条插入语句的sql,如 
insert into  sys_user(user_id,username) values(14,'name14');查看是否插入到指定分库的表里面,若成功,说明Mycat可以正常使用 


项目demo下载https://download.csdn.net/download/a13631477685/10431601

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页