博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows版Mycat结合mysql安装配置+水平切分(转载)
阅读量:6908 次
发布时间:2019-06-27

本文共 4442 字,大约阅读时间需要 14 分钟。

来源:https://segmentfault.com/a/1190000009495748

参考文档:

环境

环境 版本
windows 10
java 1.8.0
mysql 5.7.17
navicat for mysql 10

安装

PS:MyCAT使用Java开发,用到了JDK 7的部分功能,所以在使用前请确保安装了JDK 7.0,并设置了正确的Java环境变量(可在命令行窗口输入:“java –version”获知是否安装成功,以及获取JDK的版本)。

  1. 下载1.6版本

  1. F盘新建mycat-server文件夹,解压Mycat-server-1.6-RELEASE-20161028204710-win.tar.gz,得到mycat文件夹

水平切分

定义

将数据水平分布到不同的DB或table中,在通过相应的DB路由][1] 或者table路由规则找到需要查询的具体的DB或者table以进行Query操作,比如根据用户ID将用户表切分到多台数据库上。

将某个访问极其频繁的表再按照某个字段的某种规则来分散到多个表之中,每个表中包含一部分数据。

例如,所有数据都是和用户关联的,那么我们就可以根据用户来进行水平拆分,将不同用户的数据切分到不同的数据库中。

现在互联网非常火爆的web 2.0类型的网站,基本上大部分数据都能够通过会员用户信息关联上,可能很多核心表都非常适合通过会员ID来进行数据的水平切分。而像论坛社区讨论系统,就更容易切分了,非常容易按照论坛编号来进行数据的水平切分。切分之后基本上不会出现各个库之间的交互。

优缺点

优点:

  • 表关联基本能够在数据库端全部完成;

  • 不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;

  • 应用程序端整体架构改动相对较少;

  • 事务处理相对简单;

  • 只要切分规则能够定义好,基本上较难遇到扩展性限制。

缺点:

  • 切分规则相对复杂,很难抽象出一个能够满足整个数据库的切分规则;

  • 后期数据的维护难度有所增加,人为手工定位数据更困难;

  • 应用系统各模块耦合度较高,可能会对后面数据的迁移拆分造成一定的困难。

实现

MyCAT使用MySQL的通讯协议模拟成一个MySQL服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型。

schema 是实际逻辑库的配置,多个schema代表多个逻辑库。

DataNode是MyCAT的逻辑数据节点,映射到后端的某一个物理数据库的一个Database,为了做到系统高可用,每个DataNode可以配置多个引用地址(DataSource),当主DataSource被检测为不可用时,系统会自动切换到下一个可用的DataSource上,这里的DataSource即可认为是Mysql的主从服务器的地址。dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。

dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。

建库,建表

这里主要是为了熟悉mycat,表字段很省略

CREATE DATABASE IF NOT EXISTS `weibo_simple`;
-- -------------------------------------- Table structure for `t_users` 用户表-- ------------------------------------DROP TABLE IF EXISTS `t_users`; CREATE TABLE `t_users` ( `user_id` varchar(64) NOT NULL COMMENT '注册用户ID', `user_email` varchar(64) NOT NULL COMMENT '注册用户邮箱', `user_password` varchar(64) NOT NULL COMMENT '注册用户密码', `user_nikename` varchar(64) NOT NULL COMMENT '注册用户昵称', `user_creatime` datetime NOT NULL COMMENT '注册时间', `user_status` tinyint(1) NOT NULL COMMENT '验证状态 1:已验证 0:未验证', `user_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ------------------------------------- -- Table structure for `t_message`微博表 -- ------------------------------------- DROP TABLE IF EXISTS `t_message`; CREATE TABLE `t_message` ( `messages_id` varchar(64) NOT NULL COMMENT '微博ID', `user_id` varchar(64) NOT NULL COMMENT '发表用户', `messages_info` varchar(255) DEFAULT NULL COMMENT '微博内容', `messages_time` datetime DEFAULT NULL COMMENT '发布时间', `messages_commentnum` int(12) DEFAULT NULL COMMENT '评论次数', `message_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除', `message_viewnum` int(12) DEFAULT NULL COMMENT '被浏览量', PRIMARY KEY (`messages_id`), KEY `user_id` (`user_id`), CONSTRAINT `t_message_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `t_users` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/**  user 节点测试表*/ DROP TABLE IF EXISTS `t_node`; CREATE TABLE `t_node` ( `node_id` int(11) NOT NULL COMMENT 'ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `node_note` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'note', `node_createtime` datetime NOT NULL, PRIMARY KEY (`vid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='note表';

配置server.xml文件

1
65535
0
1
1
mycat
mycat

配置schema.xml文件

添加weibo_simple数据库的dataNode设置,并添加t_users和t_message表的schema设置,本次配置了双主,读写分离配置,同一个表多个分片的配置可以用dataNode="dn$1-100" 通配方式。

select 1
select 1

配置rule.xml文件

user_id
func1
8
128

为了更好地定位错误,修改log4j2.xml

水平切分测试

  • 启动mycat数据库

命令行

F:\mycat-server\mycat\bin>startup_nowrap.bat

启动成功

  • 打开navicat for mysql 建立mycat连接

  • 在mycat数据库插入数据,数据同步到mysql实际数据库中

conf下配置文件说明

--server.xml:是Mycat服务器参数调整和用户授权的配置文件。--schema.xml:是逻辑库定义和表以及分片定义的配置文件。--rule.xml:是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。--log4j.xml:日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug                           debug级别下,会输出更多的信息,方便排查问题。--autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件 --lib MyCAT自身的jar包或依赖的jar包的存放目录。 --logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件

转载地址:http://hfgdl.baihongyu.com/

你可能感兴趣的文章
《数据结构与算法 C语言版》—— 3.2栈的应用举例
查看>>
在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决...
查看>>
《Cisco IOS XR技术精要》一4.3 配置管理组件
查看>>
《社会智能与综合集成系统》—第2章参考文献
查看>>
《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.4节在Camera Raw中调整颜色...
查看>>
《Adobe Premiere Pro视频编辑指南(第2版)》——水银回放引擎
查看>>
从零开始打造个人专属命令行工具集——yargs 完全指南
查看>>
Spark源码分析 -- SchedulableBuilder
查看>>
《HTML5+CSS3网页设计入门必读》——第1章 理解Web的工作方式1.1 HTML和WWW简史
查看>>
真的吗?算法谋取暴利,让你多花钱
查看>>
Linux 内核测试和调试(5)
查看>>
指针与数组
查看>>
Ubuntu 14.04中修复默认启用HDMI后没有声音的问题
查看>>
《C++面向对象高效编程(第2版)》——1.12 OOP 范式和语言
查看>>
《Java遗传算法编程》—— 1.4 进化计算的优势
查看>>
《R语言数据挖掘》——2.3 混合关联规则挖掘
查看>>
Commons IO 官方文档
查看>>
《精通Linux设备驱动程序开发》——第1章 引言 1.1演进
查看>>
如何使用 Kali Linux 黑掉 Windows
查看>>
《趣题学算法》—第0章0.4节算法的正确性
查看>>