• Mycat主从分离


    1. mycat原理

      主从的读写是不同的,主能写能读,再从上写是无法同步到主的,因此需要中间件将主从的读写进行分离,使得主从各司其职,相当于负载均衡的作用。中间件可以是proxy或者mycat。客户端访问的时候并不是访问主从数据库,而是通过mycat分发给主从,与lvs不同的是,mycat可以识别SQL语句的读写,根据读写类型分发给主从数据库。

    1.1  mycat的实验环境

      1)三台主机:
      在三台机器/etc/hosts添加以下3条主机信息

      mycat:192.168.16.5

      hostM1:192.168.16.4

      hostS1:192.168.16.6

      2)需要安装java1.8版本或以上

      3)下载mycat源码包

      wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

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

      mv mycat /usr/local/

    1.2  mycat的配置

      配置文件: /usr/local/mycat/conf/server.xml

      设置如下参数

    <user name="testuser1">
    <property name="password">testuser1</property>
    <property name="schemas">testdb,testdb1</property>         #逻辑库,有几个真实库配几个逻辑库
    </user>
    <user name="testuser2">
    <property name="password">testuser2</property>
    <property name="schemas">testdb,testdb1</property>
    <property name="readOnly">true</property>
    </user>

      #testuser1用来写的用户

      #testuser2用来读的用户

      #testdb是mycat是逻辑库

      配置文件vim /usr/local/mycat/conf/schema.xml,先备份cp schema.xml schema.xml.bak

      设置参数如下

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="testdb" checkSQLschema="false" sqlMaxLimit="1000" dataNode="dn1">                    #逻辑库对应节点,节点对应真实的数据
    </schema>
    <schema name="testdb1" checkSQLschema="false" sqlMaxLimit="1000" dataNode="dn2">
    </schema>
    
    <dataNode name="dn1" dataHost="hostM1" database="test" />
    <dataNode name="dn2" dataHost="hostM1" database="test1" />
    <dataHost name="hostM1" maxCon="2000" minCon="1" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType=
    "1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="192.168.16.4:3306" user="testuser1" password="testuser1">
    <readHost host="hostS1" url="192.168.16.6:3306" user="testuser2" password="testuser2" />
    </writeHost>
    </dataHost>
    </mycat:schema>

      dataHost为数据节点名称,database为真实数据库名称即后台数据库test和test1。

      balance:

      0表示不开启读写分离,都在master上执行读写操作

      1表示都参与select

      2表示所有读请求随机在readhost和writehost分担

      3表示所有读请求对应到readhost里去

      writeType

      0,所有写操作发送到配置的第一个writeHost

      1,所有写操作都随机的发送到配置的writeHost

      2,不执行写操作。

      switchType

      -1,不自动切换

      1,默认值,自动切换

      2,基于MySQL 主从同步的状态决定是否切换

      3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like &lsquo;wsrep%&rsquo;

      writeHost和readHost分别配置对应后台的mysql主从真实用户密码

    1.3  创建用户并赋予权限(主创建同步到从)

    grant all on *.* to testuser1@'%' identified by 'testuser1';
    grant all on *.* to testuser2@'%' identified by 'testuser2';

    1.4  启动mycat服务并查看端口

    /usr/local/mycat/bin/mycat start

      8066是管理端口

      9066是连接后端数据库的端口,默认是9066,登录该端口后直接用show @@datasource;语句即可查询主从库的读写状态

      mysql -h 192.168.254.24 -P8066 -utestuser1 -ptestuser1    (可以执行增删改查)

      mysql -h 192.168.254.24 -P9066 -utestuser1 -ptestuser1     (可以查看节点状态)

      查看心跳状态

      show @@heartbeatG

      #查看前端连接状态(mycat)

      show @@connectionG

      #查看后端状态

      show @@backendG

       #查看数据库资源状态

      show @@datasource

  • 相关阅读:
    2022春季 哈工大 硕士算法设计与分析 实验一分治算法
    2022 春季 硕士 算法设计与分析 作业
    Ubuntu18.04 没有有线网图标 可以连接wifi
    2022春季 哈工大 硕士算法设计与分析 实验二 搜索算法
    将博客搬至CSDN
    【面向对象课】作业Inherit
    [面向对象课]第二周上机
    CFA 金融工程 2.利用期货的对冲策略
    CFA 金融工程 1.导论:看涨看跌期权/多空头;积木分析法
    移动应用程序开发5 vue
  • 原文地址:https://www.cnblogs.com/ajunyu/p/10921619.html
Copyright © 2020-2023  润新知