文章目录

  • 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 : 用户名
按照不同的国家存储用户到不同库的表中, 每个国家对应一个库。

  1. 安装MySQL和MyCat, 建立db1、db2和db3三个数据库。
  2. 在MyCat中配置以上三个数据库和分片规则之后,启动MyCat
  3. 使用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>
  1. 配置虚拟数据库和实体数据库的关系: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,已经连接的用户名密码

  1. 分片规则 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 数据库分片极简体验相关推荐

  1. MyCAT数据库分片(一)

    1. MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: •一个彻底开源的,面向企业应用开发的"大数据库集群" •支持事务.ACID.可以替代Mysql的加强 ...

  2. 【干货】极简体验+免费真的万能嘛?北森Saas第一坑:免费

    小咖注:这个时代 极简体验 和 免费,已经成了互联网必杀"秘笈".而互联网发展到今天从来都没有一种唯一的方法论,因为面向的人群,需求,场景都是在变化的. 至今,我有一件事情搞不明白 ...

  3. CCCanvas.Heptagonal - CCCanvas iOS Metal MetalKit GPU 极简体验Demo之 - 七边形

    CCCanvas.Heptagonal - CCCanvas iOS Metal MetalKit GPU 极简体验Demo之 - 七边形 [友情提示:因为主要是演示用,不考虑向前兼容,可通过Pod升 ...

  4. 网络运维超融合服务器,超融合解读 | 极简体验!四大武器让数据中心省心无忧...

    深信服超融合aCloud基于"软件定义数据中心"的思想,以虚拟化技术为核心,将计算.存储.网络.安全等虚拟资源融合到一台标准x86服务器中,形成一个大资源池.在资源池上部署数据中心 ...

  5. MyCat数据库分片

    水平分片 采用横向切割 把商品表分片,存储到三个数据节点上 数据节点 每一个数据节点,就是一个数据库 每一个数据库,就是一个数据节点 一个mysql实例上,可以有多个数据库 数据库版本 : mysql ...

  6. 杨攀:融云专注极致技术 不忘初心打造极简体验

    本文是融云联合创始人.CTO杨攀接受 LiveVideoStack 邮件采访整理而成,杨攀聊到了个人成长经历,作为创业公司技术负责人的责任,以及对企业通信市场的格局和未来的机遇与挑战. 文 / 杨攀 ...

  7. 学习记录 1.Web of Science数据库检索极简版

    写在前面: 本人大四,物理专业,选择方向是计算物理,所以需要一定的编程能力,所以索性就在这个平台连学带记录自己的学习过程.以后分享的内容大概率包含物理或者编程类内容.当然也有可能是我自己感兴趣的一些东 ...

  8. Pytorch - 分布式训练极简体验

    由于工作需要,最近在补充分布式训练方面的知识.经过一番理论学习后仍觉得意犹未尽,很多知识点无法准确get到(例如:分布式原语scatter.all reduce等代码层面应该是什么样的,ring al ...

  9. alook浏览器哪个好 夸克浏览器_简单搜索、X浏览器、夸克浏览器、Via极简移动浏览器,到底哪个最好用?...

    1. X浏览器 用过的都说X浏览器的广告拦截很强悍 大小:0.8M,无开屏页,只有安卓版本. 用过 Chrome 的 都说X浏览器是好的备胎. 无新闻,无推送,无后台,不足1M却小而强大,给你淋漓尽致 ...

最新文章

  1. ios请求php接口失败,laravel,php_iOS调用Laravel接口返回错误信息,laravel,php,ios - phpStudy...
  2. python使用curses库获取控制台的键盘输入(如上下左右)
  3. 密码必须至少为6个字符_【每日一题】| 常见的编码方式之栅栏密码
  4. gcc编译C++程序
  5. ASP.NET Core:CMD命令行+记事本 创建Console程序和Web Application
  6. sklearn 线性回归_使用sklearn库做线性回归拟合
  7. CGContextRef CIImageRef详解
  8. linux下 java 文本_Java中如何将输入的信息写入文本中
  9. 转换json_使用Java将JSON转换为POJO
  10. linux目录结构来源6,Linux入门基础 #6 Linux系统目录架构
  11. linux新建脚本文件,linux shell脚本编程2—修改文件时间和创建新文件即touch命令的使用...
  12. [设计模式-结构型]适配器(Adapter)
  13. mysql 线上修改参数_9.10、mysql进程、状态在线修改参数重要知识
  14. ChinaDDoS BGP 流量牵引二层VLAN回注配置
  15. Windows 和 Linux 上安装 TTF 字体的方法
  16. 微信公众号支付 java_微信公众号支付开发全过程(java版)
  17. 工科数学分析-微积分(1)
  18. 关于MATLAB的saveas函数错误
  19. 开源商城WSTMart支付开发研究[转]
  20. 百度 ping php,百度ping方法示例代码 自动ping百度

热门文章

  1. 【POJ Challenge】生日礼物 加强m子段和
  2. 记一次mysql千万订单汇总查询优化
  3. 寫程式不需要天份,也不需要熱情
  4. [编织消息框架][优化系统]突破连接上限(上)
  5. NHibernate 操作视图 第十三篇
  6. 15.01.29-MVC中用Areas分解项目
  7. 对比学习视角:重新审视推荐系统的召回粗排模型
  8. 推荐系统系列教程之十二:Facebook是怎么为十亿人互相推荐好友的?
  9. 卷积神经网络——第一周 卷积神经网络基础——第三部分
  10. java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件