zoukankan      html  css  js  c++  java
  • Mycat详解及配置读写分离(Centos7)

    一.理论概述

    • 原理简述
      参考文档
      MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。

    • 功能简述

    1. 对数据库分片
      通过设置条件,将统一数据库中的数据分散的存储到多个数据库中,达到负载均衡的效果
    2. 水平拆分
      同一张表的不同记录,根据表的某个字段的某种规则拆分到多个数据库(主机)上,这既是水平拆分。单库业务表可能会过于庞大,存在单库读写与存储瓶颈,这种情况可以通过水平拆分解决
    3. 垂直拆分
      不同的表切分到不同的数据库(主机)上,这就是垂直拆分。
      一般按照业务表进行分类,划分为不同的业务、模块库,耦合度越低,越容易做垂直拆分
    4. 读写分离

    mycat功能也比较强大,本案例只是针对于读写分离进行测试

    二.环境

    ip 角色
    192.168.111.8 mycat
    192.168.111.100 写动作数据库
    192.168.111.200 读操作数据库

    三.部署

    官网地址:http://www.mycat.io/

    下载地址:http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

    文档地址:http://www.mycat.io/document/Mycat_V1.6.0.pdf

    • 部署mycat
    [root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz 
    [root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java8
    
    [root@localhost ~]# rm -rf /usr/bin/java
    
    [root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java8' >> /etc/profile
    [root@localhost ~]# echo 'PATH=$PATH:/usr/local/java8/bin' >> /etc/profile
    [root@localhost ~]# source /etc/profile
    [root@localhost ~]# java -version
    java version "1.8.0_191"
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
    
    [root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
    
    [root@localhost ~]# groupadd mycat
    [root@localhost ~]# useradd -r -g mycat mycat
    [root@localhost ~]# chown -R mycat.mycat /usr/local/mycat/
    
    #下面是添加环境变量
    [root@localhost ~]# echo 'PATH=$PATH:/usr/local/mycat/bin' >> /etc/profile
    [root@localhost ~]# source /etc/profile
    
    [root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local
    
    [root@localhost ~]# vim /usr/local/mycat/conf/server.xml 
    
     80         <user name="root"> #连接mycat的用户名
     81                 <property name="password">123456</property> #连接mycat对应的密码
     82                 <property name="schemas">test</property> #使用该用户名登录时,是用哪个数据库,这里写的是逻辑库名,在scheme.xml中会与物理库库名关联起来
    
    
    94 <!--
    95         <user name="user">
    96                 <property name="password">user</property>
    97                 <property name="schemas">TESTDB</property>
    98                 <property name="readOnly">true</property>
    99         </user>
    100 -->
    #将这些注释掉,暂时用不到,我们只用上面一个用户
    
    #这个配置文件就这些
    
    5         <schema name="test" checkSQLschema="false" sqlMaxLimit="100">
      6           <table name="test1" dataNode="dn1"/>
      7           <table name="test2" dataNode="dn1"/>
      8           <table name="test3" dataNode="dn1"/>
      9           <table name="test4" dataNode="dn1"/>
     10           <table name="test5" dataNode="dn1"/>
     11         </schema>
    #这些是提前定义的表,将这些表都写入dn1,dn1主机在下面配置文件会定义
    
     14         <dataNode name="dn1" dataHost="test1" database="test" />
     #database指定物理数据库的库名,将dn1,关联到test1,test1在下面配置文件定义
     
     15         <dataHost name="test1" maxCon="1000" minCon="10" balance="1"
     16                           writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
     #name:物理数据库名,与dataNode中dataHost对应
     #calance:均衡负载的方式;1表示开启读写分离
     #dbType:数据库类型
     #writeType:写入方式
     
     17                 <heartbeat>select user();</heartbeat>
     #heartbeat:心跳检测语句,注意语句结尾的分号要加。
     
     18                 <writeHost host="hostM1" url="192.168.111.100:3306" user="root"
     19                                    password="123456">
     20                     
     21                         <readHost host="hostS2" url="192.168.111.200:3306" user="root" password="123456" />
     22                 </writeHost>
     24         </dataHost>
    #以上配置达到的效果就是192.168.111.100为主库,192.168.111.200为从库。
    #Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost
    
    
    
    [root@localhost ~]# /usr/local/mycat/bin/mycat start
    #启动服务
    
    [root@localhost ~]# netstat -lnpt | grep 8066
    tcp6       0      0 :::8066                 :::*                    LISTEN      60034/java    
    
    [root@localhost ~]# yum -y install mariadb
    [root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
    #安装mysql工具,进行测试一下
    
    [root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
    
    
    MySQL [(none)]> 
    
    
    

    暂时完结...

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/jojoword/p/10898827.html
Copyright © 2011-2022 走看看