zoukankan      html  css  js  c++  java
  • mysql 中间件 mycat

    中间件介绍

    mycat 搭建(双主双从架构)

    特点

    1.只是作为代理供客户端访问,客户端访问请求过来后再由mycat 去后端数据库操作。做读写分离,负载均衡使用,数据库挂了不会启动,会检查后端数据库存活情况,宕机的不再访问。

    2.作为代理给客户端访问的是mycat 配置的虚拟数据库虚拟用户密码,这样有一定安全防护作用

    3.client  ----> 虚拟用户/虚拟库 ----> 真是用户/真实库

    Tips

    双主双从架构,写入时最好是单主写入,第一个主挂了再去第二个主写入。
    
    mycat 为解决单点故障最好配置keepalived 
    View Code

    搭建配置

    后端数据库端配置

    create database bbs;
    插入数据到bbs中
    grant all on *.* to bbsuser@'192.168.231.104'  identified by "1qaz@WSX";
    #授权mycat能够访问后端数据库
    flush privileges;
    show grants for bbsuser@'192.168.231.104';
    View Code

    mycat 配置(安装省略)

    vi server.xml

    删除用户区域其他配置,只保留有用配置。
    <user name="mycatuser">        #client连接的虚拟用户
    <property name="password">123456</property> #client 连接密码 
    <property name="schemas">bbsdb</property>     #虚拟db 与schame 中对应
    </user>    
    View Code

    vi schemas.xml

    <mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="bbsdb" checkSQLschema="false" sqlMaxLimit="100" 
              dataNode="dn1">     
            <!-- 标签中添加了dataNode="dn1" -->
        <!--由于为针对特定的表做读写所以中间区域删除了关于表的定义-->
        </schema>
        
            <dataNode name="dn1" dataHost="localhost1" database="bbs" />                                                 
            <!-- dn1对应前面的dataNode,localhost1可自定义对应后面localhost1,bbs为真 
                   实数据库名 -->
        
           <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"                                       
         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  
             slaveThreshold="100">
              <heartbeat>select user()</heartbeat>
            
                  <writeHost host="hostM1" url="192.168.231.100:3306" 
                       user="bbsuser" password="1qaz@WSX">          
                   <!-- host自定义,url真实IP地址端口,user 数据库授权的用户,password 
                       授权用户的认证密码 -->
                <readHost host="hostS1" url="192.168.231.102:3306" 
                               user="bbsuser" password="1qaz@WSX" /> <!-- slave1 -->
                <readHost host="hostS2" url="192.168.231.103:3306" 
                              user="bbsuser" password="1qaz@WSX" /> <!-- slave2 -->
            </writeHost>
            
                    <writeHost host="hostM2" url="192.168.231.100:3306"     
                      user="bbsuser" password="1qaz@WSX">         
                    <!-- host自定义,url真实IP地址端口,user 数据库授权的用户,password 
                       授权用户的认证密码 -->
                <readHost host="hostS1" url="192.168.231.102:3306" 
                              user="bbsuser" password="1qaz@WSX" /> <!-- slave1 -->
                <readHost host="hostS2" url="192.168.231.103:3306" 
                              user="bbsuser" password="1qaz@WSX" /> <!-- slave2 -->
            </writeHost>
        </dataHost>
    </mycat:schema>
    
    
    <!-- balance 0 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上,
    全部的 readHost 与第二个writeHost 参与 select 语句的负载均衡,
    所有读操作都随机的在 writeHost、 readhost 上分发, 
    所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读 
            压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有 
    -->     
    
    <!-- writeType="0",所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生 
       存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件 
       中:dnindex.properties .
      "1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。
       "2",官方文档没有介绍。
    -->
    View Code

    /opt/mycat/bin/mycat start        #注意启动前必须把主机名在hosts文件中配置解析否则无法启动

    mysql -umycatuser -p'123456' -h'192.168.231.104'  -P8066      #8066为mycat 端口

     关于读写分离,负载配置

    <!-- balance 0 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上,
        1 全部的 readHost 与第二个writeHost 参与 select 语句的负载均衡,
        2 所有读操作都随机的在 writeHost、 readhost 上分发, 
        3 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有 
    -->     
    
    <!-- writeType="0",所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
         "1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。
         "2",官方文档没有介绍。
    -->
    View Code
  • 相关阅读:
    elastic-job-lite-console运维平台的部署使用
    elastic-job简单入门
    23种设计模式学习之单例模式
    23种设计模式学习之抽象工厂模式
    23种设计模式学习之静态工厂方法模式
    微信公众号开发之-回调的所有类型
    nginx学习-超详细nginx配置文件
    nginx学习-简介
    23种设计模式学习之一
    linux 下jenkins安装
  • 原文地址:https://www.cnblogs.com/fanggege/p/11221626.html
Copyright © 2011-2022 走看看