MyCat 数据库分片极简体验
文章目录
- MyCat是什么
- 应用场景实例
- 实例环境与效果
- 实例步骤:
- 1. 下载MyCat并解压
- 2. 配置
- 3. 启动
- 4.测试
- 错误解决
MyCat是什么
MyCat是数据库分库分表的中间件。
应用场景实例
场景之一是: 某一个表数据量很大,超过千万级别, 通过MyCat可以将这张表的数据按照一定的分片算法分布在多个数据库中。
实例环境与效果
- Windows
- MyCat 1.6
- mysql-8.0.16-winx64
- MySQL Workbench
实例效果:
有一张用户表my_user, 包含三个字段
id : 用户ID
country :用户所属的国家
name : 用户名
按照不同的国家存储用户到不同库的表中, 每个国家对应一个库。
- 安装MySQL和MyCat, 建立db1、db2和db3三个数据库。
- 在MyCat中配置以上三个数据库和分片规则之后,启动MyCat
- 使用WorkBench连接MyCat虚拟数据库
- 创建数据表时会同时在三个库中创建表
- 插入数据时,会根据分片规则将数据写到对应的表中
实例步骤:
1. 下载MyCat并解压
下载地址:
http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-win.tar.gz
解压后目录如下:
2. 配置
进入config目录,分别配置server.xml、schema.xml和rule.xml的配置文件
1.配置虚拟数据库 server.xml
配置MyCat虚拟数据库的用户名、密码以及数据库名。
这里保持默认设置即可:
<user name="root"> <!--数据库用户名 --><property name="password">123456</property> <!-- 密码--><property name="schemas">TESTDB</property> <!-- 数据库名--></user>
- 配置虚拟数据库和实体数据库的关系:schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"><table name="my_user" dataNode="dn1,dn2,dn3" rule="myrule" /></schema><dataNode name="dn1" dataHost="localhost1" database="db1" /><dataNode name="dn2" dataHost="localhost1" database="db2" /><dataNode name="dn3" dataHost="localhost1" database="db3" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root" password="123456"></writeHost></dataHost>
</mycat:schema>
schema 配置虚拟数据库,与server.xml中的对应(TESTDB),table定义数据库中的表
dataNode 数据节点,代表的就是实体数据库,包括数据主机(dataHost)和数据库名
dataHost就是实体数据库的配置,包括数据库类型,数据库实际的url,已经连接的用户名密码
- 分片规则 rule.xml
MyCat可以定义多种分片规则,这里根据表的某个字段的值来分片,将分片规则定义在partition-hash-int.txt文件中。
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/"><tableRule name="myrule"><rule><columns>country</columns><algorithm>hash-int</algorithm></rule></tableRule><function name="hash-int" class="io.mycat.route.function.PartitionByFileMap"><property name="mapFile">partition-hash-int.txt</property><property name="type">1</property><property name="defaultNode">0</property></function>
</mycat:rule>
partition-hash-int.txt
china=0
usa=1
england=2
以上的意思是:来自中国的用户写入db1库的my_user表,美国的写入db2,英国的写入db3。在MySQL中分别创建3个数据库:
create database db1;
create database db2;
create database db3;
3. 启动
简单的启动方式是在MyCat的bin目录下, 命令行执行:
startup_nowrap.bat
4.测试
CREATE TABLE my_user
(
id
varchar(64) NOT NULL,
country
varchar(10) NOT NULL,
name
varchar(64) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into my_user(id,country,name) values(‘001’,‘china’,‘User 1’);
insert into my_user(id,country,name) values(‘002’,‘usa’,‘User 2’);
insert into my_user(id,country,name) values(‘003’,‘england’,‘User 3’);
jdbc:mysql://127.0.0.1:8066/TESTDB?characterEncoding=utf-8
错误解决
以上在MySQL 5运行正常,但在MySQL8出错,报:
Client does not support authentication protocol requested by server; consider upgrading MySQL client
解决方法是执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
原因:
mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式
conf/wrapper.conf 参数配置,比如JVM
CREATE TABLE exam
(
id
varchar(64) NOT NULL,
ilevel
int NOT NULL,
name
varchar(64) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE exam
(
id
varchar(64) NOT NULL,
slevel
varchar(10) NOT NULL,
name
varchar(64) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
startup_nowrap.bat
create database db1;
create database db2;
create database db3;
CREATE TABLE exam
(
id
varchar(64) NOT NULL,
slevel
varchar(64) NOT NULL,
name
varchar(64) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MyCat 数据库分片极简体验相关推荐
- MyCAT数据库分片(一)
1. MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: •一个彻底开源的,面向企业应用开发的"大数据库集群" •支持事务.ACID.可以替代Mysql的加强 ...
- 【干货】极简体验+免费真的万能嘛?北森Saas第一坑:免费
小咖注:这个时代 极简体验 和 免费,已经成了互联网必杀"秘笈".而互联网发展到今天从来都没有一种唯一的方法论,因为面向的人群,需求,场景都是在变化的. 至今,我有一件事情搞不明白 ...
- CCCanvas.Heptagonal - CCCanvas iOS Metal MetalKit GPU 极简体验Demo之 - 七边形
CCCanvas.Heptagonal - CCCanvas iOS Metal MetalKit GPU 极简体验Demo之 - 七边形 [友情提示:因为主要是演示用,不考虑向前兼容,可通过Pod升 ...
- 网络运维超融合服务器,超融合解读 | 极简体验!四大武器让数据中心省心无忧...
深信服超融合aCloud基于"软件定义数据中心"的思想,以虚拟化技术为核心,将计算.存储.网络.安全等虚拟资源融合到一台标准x86服务器中,形成一个大资源池.在资源池上部署数据中心 ...
- MyCat数据库分片
水平分片 采用横向切割 把商品表分片,存储到三个数据节点上 数据节点 每一个数据节点,就是一个数据库 每一个数据库,就是一个数据节点 一个mysql实例上,可以有多个数据库 数据库版本 : mysql ...
- 杨攀:融云专注极致技术 不忘初心打造极简体验
本文是融云联合创始人.CTO杨攀接受 LiveVideoStack 邮件采访整理而成,杨攀聊到了个人成长经历,作为创业公司技术负责人的责任,以及对企业通信市场的格局和未来的机遇与挑战. 文 / 杨攀 ...
- 学习记录 1.Web of Science数据库检索极简版
写在前面: 本人大四,物理专业,选择方向是计算物理,所以需要一定的编程能力,所以索性就在这个平台连学带记录自己的学习过程.以后分享的内容大概率包含物理或者编程类内容.当然也有可能是我自己感兴趣的一些东 ...
- Pytorch - 分布式训练极简体验
由于工作需要,最近在补充分布式训练方面的知识.经过一番理论学习后仍觉得意犹未尽,很多知识点无法准确get到(例如:分布式原语scatter.all reduce等代码层面应该是什么样的,ring al ...
- alook浏览器哪个好 夸克浏览器_简单搜索、X浏览器、夸克浏览器、Via极简移动浏览器,到底哪个最好用?...
1. X浏览器 用过的都说X浏览器的广告拦截很强悍 大小:0.8M,无开屏页,只有安卓版本. 用过 Chrome 的 都说X浏览器是好的备胎. 无新闻,无推送,无后台,不足1M却小而强大,给你淋漓尽致 ...
最新文章
- ios请求php接口失败,laravel,php_iOS调用Laravel接口返回错误信息,laravel,php,ios - phpStudy...
- python使用curses库获取控制台的键盘输入(如上下左右)
- 密码必须至少为6个字符_【每日一题】| 常见的编码方式之栅栏密码
- gcc编译C++程序
- ASP.NET Core:CMD命令行+记事本 创建Console程序和Web Application
- sklearn 线性回归_使用sklearn库做线性回归拟合
- CGContextRef CIImageRef详解
- linux下 java 文本_Java中如何将输入的信息写入文本中
- 转换json_使用Java将JSON转换为POJO
- linux目录结构来源6,Linux入门基础 #6 Linux系统目录架构
- linux新建脚本文件,linux shell脚本编程2—修改文件时间和创建新文件即touch命令的使用...
- [设计模式-结构型]适配器(Adapter)
- mysql 线上修改参数_9.10、mysql进程、状态在线修改参数重要知识
- ChinaDDoS BGP 流量牵引二层VLAN回注配置
- Windows 和 Linux 上安装 TTF 字体的方法
- 微信公众号支付 java_微信公众号支付开发全过程(java版)
- 工科数学分析-微积分(1)
- 关于MATLAB的saveas函数错误
- 开源商城WSTMart支付开发研究[转]
- 百度 ping php,百度ping方法示例代码 自动ping百度
热门文章
- 【POJ Challenge】生日礼物 加强m子段和
- 记一次mysql千万订单汇总查询优化
- 寫程式不需要天份,也不需要熱情
- [编织消息框架][优化系统]突破连接上限(上)
- NHibernate 操作视图 第十三篇
- 15.01.29-MVC中用Areas分解项目
- 对比学习视角:重新审视推荐系统的召回粗排模型
- 推荐系统系列教程之十二:Facebook是怎么为十亿人互相推荐好友的?
- 卷积神经网络——第一周 卷积神经网络基础——第三部分
- java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件