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

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

yuyutoo 2025-04-30 20:54 1 浏览 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的详细信息,查找原因。

相关推荐

ETCD 故障恢复(etc常见故障)

概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...

在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...

如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)

---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...

使用 Fail Ban 日志分析 SSH 攻击行为

通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...

《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》

服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...

聊聊Spring AI Alibaba的YuQueDocumentReader

序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...

Mac Docker环境,利用Canal实现MySQL同步ES

Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...

RustDesk:开源远程控制工具的技术架构与全场景部署实战

一、开源远程控制领域的革新者1.1行业痛点与解决方案...

长安汽车一代CS75Plus2020款安装高德地图7.5

不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...

Zookeeper使用详解之常见操作篇(zookeeper ui)

一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...

zk源码—4.会话的实现原理一(会话层的基本功能是什么)

大纲1.创建会话...

Zookeeper 可观测性最佳实践(zookeeper能够确保)

Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...

服务器密码错误被锁定怎么解决(服务器密码错几次锁)

#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...

zk基础—4.zk实现分布式功能(分布式zk的使用)

大纲1.zk实现数据发布订阅...

《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析

在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...

取消回复欢迎 发表评论: