mycat 2.0 介绍和安装

mycat 2.0 介绍和安装

什么是MyCat

MyCat是目前最流行的分布式数据库中间插件,是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器。

前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问。

后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信。

核心功能是分表分库。

为什么要使用Mycat

如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。

NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。

如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat

Mycat作用为:能满足数据库数据大量存储;提高了查询性能;实现读写分离,分库分表

市场主流的数据库中间件

mycat 的优势:

  性能稳定        强大的技术团队     体系完善(mycat-web  mycat-balance  mycat-NIO)

Mycat 解决的主要问题

 解决表的容量问题

 解决表查询的性能问题

 解决表的DML的性能问题?

 解决mysql 挂了的问题(高可用)

Mycat 解决问题的思路

容量:

查询

写入问题

mycat原理:可以用“拦截”一词形容,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将此sql发往后端的真实数据库,并将返回的结果做适当处理(分组处理 排序处理 分页处理),最终返回给用户

mycat 能做的主要事情

一 读写分离和高可用

二 数据分片 (分表分库)

三 多数据源整合

mycat 中的主要名词概念

分库分表    按照一定规则把数据库中的表拆分为多个带有数据库实例、物理库、物理表访问路径的分表(重点)。

逻辑库    数据库代理中的数据库,它可以包含多个逻辑表(重点)。

逻辑表    数据库代理中的表,它可以映射代理连接的数据库中的表(物理表)(重点)。

拆分键    即分片键,描述拆分逻辑表的数据规则的字段(重点)。

分区键   当使用等值查询的时候,能直接映射一个分区的拆分键(重点)。

数据源   连接后端数据库的组件,它是数据库代理中连接后端数据库的客户端。

schema(库)    在MyCAT2中配置表逻辑,视图等的配置

mycat 的安装和启动

mycat 启动需要 数据库源  这里使用yum 安装mariadb  作为数据库源

(关闭防火墙 关沙盒)

具体环境   一台 mycat 服务器   主机名 mycat_h   vm1 地址 192.168.10.30

           一台mysql 服务器   主机名 mysal_h   vim1 地址 192.168.10.20

mysql 服务器

   yum 安装mariadb  并启动

       yum install  -y mariadb  mariadb-server

       systemctl  start  mariadb

       mysqladmin -u root password "123.com"

mysql  -u  root  -p123.com

   在mysql 数据库中 添加 root 用户授权在任意主机上登陆密码 123.com

(必须在mysql里面授权)

       grant all privileges on *.* to 'root'@'%' identified by '123.com';

       flush privileges;

下面是 mycat 服务器上的配置

1, 安装 jdk 1.8 版本

       yum -y install java

       java -version

2,下载或者上传mycat 包(根据需要将软件包挂上)

    scp c:\mycat2-install-template-1.20.zip root@192.168.10.30:/root

    scp c:\mycat2-1.21-release-jar-with-dependencies.jar  root@192.168.10.30:/root

3,解压 合并

     yum install unzip -y      //安装解压软件

     mkdir -p  /data/tools          //创建安装文件夹

     mv /root/mycat*  /data/tools/     //将mycat 两个包 移动到 /data/tools 文件夹中

     cd  /data/tools/         

     unzip mycat2-install-template-1.20.zip       //解压 zip 包 生成 mycat 文件夹

     mv mycat  ../       

                     //将 mycat 文件夹及所有内容移动到 上一级目录   也就是 /data 下

     cd  /data/mycat/lib             //进入lib 目录

cp  /data/tools/mycat2-1.21-release-jar-with-dependencies.jar  ./

如果进入不了/data/mycat/lib

用下面的命令

cp  /data/tools/mycat2-1.21-release-jar-with-dependencies.jar mycat/lib

                               //合并 将 jar 包 移动到 lib 文件夹中

