zoukankan      html  css  js  c++  java
  • Mycat配置主从数据-集群搭建

    1、读写分离mycat

    a、 读写分离
      读--》读操作服务器只负责读
      写--》写操作服务器只负责写
    b、分表分库
      (微服务)垂直拆分:系统(订单,用户)
      mycat研究对象-》水平拆分:订单(订单1/订单2)
      haproxy:搭建多个mycat集群
    集群:防止单点故障
      当一个机器宕机了以后,另一个机器会启作用,进行数据传输和备份。

    2、原理图

     3、安装mycat

      a. 解压文件

    tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 

      b. 移动到软件目录

     mv mycat/ /usr/ 

      c. 进入/usr/mycat/conf中配置三个文件

    Server.xml

      这里是root用户密码的设置,同时逻辑分库表的名字

        <user name="root">
            <property name="password">root</property>
            <property name="schemas">mydb</property>        
        </user>

    schema.xml 

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
        <schema name="mydb" checkSQLschema="false" sqlMaxLimit="100">
            <!-- 分表 name是分表  dataNode拆分后的切片的位置  rule拆分规则 -->
            <table name="student" dataNode="dn1,dn2" rule="myrule" />
            
        </schema>    
        <!--datahost设置读写分离的地址  database拆分后为mydb01和02-->
        <dataNode name="dn1" dataHost="localhost1" database="mydb01" />
        <dataNode name="dn2" dataHost="localhost1" database="mydb02" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
                  <!--发送心跳确是否出故障-->
            <heartbeat>show slave status</heartbeat> <!--select user()-->
            <writeHost host="hostM1" url="192.168.209.135:3306" user="root"
                       password="root">
                <readHost host="hostS2" url="192.168.209.137:3306" user="root" password="root" />
            </writeHost>
            
        </dataHost>
    </mycat:schema>

    部分参数解析

      balance:读请求的负载均衡 

    0:不开启读写分离,所有读操作都发送到writehost中

    1:全部的readhost和stand by writehost都参与读操作的负载均衡

    2:读请求随机发送给readhost或writehost

    3:读请求随机发送给writehost中的readhost

      writeType:写请求的负载均衡

    0:写请求先发送给schema.xml中的第一个writehost。

    当第一个writehost挂掉后给第二个,切换 记录会被记录在conf/dnindex.properties

    1:写请求随机发送到所有的writehost中

      switchType:是否允许读操作在readhost和writehost中自动切换(解决延迟问题,当从readhost中读 取数据出现网络延迟时,自动从writehost中读取)

    -1:不允许

    1:允许

    2:根据主从同步的状态,自动选择是否切换 心跳设置必须为show slave status

    rule.xml

    这是是算法的区分
        <tableRule name="mod-long">
            <rule>
                <columns>id</columns>
                <algorithm>mod-long</algorithm>
            </rule>
        </tableRule>
    
    下面的算法的实现

    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
    <!-- how many data nodes -->
    <property name="count">3</property>
    </function>

    在主从底层数据库中进行数据参加

    create database mydb01; 
    create table student(id int(4),name varchar(10));
    create database mydb02;
    create table student(id int(4),name varchar(10));

    启动mycat

    开启     bin/mycat start 
    关闭     bin/mycat stop 
    查看状态    bin/mycat status

    登录mycat

    mysql -uroot -proot -P8066 -h(mycat所在服务器ip)

     测试

    插入数据
    select * from student;
    insert student (id, name) values (88, 'nihao');

    测试思路:

      读写分离,读从主slave中读,写从master写入。

      在master中插入数据,能查询到两个库中的数据。

      在slave中插入数据,由于slave是从数据库,所以数据不会同步到master,所以从master读是读不到的,只有从slave中读才能得到数据,得到验证。

     

     

      

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/HelloM/p/14189996.html
Copyright © 2011-2022 走看看