设为首页 加入收藏

TOP

MySQL+MyCat分库分表 读写分离配置(一)
2019-09-17 18:30:57 】 浏览:56
Tags:MySQL MyCat 分库 读写 分离 配置

一、 MySQL+MyCat分库分表

1 MyCat简介

java编写的数据库中间件

Mycat运行环境需要JDK.

Mycat是中间件.运行在代码应用和MySQL数据库之间的应用.

前身 : corba. 是阿里开发的数据库中间件.实现MySQL数据库分库分表集群管理的中间件.曾经出现过重大事故. 二次开发,形成Mycat.

使用MyCat之后,编写的所有的SQL语句,必须严格遵守SQL标准规范.

insert into table_name(column_name) values(column_value);

使用MyCat中间件后的结构图如下:

 

 

2 MyCat术语简介

2.1 切分

逻辑上的切分. 在物理层面,是使用多库[database],多表[table]实现的切分.

2.1.1 纵向切分

把一个数据库切分成多个数据库,配置方便

只能实现两张表的表连接查询.

将一张表中的数据,分散到若干个database的同结构表中。多个表的数据的集合是当前表格的数据。

 

 

2.1.2 横向切分

把一个表切分成多个表,相比纵向切分配置麻烦

无法实现表连接查询.

将一张表的字段,分散到若干张表中,将若干表连接到一起,才是当前表的完整数据。

 

 

2.2 逻辑库

Mycat中定义的database.是逻辑上存在的.但是物理上未必存在.

主要是针对纵向切分提供的概念.

访问MyCat,就是将MyCat当做MySQL使用。

Db数据库是MyCat中定义的database。通过SQL访问MyCat中的db库的时候,对应的是MySQL中的db1,db2,db3三个库。物理上的database是db1,db2,db3.逻辑上的database就是db。

 

 

2.3 逻辑表

Mycat中定义的table.是逻辑上存在,物理上未必存在.

主要是针对横向切分提供的概念

MyCat中的表格table,其字段分散到MySQL数据库的表格table1,table2,table3中。

 

 

2.4 默认端口

Mycat默认端口是8066

2.5 数据主机 - dataHost

物理MySQL存放的主机地址.可以使用主机名,IP,域名定义.

2.6 数据节点 - dataNode

物理的database是什么.数据保存的物理节点.就是database.

2.7 分片规则

当控制数据的时候,如何访问物理database和table.

就是访问dataHost和dataNode的算法.

在Mycat处理具体的数据CRUD的时候,如何访问dataHost和dataNode的算法.如:哈希算法,crc16算法等.

3 Mycat搭建

3.1 安装JDK

3.2 主从备份搭建完成

3.3 安装mycat

解压缩: tar -zxf mycat-xxxx.tar.gz

3.4 Master提供可被Mycat访问的用户

在Mycat中通过Master数据库的root用户访问Master数据库.

grant all privileges on *.* to ‘username’@’ip’ identified by ‘password’ with grant option;

grant all privileges on *.* to 'mycat'@'%' identified by 'mycat' with grant option;

3.5 上传mycat

Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

3.6 解压缩

tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

3.7 Mycat配置文件详解

Mycat所有的配置文件,都在应用的conf目录中.

3.7.1 rule.xml

用于定义分片规则的配置文件.

主要是查看.很少修改.

mycat默认的分片规则: 以500万为单位,实现分片规则.

逻辑库A对应dataNode - db1和db2. 1-500万保存在db1中, 500万零1到1000万保存在db2中,1000万零1到1500万保存在db1中.依次类推.

 

 

3.7.2 schema.xml

用于定义逻辑库和逻辑表的配置文件.在配置文件中可以定义读写分离,逻辑库,逻辑表,dataHost,dataNode等信息.

配置文件解释:

3.7.2.1 标签schema

配置逻辑库的标签

3.7.2.1.1 属性name

逻辑库名称

3.7.2.1.2 属性checkSQLschema

是否检测SQL语法中的schema信息.

如: Mycat逻辑库名称 A, dataNode名称B

SQL : select * from A.table;

checkSQLschema值是true, Mycat发送到数据库的SQL是select * from table;

checkSQLschema值是false,Mycat发送的数据库的SQL是select * from A.table;

3.7.2.1.3 sqlMaxLimit

Mycat在执行SQL的时候,如果SQL语法中没有limit子句.自动增加limit子句. 避免一次性得到过多的数据,影响效率. limit子句的限制数量默认配置为100.如果SQL中有具体的limit子句,当前属性失效.

SQL : select * from table . mycat解析后: select * from table limit 100

SQL : select * from table limit 10 . mycat不做任何操作修改.

3.7.2.2 标签table

定义逻辑表的标签,如果需要定义多个逻辑表,编写多个table标签。要求逻辑表的表名和物理表(MySQL数据库中真实存在的表)的表名一致。

3.7.2.2.1 属性name

逻辑表名

3.7.2.2.2 属性dataNode

数据节点名称. 配置文件中后续需要定义的标签(即物理数据库中的database名称).多个名称使用逗号分隔.

多个database定义后,代表分库。

3.7.2.2.3 属性rule

分片规则名称.具体的规则名称参考rule.xml配置文件.

SQL语句发送到Mycat中后,Mycat如何计算,应该将当期的SQL发送到哪一个物理数据库管理系统或物理database中。

3.7.2.3 标签dataNode

定义数据节点的标签, 定义具体的物理database信息的。

3.7.2.3.1 属性name

数据节点名称, 是定义的逻辑名称,对应具体的物理数据库database

3.7.2.3.2 属性dataHost

引用dataHost标签的name值,代表使用的物理数据库所在位置和配置信息.

3.7.2.3.3 属性database

在dataHost物理机中,具体的物理数据库database名称.

3.7.2.4 dataHost标签

定义数据主机的标签, 就是物理MYSQL真实安装的位置。

3.7.2.4.1 属性name

定义逻辑上的数据主机名称

3.7.2.4.2 属性maxCon/minCon

最大连接数, max connections

最小连接数, min c

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何连接别人电脑上的Oracle数据.. 下一篇intelij创建MapReduce工程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目