zoukankan      html  css  js  c++  java
  • Mycat 读写分离

    Mycat 读写分离:

             读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。主数据库进行写操作后,数据及时同步到所读的数据库,尽可能保证读、写数据库的数据一致,比如MySQL的主从复制、Oracle的data guard、SQL Server的复制订阅等。


    看上图  我们要进行对数据库的查询操作 当Mycat收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字
    段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集和处理所有分片返回的结果
    数据,并输出到客户端。以select * from Orders where prov=?语句为例,查到prov=wuhan,按照分片函数,wuhan返回
    dn1,于是SQL就发给了MySQL1,去取DB1上的查询结果,并返回给用户。

    我们下面来进行 对Mycat的操作和使用

    首先  要进入 Mycat的官网

    Mycat官网:http://www.mycat.io/
    官网了解Mycat原理。

    Mycat下载地址:http://dl.mycat.io/

    下载:
    建议大家选择 1.6-RELEASE 最新版本。

    进行使用Linux部署Mycat

    上传 解压缩到  tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local

    会解压缩成一个Mycat的文件夹,进入文件夹 显示有七个目录  bin catlet conf lib logs tmlogs version.txt ,我们只需要用到 bin 和 conf  文件夹,

    进入conf 文件夹, vi ./schema.xml  来配置 schema.xml 文件  下面给大家展示一下我的配置

    1 <?xml version="1.0"?> 2 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 3 <mycat:schema xmlns:mycat="http://io.mycat/"> 4 5 <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> 6 <!-- auto sharding by id (long) --> 7 <table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> 8 9 </schema> 10 <dataNode name="dn1" dataHost="localhost1" database="dome1" /> 11 <dataNode name="dn2" dataHost="localhost1" database="dome2" /> 12 <dataNode name="dn3" dataHost="localhost1" database="dome3" /> 13 <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" /> 14 <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" /> 15 <dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" /> 16 <dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> --> 17 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" 18 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 19 <heartbeat>select user()</heartbeat> 20 <!-- can have multi write hosts --> 21 <writeHost host="hostM1" url="192.168.79.133:3306" user="root" 22 password="5-*8;P=etsKz"> 23 </writeHost> 24 </dataHost> 25 </mycat:schema>

     

    配置了三个数据库,接下来看下 server.xml文件  vi ./server.xml   

    直接翻到最下面 看一下用户

     1         <user name="root" defaultAccount="true">
     2                 <property name="password">root</property>
     3                 <property name="schemas">TESTDB</property>
     4 
     5                 <!-- 表级 DML 权限设置 -->
     6                 <!--
     7                 <privileges check="false">
     8                         <schema name="TESTDB" dml="0110" >
     9                                 <table name="tb01" dml="0000"></table>
    10                                 <table name="tb02" dml="1111"></table>
    11                         </schema>
    12                 </privileges>
    13                  -->
    14         </user>

    配置好server.xml 文件后  进入mysql  把mysql中的mysql.user表中的root 用户的 host改为%后,重启mysql,mycat连接后就可以操作表了


    退出conf文件夹  进入bin 文件  

    ./mycat console
    

      当显示 

      已经启动成功

    便可以使用 Mycat连接mysql   Mycat 默认端口号是 8066

    我使用的是  Centos:7

    完毕!

    谢谢大家!

  • 相关阅读:
    Linux 查看磁盘读写速度IO使用情况
    Kubernete安装
    jenkins问题解决
    Jenkins用HTTP Request Plugin插件进行网站的监控/加探针(运维监控)
    golang信号signal的处理
    修改docker仓库资源的地址
    centos7修改hostname
    同步CentOS时间
    CentOs查那个目录占空间大
    CentOS7主机名的修改
  • 原文地址:https://www.cnblogs.com/min5352326/p/10256829.html
Copyright © 2011-2022 走看看