百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

MyCat系列--安装与基本使用(mycat下载)

yuyutoo 2025-04-30 20:54 29 浏览 0 评论

MyCat系列--安装与基本使用

  1. 简介

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

发展到目前,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB等NoSQL。

以下是其1.6版本的架构,图片来自其官方网站。

  1. 安装

前提条件:JDK

运行startup_nowrap.bat

如出现以下类似的问题:

解决方法:

编辑startup_nowrap.bat

修改

"%JAVA_CMD%" -server -Xms1G -Xmx2G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.MycatStartup

"%JAVA_CMD%" -server -Xms1G -Xmx1G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.MycatStartup

再次运行startup_nowrap.bat:

注意:因为以上并未做任何配置,所以,服务是连接不上数据库的,具体错误信息,可以从日志mycat.log中看到。

  1. 配置

接下来,以一个相对比较完整的配置示例来解释如何进行配置。

示例需求:针对同一台MySQL服务器上的一个表进行分库分表,且按照【省份】进行分类存储,存储规则如下:

省份

存储位置

hubei

db_user_1.t_vote

tianjin

db_user_2.t_vote

guangdong

db_user_3.t_vote

其它

db_user_1.t_vote

MySQL中存储结构如下所示:

表定义如下:

CREATE TABLE `t_vote` (

`id` varchar(10) DEFAULT NULL,

`province` varchar(10) DEFAULT NULL

)

为了实现以上需求,需要依次做如下配置:

3.1 配置server.xml

<user name="root" defaultAccount="true">

<property name="password">123456</property>

<property name="schemas">TESTDB</property>

<property name="defaultSchema">TESTDB</property>


<!-- 表级 DML 权限设置 -->

<!--

<privileges check="false">

<schema name="TESTDB" dml="1111" >

</schema>

</privileges>

-->

</user>

<user name="user">

<property name="password">user</property>

<property name="schemas">TESTDB</property>

<property name="readOnly">true</property>

<property name="defaultSchema">TESTDB</property>

</user>

这里配置了两个可以来连接的用户

用户1 :root 密码:123456

用户2 :user 密码:user 给予了此用户TESTDB数据库的只读权限

注意:这里的testdb不一定是数据库上的真实库名,可以任意指定,只要和schema.xml的配置文件中的库名统一即可。

3.2 配置rule.xml

增加如下信息:

<tableRule name="sharding_by_intfile_test">

<rule>

<columns>province</columns>

<algorithm>sharding_int_test</algorithm>

</rule>

</tableRule>

<function name="sharding_int_test"

class="io.mycat.route.function.PartitionByFileMap">

<property name="mapFile">partition-hash-int-test.txt</property>

<property name="type">1</property>

<property name="defaultNode">0</property>

</function>

备注:

Rule名:sharding_by_intfile_test

列名:表t_vote的列province

分片函数名:sharding_int_test

分片配置文件名:
partition-hash-int-test.txt

3.3 配置
partition-hash-int-test.txt

在conf目录下,新建
partition-hash-int-test.txt,并输入以下文本:

hubei=0

tianjin=1

guangdong=2

代表:

hubei分发到第一个节点

tianjin分发到第二个节点

guangdong分发到第三个节点

3.4 配置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" randomDataNode="dn1">

<table name="t_vote" dataNode="dn1,dn2,dn3" rule="sharding_by_intfile_test">

</table>

</schema>

<dataNode name="dn1" dataHost="localhost" database="db_user_1" />

<dataNode name="dn2" dataHost="localhost" database="db_user_2" />

<dataNode name="dn3" dataHost="localhost" database="db_user_3" />

<dataHost name="localhost" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="localhost" url="localhost:3306" user="root"

password="123456">

</writeHost>

</dataHost>

</mycat:schema>

dataNode:数据节点,配置了dn1,dn2,dn3,分别指向不同的服务器及其数据库,这里也就是数据分片的配置。本示例为了简单,配置到同一台服务器的不同数据库上。

  1. 验证

在完成上述示例的所有配置后,运行startup_nowrap.bat,可查看日志文件mycat.log内容,可以看到如下信息:

MyCat服务正在监听8066端口。

接下来,我们使用server.xml中的用户连接mycat。

