zoukankan      html  css  js  c++  java
  • Mycat(1)

    https://www.jianshu.com/p/26513f428ecf

     https://blog.csdn.net/fly910905/article/details/87101059

    https://cloud.tencent.com/developer/article/1367290

    http://www.mycat.io/

    Mycat 下载地址,http://dl.mycat.io/1.6-RELEASE/

    https://www.cnblogs.com/rangle/p/8176362.html

    根据你的版本,我这边选择的是windows的,没有搞虚拟机去玩Linux;

    然后开始运行这个Mycat服务,mycat我的感受就是一个虚拟的中间件,他会拦截你的sql,在你的SQL在begin之前帮我们做了很多规则的拆分;

    下图是从其他地方贴过来的,大概这个是这么个意思;

    比如你要做读写分离,当然还有其他解决方案,你要做水平拆分,或者垂直拆分,他会提供很多规则给你,可以结合自己的业务去看;

    下面说下自己在整合的过程中遇到的问题,

    首先介绍下myCat的几个目录一个bin,一个config,这两个目录没什么好说的,跟tomcat、redis等都是一样的;

    在bin中启动,config配置你的各种策略;

    bin中启动的时候一定要用管理者模式启动,直接windows+R启动的模式不是管理者模式,网上有截图

    管理员启动的方式,参考百度经验:https://jingyan.baidu.com/article/ceb9fb10b53ab88cac2ba05b.html

     

    上面这个是一种简单的方式,仅供大家参考;

    打开的命令界面模式是下面这样的,蓝色的背景哦;

    然后启动的日志的话就在logs里面,自己可以去看,在启动的过程中遇到问题的话可以通过日志去查看

     下面说下自己遇到的坑:

    这个mycat默认的端口是8066,如有端口被占用的话会一直起不来,你需要去杀掉相关进程后再启动;

    conf中有3个配置文件一个schema.xml,rule.xml,server.xml

    我根据自己的理解简单的说下这个3个文件是干啥的,先从简单的来,

    rule.xml里面有格式各样的拆分规则,就是你需要把你的表按照什么规则去拆分,就像java中的一个工厂,里面有各种各样的规则,你要什么就配什么

    server.xml就是你虚拟的Mycat服务的配置信息,在你项目中jdbc的数据源URL配置的就是这个里面的,包括用户名,密码,我们的应用第一步不是跟数据库直连,而是通过这个mycat代理

    进行相应的路由再到具体的业务库;

    schema.xml核心配置文件,这个里面需要配置你的表,拆分的业务数据库的信息;

    下面贴图给大家看下我的实验结果,两个库,不是一个库中的两个实例,不然好像会有问题!

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
            <table name="t_shark_user" primaryKey="id"  dataNode="dn1,dn2" rule="rule1"/>
        </schema>
        <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
            /> -->
        <dataNode name="dn1" dataHost="localhost1" database="shark" />
        <dataNode name="dn2" dataHost="localhost2" database="test" />
        
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                  writeType="0" dbType="mysql" dbDriver="native"  switchType="1">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="localhost:3306" user="root"
                       password="root">
                
            </writeHost>
        
        </dataHost>
        
        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
                  writeType="0" dbType="mysql" dbDriver="native"  switchType="1">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="xx.xx.xx.xx:3306" user="test"
                       password="test">
                <!-- can have multi read hosts -->
                <!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />-->
            </writeHost>
            <!--
            <writeHost host="hostS1" url="localhost:3316" user="root"
                       password="123456" />
            -->
            <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>
        
    </mycat:schema>

    我们在spring的XML直接配置成

    url=jdbc:mysql://127.0.0.1:8066/TESTDB
    password跟name都mycat的虚拟TESTDB,不是我们实际的数据库,

    下面就OK,看效果了

     按照ID进行拆分了,大概是这么个情况;

    不过现在大多数人都不用Mycat,

    shareingJDBC的方案好像是个趋势,感觉Mycat的是个黑盒,出了问题,都不好定位;未完待续
  • 相关阅读:
    iOS 8 界面设计 PSD 模板(iPhone 6),免费下载
    20个华丽的时间轴例子,寻找网页设计灵感
    Hello.js – Web 服务授权的 JavaScript SDK
    Web 开发人员和设计师必读文章推荐【系列三十】
    Arctext.js
    30套免费的响应式 HTML5 & CSS3 模板下载
    Midnight.js – 实现奇妙的固定头部切换效果
    推荐20个很有帮助的 Web 前端开发教程
    SweetAlert – 替代 Alert 的漂亮的提示效果
    其实每个行业都有各自的辛苦,好的程序员并不累,他们乐此不疲(见过太多在职位事业、人生方向上随转如流的人,累了疲乏了就去做别的事情了。必须有自己的坚守和立足的点,自我驱动,否则沦为在别人的体制制度中被驱赶一生)good
  • 原文地址:https://www.cnblogs.com/longxok/p/10999744.html
Copyright © 2011-2022 走看看