4,修改mycat 数据源配置文件和用户配置文件

   修改数据源配置文件

   cd  /data/mycat/conf

   vi  datasources/prototypeDs.datasource.json

  修改 mycat 用户信息文件(这个是对应客户访问的名字和密码

      vi users/root.user.json

5, 为 mycat 命令授予执行权限

     cd  /data/mycat/bin

     chmod +x *

     chmod 777 mycat

     chmod 777 wrapper-linux-ppc-64

     chmod 777 wrapper-linux-x86-32

     chmod 777 wrapper-linux-x86-64

6,启动mycat

     ./mycat start

     ./mycat status

7, 用客户端软件连接  (修改 mycat 用户信息文件写名字和密码 密码不允许写到命令里面

     mysql 命令连接

        mysql -uroot  -p123.com  -h  192.168.10.30  -P8066

mysql  -uadmin  -pabc.123 -h 192.168.1.2 -P8066  (例子)

配置文件介绍

conf目录下service.xml,rule.xml,schema.xml三个文件:

service.xml主要配置MyCat服务的参数,比如端口号,MyCat用户名和密码使用的逻辑数据库等

rule.xml主要配置路由策略,主要有分片的片键,拆分的策略(取模还是按区间划分等)

schema.xml文件主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。

mycat 分库分表的主要概念名词

Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。

Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。

DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上

DataSource:定义某个物理库的访问地址,用于捆绑到DataNode上

主配置文件

Server.json存放关于mycat服务器的一些配置信息

Schemas文件夹存放通过mycar 创建的逻辑表的配置文件

Datasources文件夹存放mycat连接的后台的数据源的配置文件

Dusters文件夹存放 关于集群的配置文件

Users文件夹 存放登录和管理mycat的用户配置文件

实战演示

    创建数据库和表

       有两个表单:users和item。三个数据库:db01、db02、db03(三个库中的数据都在同一个实例中)

     users表在db01数据库中

     item数据分别存放在db02、db03数据库中

mycat 主要命令:

    cd /data/mycat/bin

./mycat start 启动

./mycat stop 停止

./mycat console 前台运行

./mycat install 添加到系统自动启动

./mycat remove 取消随系统自动启动

./mycat restart 重启

./mycat pause 暂停

./mycat status 查看启动状态

mycat 用户配置文件解析    mycat/conf/user/{用户名}.user.json

{

    "dialect": "mysql",              //数据库类型

    "ip": null,                      //配置白名单使用

    "password": "123456",             //配置mycat 用户密码

    "transactionType": "proxy",        //proxy 本地事务   xa  事务

    "username": "root",                 //mycat   用户名

    "isolation": 3                       //初始化事务级别 

}

    事务级别

         READ_UNCOMMITTED:1

         READ_COMMITTED:2

         REPEATED_READ:3

         默认SERIALIZABLE:4

 配置mycat 连接后端的物理库的数据源

     mycat/conf/datasources/{数据源名字}.datasource.json

        1)dbType:数据源类型

        2)name:数据源名字

        3)password:后端MySQL的密码

        4)url:后端MySQL的JDBC连接地址

        5)user:后端MySQL的用户名

        6)weight:配置数据源负载均衡的使用权重

配置MyCAT里面和MySQL对应的逻辑表。

配置位置:mycat/conf/schemas/{库名}.schema.json

{

    "customTables": {},

    "globalTables": {},

    "normalTables": {},

    "schemaName": "test",

    "shardingTables": {},

    "targetName": "prototype"

}

配置说明

1)customTables:自定义表

2)globalTables:全局表

3)normalTables:默认表

4)schemaName:库名

5)shardingTables:分片表

6)targetName:数据源名,也可以是集群名

它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信, 其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。 Mycat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持 MySQL、SQL Server、 Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型 NoSQL 方式的存储,未来还会支持更 多类型的存储。而在最终用户看来,无论是那种存储方式,在 Mycat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度,在测试阶 段,可以将一个表定义为任何一种 Mycat 支持的存储方式,比如 MySQL 的 MyASIM 表、内存表、或者 MongoDB、LevelDB 以及号称是世界上最快的内存数据库 MemSQL 上。试想一下,用户表存放在 MemSQL 上, 32 大量读频率远超过写频率的数据如订单的快照数据存放于 InnoDB 中,一些日志数据存放于 MongoDB 中,而且 还能把 Oracle 的表跟 MySQL 的表做关联查询,你是否有一种不能呼吸的感觉?而未来,还能通过 Mycat 自动 将一些计算分析后的数据灌入到 Hadoop 中,并能用 Mycat+Storm/Spark Stream 引擎做大规模数据分析,看 到这里,你大概明白了,Mycat 是什么?Mycat 就是 BigSQL,Big Data On SQL Database。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小颖⸝⸝ ᷇࿀ ᷆⸝⸝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值