连接成功后,显示如下:

这里看到的TESTDB就是前面配置中的逻辑库名。

执行如下脚本,插入数据:

insert into t_vote(id,province) values ('tj','tianjin');

insert into t_vote(id,province) values ('hb','hubei');

insert into t_vote(id,province) values ('gd','guangdong');

insert into t_vote(id,province) values ('hn','hunan');

然后,我们查询数据:

数据虽然正确插入,但从以上我们还无法确定数据是否按照需求分片存储,所以,接下来,我们连接到MySQL服务器进行查询验证:

查询验证得知,已经按照需求进行了正确的存储。

注:在插入数据的时候,必须明确指定列,否则会报告错误:

1064 - partition table, insert must provide ColumnList

  1. 注册服务

当然,也可以将MyCat注册为Windows服务:

方便执行服务的启动:

如果启动异常,可以查看日志文件wrapper.log的详细信息,查找原因。

相关推荐

《保卫萝卜2》安卓版大更新 壕礼助阵世界杯

《保卫萝卜2:极地冒险》本周不仅迎来了安卓版本的重大更新,同时将于7月4日本周五,带来“保卫萝卜2”安卓版本世界杯主题活动的火热开启,游戏更新与活动两不误。一定有玩家会问,激萌塔防到底进行了哪些更新?...

儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot

1、准备两张正方形纸,一橙一绿,对折出折痕。2、橙色沿其中一条对角线如图折两三角形。3、把上面三角折平,如图。4、绿色纸折成三角形。5、再折成更小的三角形。6、再折三分之一如图。7、打开折纸,压平中间...

《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)

饥荒游戏中,玩家们需要获取各种素材与食物,进行生存。玩家们在游戏中,进入游戏后按“~”键调出控制台使用代码,可以直接获得素材。比如胡萝卜的代码是carrot,玉米的代码是corn,南瓜的代码是pump...

Skyscanner:帮你找到最便宜机票 订票不求人

你喜欢旅行吗?在合适的时间、合适的目的地,来一场说走就走的旅行?机票就是关键!Skyscanner这款免费的手机应用,在几秒钟内比较全球600多家航空公司的航班安排、价格和时刻表,帮你节省金钱和时间。...

小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)

Sleepover过夜Itisnighttime.现在是晚上。...

我在民政局工作的那些事儿(二)(我在民政局上班)

时间到了1997年的秋天,经过一年多的学习和实践,我在处理结婚和离婚的事情更加的娴熟,也获得了领导的器重,所以我在处理平时的工作时也能得心应手。这一天我正在离婚处和同事闲聊,因为离婚处几天也遇不到人,...

夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……

好看的人都关注江苏气象啦夏天很快就要来了你是否和苏苏一样身上的肉肉还没做好准备?真是一个悲伤的故事……下面这个哥本哈根减肥法苏苏的同事亲测有效不节食不运动不反弹大家快来一起试试看吧~DAY1...

Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all

AlocalworkeroperatesequipmentintheChina-EgyptTEDASuezEconomicandTradeCooperationZonei...

Centuries-old tea road regains glory as Belt and Road cooperation deepens

FUZHOU/ST.PETERSBURG,Oct.2(Xinhua)--NestledinthepicturesqueWuyiMountainsinsoutheastChi...

15 THE NUTCRACKERS OF NUTCRACKER LODGE (CONTINUED)胡桃夹子小屋里的胡桃夹子(续篇)

...

AI模型部署:Triton Inference Server模型部署框架简介和快速实践

关键词:...

Ftrace function graph简介(flat function)

引言由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto.而systrace就是基于内核的eventtracing来实...

JAVA历史版本(java各版本)

JAVA发展1.1996年1月23日JDK1.0Java虚拟机SunClassicVM,Applet,AWT2.1997年2月19日JDK1.1JAR文件格式,JDBC,JavaBea...

java 进化史1(java的进阶之路)

java从1996年1月第一个版本诞生,到2022年3月最新的java18,已经经历了27年,整整18个大的版本。很久之前有人就说java要被淘汰,但是java活到现在依然坚挺,不知道java还能活...

学习java第二天(java学完后能做什么)

#java知识#...

取消回复欢迎 发表评论: