前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mycat数据库中间件简介

Mycat数据库中间件简介

作者头像
AsiaYe
发布2019-11-06 16:51:15
6700
发布2019-11-06 16:51:15
举报
文章被收录于专栏:DBA随笔DBA随笔DBA随笔
Mycat数据库中间件简介 01

Mycat简介

Mycat是一个优秀的数据库中间件,它可以实现mysql数据库的读写分离和高可用,能够支持数亿大表的分布式数据库系统,我们也可以把它当做一种数据库领域的“路由器”,之前对数据库中间件没有什么概念,这里普及一下,Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库,对于使用者来说,访问的都是Mycat,不会接触到后端的数据库,下图是一个MyCat在实际应用中的结构图:

使用Mycat连接数据库的默认端口是8066,连接方式和普通数据库一样。

02

MyCat的下载和安装

MyCat的下载地址是:

https://github.com/MyCATApache/Mycat-download

我们可以在github上下载1.6-release的unix二进制安装包,也就是tar.gz后缀的包,然后直接解压即可,解压之后,可以看到mycat的目录结构如下:

下面分别是bin文件夹的目录和conf文件的目录:

[root@work_NAT_1 mycat]# ll
total 24
drwxr-xr-x. 2 root root 4096 Mar 13 22:31 bin
drwxrwxrwx. 2 root root 4096 Mar  1  2016 catlet
drwxrwxrwx. 4 root root 4096 Mar 14 01:22 conf
drwxr-xr-x. 2 root root 4096 Mar 13 22:31 lib
drwxrwxrwx. 2 root root 4096 Oct 28  2016 logs
-rwxrwxrwx. 1 root root  217 Oct 28  2016 version.txt
[root@work_NAT_1 mycat]# cd conf
[root@work_NAT_1 conf]# ll
total 100
-rwxrwxrwx. 1 root root   88 Oct 28  2016 autopartition-long.txt
-rwxrwxrwx. 1 root root   48 Oct 28  2016 auto-sharding-long.txt
-rwxrwxrwx. 1 root root   62 Oct 28  2016 auto-sharding-rang-mod.txt
-rwxrwxrwx. 1 root root  334 Oct 28  2016 cacheservice.properties
-rwxrwxrwx. 1 root root  439 Oct 28  2016 ehcache.xml
-rwxrwxrwx. 1 root root 2132 Oct 28  2016 index_to_charset.properties
-rwxrwxrwx. 1 root root 1246 Oct 10  2016 log4j2.xml
-rwxrwxrwx. 1 root root  178 Oct 28  2016 migrateTables.properties
-rwxrwxrwx. 1 root root  246 Oct 28  2016 myid.properties
-rwxrwxrwx. 1 root root   15 Oct 28  2016 partition-hash-int.txt
-rwxrwxrwx. 1 root root  102 Oct 28  2016 partition-range-mod.txt
-rwxrwxrwx. 1 root root 4794 Oct 28  2016 rule.xml
-rwxrwxrwx. 1 root root 4219 Oct 28  2016 schema.xml
-rwxrwxrwx. 1 root root  413 Oct 28  2016 sequence_conf.properties
-rwxrwxrwx. 1 root root   75 Oct 28  2016 sequence_db_conf.properties
-rwxrwxrwx. 1 root root   27 Oct 28  2016 sequence_distributed_conf.properties
-rwxrwxrwx. 1 root root   51 Oct 28  2016 sequence_time_conf.properties
-rwxrwxrwx. 1 root root 3717 Oct 28  2016 server.xml
-rwxrwxrwx. 1 root root   16 Oct 28  2016 sharding-by-enum.txt
-rwxrwxrwx. 1 root root 4182 Oct 28  2016 wrapper.conf
drwxrwxrwx. 2 root root 4096 Mar 13 22:31 zkconf
drwxrwxrwx. 2 root root 4096 Mar 13 22:31 zkdownload

conf文件夹中比较重要的文件有三个,分别是server.xml,schema.xml以及rule.xml

bin目录下面的文件有:

[root@work_NAT_1 bin]# ll
total 868
-rwxr-xr-x. 1 root root   3567 May 16  2016 dataMigrate.sh
-rwxr-xr-x. 1 root root    624 Sep 29  2016 init_zk_data.sh
-rwxr-xr-x. 1 root root  15714 Oct 28  2016 mycat
-rwxr-xr-x. 1 root root   2941 Mar  2  2016 rehash.sh
-rwxr-xr-x. 1 root root   2496 Mar  2  2016 startup_nowrap.sh
-rwxr-xr-x. 1 root root 281540 Oct 28  2016 wrapper-aix-ppc-32
-rwxr-xr-x. 1 root root 319397 Oct 28  2016 wrapper-aix-ppc-64
-rwxr-xr-x. 1 root root 253808 Oct 28  2016 wrapper-hpux-parisc-64

比较重要的是mycat这个应用文件。

03

MyCat的配置文件解析

1

schema.xml 解析

schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataHost。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。 schema 标签用于定义MyCat实例中的逻辑库

Table 标签定义了MyCat中的逻辑表 rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片 5000001-10000000 为第2片.... 具体设置我们会在第5小节中讲解。 dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。 dataHost 标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

光介绍概念有点枯燥,看看例子吧:

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://org.opencloudb/">

        <schema name="yeyz" checkSQLschema="false" sqlMaxLimit="100">

                 <table name="tb_test0" dataNode="dn1,dn2" rule="auto-sharding-long" />
                 <table name="tb_test1" dataNode="dn1,dn3" rule="auto-sharding-long" />
                 <table name="tb_test2" dataNode="dn2,dn3" rule="auto-sharding-long" />

        </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="0"

                 writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

                 <heartbeat>select user()</heartbeat>

                 <writeHost host="hostM1" url="192.168.25.142:3306" user="root"

                         password="123456">

                 </writeHost>

        </dataHost>   

</mycat:schema>

如上面的一个配置文件:

先看schema标签,schema标签说明数据库名称为yeyz,数据库中包含的表为tb_test0,tb_test1,tb_test2。

再看table标签:

tb_test0表以规则auto-sharding-long映射在分片dn1,dn2。即实际存储位置。

tb_test1表以规则auto-sharding-long映射在分片dn1,dn3。即实际存储位置。

tb_test2表以规则auto-sharding-long映射在分片dn2,dn3.。即实际存储位置。

dataNode标签:

dn1分片在dataHost为localhost1的机器上,上面的数据库是db1;

dn2分片在dataHost为localhost2的机器上,上面的数据库是db2;

dn3分片在dataHost为localhost3的机器上,上面的数据库是db3;

主机名为localhost1的可以写入的数据库的IP地址和端口号为:192.168.25.142:3306,用户是root,密码是12346,心跳检测语句是select user()

2

server.xml解析

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。在system中添加UTF-8字符集设置,否则存储中文会出现问号.

如下面的配置,是对yeyz数据库设置了两个用户,一个是user,另一个是root:

<user name="test">
         <property name="password">test</property>
         <property name="schemas">yeyz</property>
</user>
   <user name="root">
         <property name="password">123456</property>
         <property name="schemas">yeyz</property>
   </user>

3

rule.xml解析

rule.xml的配置用于数据分片规则定义。Schema.xml中表格配置的rule都是在rule.xml中定义的。

04

关于实验

要想详细了解mycat,还需要做很多实验。关于mycat的实验分为很多类型,读写分离,高可用等等,后续将会多用几篇文章来阐述,今天先这么多吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档