我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > Linux下安装mycat分布式数据库中间件
总共48086条微博

动态微博

查看: 2318|回复: 0

Linux下安装mycat分布式数据库中间件

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-06-12 15:44:36 |只看该作者 |倒序浏览
            最近在看数据库主从,来实现读写分离。正好有有网友问到高并发的问题,所有就搜了一下数据库中间件的东东。一不小心就搜到了mycat,果然是神器。废话不多说,上文档。

    一、简介
    mycat基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。

    MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。

    MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。
    MYCAT架构



    二、安装使用

    下载地址: https://github.com/MyCATApache/M ... /master/1.4-RELEASE

    或者 wget  https://github.com/MyCATApache/M ... 230038-linux.tar.gz

    下载的文件直接解压即可。

    tar -xzvf  Mycat-server-1.4-release-20151019230038-linux.tar.gz

    配置xml:

    MyCAT目前通过配置文件的方式来定义逻辑库和相关配置,主要是包括三个文件:
    MYCAT_HOME/conf/schema.xml中定义逻辑库,表、分片节点等内容。
    MYCAT_HOME/conf/rule.xml中定义分片规则。
    MYCAT_HOME/conf/server.xml中定义用户以及系统相关变量,如端口等。

    schema.xml模版配置 :
    1. <?xml version="1.0"?>
    2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    3. <mycat:schema xmlns:mycat="http://org.opencloudb/">

    4.     <schema name="db1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    5.     </schema>
    6.     <dataNode name="dn1" dataHost="localhost1" database="db1" />

    7.     <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
    8.         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    9.         <heartbeat>select user()</heartbeat>
    10.         <!-- can have multi write hosts -->
    11.         <writeHost host="hostM1" url="192.168.1.180:3306" user="root"
    12.             password="root">
    13.         </writeHost>
    14.     </dataHost>
    15. </mycat:schema>
    复制代码


    比如在这个配置文件里面,就配置了一个数据库,db1。
    注意:MyCAT对外端显示出来的数据库,和数据库里面的表,全部在schema里面配置,没有写在这个里面的表或者库,即使后端的MySQL里面存在,也无法通过MyCAT去访问,不过MyCAT不会去定义具体表的结构。
    然后是datanode,这个属性指定了schema的表,具体存放在哪个数据库,比如这个配置里面,指定了dn1的数据节点位于localhost1,这个数据库实例的名为db1的数据库。
    datahost列出了实际的后端MySQL集群的具体信息,writehost是负责写入数据的MySQL实例,writehost是负责读的MySQL实例,如果两个实例的具体信息写成一样,那就意味着后端使用单实例,如果配置成不同的实例,那么就在两个实例之间配置主从同步,然后通过MyCAT实现读写分离
    对数据库进行垂直切分,主要由schema.xml来完成。

    rule.xml如示例
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE mycat:rule SYSTEM "rule.dtd">
    3. <mycat:rule xmlns:mycat="http://org.opencloudb/">
    4. <tableRule name="rule">
    5.     <rule>
    6.       <columns>user_id</columns>
    7.       <algorithm>func1</algorithm>
    8.     </rule>
    9. </tableRule>
    10. <function name="func1" class="org.opencloudb.route.function.PartitionByLong">
    11.     <property name="partitionCount">2</property>
    12.     <property name="partitionLength">512</property>
    13. </function>
    14. </mycat:rule>
    复制代码
    rule.xml里面的配置主要用于对表的水平切分,MyCAt本身提供了很多种水平切分的策略,这个示例显示的是取模分片,总共分成四片,user_id对1024取模,然后分成两片,每一片512个。

    server.xml如示例
    1. <!DOCTYPE mycat:server SYSTEM "server.dtd">
    2. <mycat:server xmlns:mycat="http://org.opencloudb/">
    3.     <system>
    4.         <property name="sequnceHandlerType">0</property>
    5.     </system>
    6.     <user name="test">
    7.        <property name="password">test</property>
    8.        <property name="schemas">db1</property>
    9.     </user>
    10. </mycat:server>
    复制代码


    server.xml里面配置MyCAT的逻辑库参数,如示例,配置的就是逻辑库db1的登录用户名和密码。

    内存配置:

    启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,如内容为2G和2048,可根据本机配置情况修改为512M或其它值。 以下配置跟jvm参数完全一致,可以根据自己的jvm参数调整。

    linux下命令:

    ./mycat start 启动
    ./mycat stop 停止
    ./mycat console 前台运行
    ./mycat install 添加到系统自动启动(暂未实现)
    ./mycat remove 取消随系统自动启动(暂未实现)
    ./mycat restart 重启服务
    ./mycat pause 暂停
    ./mycat status 查看启动状态


    下面是一些Mycat关键特性
    支持SQL92标准
    遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
    基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
    支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
    基于Nio实现,有效管理线程,高并发问题。
    支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
    支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
    支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
    支持多租户方案。
    支持分布式事务(弱xa)。
    支持全局序列号,解决分布式下的主键生成问题。
    分片规则丰富,插件化开发,易于扩展。
    强大的web,命令行监控。
    支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
    支持密码加密
    支持服务降级
    支持IP白名单
    支持SQL黑名单、sql注入攻击拦截
    支持分表(1.6)

    测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接。

    推荐先采用命令行测试:

    mysql -uroot -proot -P8066 -h127.0.0.1



    如果采用工具连接,1.4,1.3目前部分工具无法连接,会提示database not selected,建议采用高版本,navicat测试。1.5已经修复了部分工具连接。SQLyog 连接貌似有点问题。



    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表