Mycat的安装启动和读写分离

介绍:

  Mycat作为数据库中间件,用来实现读写分离、数据分片(垂直拆分/水平拆分)、多数据源整合等功能。

原理:

  Mycat通过拦截用户发过来的SQL语句,并对其进行特定的分析,如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端对应的数据库,并将返回的结果做适当的处理,最终返回给用户。

安装启动:

  1、将Mycat的tar.gz格式的压缩包拷贝到Linux系统下的opt目录下

  2、使用Linux的编辑脚本(如Xshell),进入到opt目录下解压压缩文件(tar -zxvf 文件名)

  3、将解压后的文件复制到/usr/local目录下(cp -rv mycat /usr/local)

  4、启动前先修改schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
      <!--逻辑库 name名称, checkSQLschema sqlMaxLimit 末尾是否要加 limit xxx-->
      <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
        <!--逻辑库 name名称, dataHost 引用的哪个dataHost database:对应mysql的database-->
        <dataNode name="dn1" dataHost="host1" database="数据库名" />
          <dataHost name="host1" maxCon="1000" minCon="10" balance="0"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="写主机ip:3306" user="xxx" password="xxx">

              <readHost host="hostM2" url="读主机ip:3306" user="xxx" password="xxx">
            </writeHost>
          </dataHost>
    </mycat:schema>

  5、验证数据库的访问情况(读写主机都需要使用远程访问的形式进行验证是否连通)

    mysql -u用户名 -p密码 -h对应ip地址 -P3306(写主机)

    mysql -u用户名 -p密码 -h对应ip地址 -P3306(读主机)

    注:

      如本机远程访问报错,请建对应用户(mysql -u用户名 -p密码)
      grant all privileges on *.* to root@'缺少的host' identified by '密码';

  6、先使用前台启动,确认是否能启动成功。去mycat/bin 目录下执行 ./ mycat console。

  7、(可选择性更改,ctrl+c关闭之后修改,改后再启动)为了区分mycat和mysql的用户名可以进行配置文件的修改server.xml

     <user name="mycat">
      <property name="password">123456</property>
      <property name="schemas">TESTDB</property>
     </user>

  8、登录mysql -umycat -p123456 -P8066 -h 主机ip

  9、后续一系列操作show databases、use TESTDB、show tables

  10、配置读写分离,修改schema.xml的balance(配置成3)

    负载均衡类型,目前的取值有4 种:

    (1)balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
    (2)balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
    (3) balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
    (4) balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

猜你喜欢

转载自www.cnblogs.com/i-fly/p/10242114.html