专栏首页DBA随笔Mycat数据库中间件简介

Mycat数据库中间件简介

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的实验分为很多类型,读写分离,高可用等等,后续将会多用几篇文章来阐述,今天先这么多吧。

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447),作者:AsiaYe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • datax数据流转小试牛刀

    最近在做MySQL向infobright的迁移工作,用的方法是shell脚本的方法。之前听说过有datax的方法也可以做数据流转,今天下班后,就试了试dat...

    AsiaYe
  • MySQL之mysqladmin客户端

    在我们日常操作中,drop操作应该谨慎一些,可以看到,mysql也友好的给出了提醒。

    AsiaYe
  • MySQL中的sql_mode参数

    对于group by聚合操作,如果在select中的列,没有在group by中出现,那么将认为这个sql是不合法的,因为列不在group by从句中。这里我们...

    AsiaYe
  • python中创建和遍历二叉树

    py3study
  • 利用rbd命令把 ceph pool 中的一个镜像导出

    查看镜像 [root@node1 ~]# rbd ls images a56330e7-79d7-4639-a68f-366ac344bfe2 eccfee07...

    院长技术
  • 每天一道剑指offer-二叉树的镜像

    今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

    乔戈里
  • 【趣学程序】Linux流的重定向

    趣学程序-shaofeer
  • 浏览器环境检测

    本文是直接把seleniumpyppeteer 以及正常打开浏览器 的环境差异直接列出来

    爬虫
  • Golang Leetcode 450. Delete Node in a BST.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89175007

    anakinsun
  • 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kd...

    Michael阿明

扫码关注云+社区

领取腾讯云代金券