mycat的相关操作

一笑奈何 提交于 2019-12-04 17:53:28

1.Mycat的简介

  Mycat是数据库中间件

  作用:1,读写分离  2,数据分片(垂直拆分分库,水平拆分分表,垂直拆分+水平拆分)3,多数据源整合

  

  原理:就是拦截 (类似于nginx

  

 

   

  1. mycat的安装与启动
  2. mycat的安装包解压到/opt目录下
  3. 拷贝解压后的mycat文件夹到 /usr/local/目录下

      cp -r ./mycat /usr/local 

  1. 修改mycat安装目录下的配置文件

    首先进入到安装目录 cd /usr/local/mycat/conf

    修改server.xml文件(用户定义以及相关系统变量等)

    

    其次.修改schema.xml文件(定义逻辑库,表,分片节点等内容)

 

 

     

 

     其中 schema标签 name 是表示逻辑库的名字(在server.xml中配置的)

    dataNode标签 表示数据节点,在schema表前中,表示默认使用 dataNode=dn1的数据节点

    <dataNode>标签就是表示数据节点标签,name属性就是当前数据节点的名字, dataHost表示指向的<dataHost标签>

    database对应mysql上的数据库

    <dataHost标签> 最重要的balance属性.设置mycat负载论衡类型

   

 

   <writeHost>表示哪台机器充当写主机

 

   <reatHost>表示哪台机器充当读主机

 

   启动之前验证你的数据库访问情况.看看用户是否有权限访问

 

 

 

  mysql -uroot -proot -h 本机ip地址 -P 3306

 

  

  mysql -uroot -proot -h 虚拟机IP地址 -P 3306

 

 

   

 

  如本机远程访问报错,请建对应用户(给予用户远程连接的权限)

 

  grant all privileges on *.* to root@'缺少的host'  identified by '123123';

 

  启动之前mysql数据库中必须有对应在配置文件中写的数据库,如若没有,请启动之前在mysql主机创建对应的数据库

 

  

  1. 启动mycat服务

 

   方式一:控制台启动 :去mycat/bin 目录下 mycat console

 

    方式二:后台启动 :去mycat/bin 目录下 mycat start

  

 

   看到启动成功就可以了

  1. 登录到mycat程序

    

 

   6.可以查看mycat中的数据库(就一个在server.xml中配置的逻辑库)

 

    

 

   此时,mycat环境就搭好了(一主一从,)

 

  mycat环境的搭建前提是待搭建好mysql的主从复制

  

  1. 读写分离。

 

要是实现读写分离操作只需要在schema.xml文件中修改balance属性的值

 

 

 

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

 

1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。

 

2. balance="1",全部的 readHost  stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1M2->S2,并且 M1  M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。

 

3. balance="2",所有读操作都随机的在 writeHostreadhost 上分发。

 

4. balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

 

怎么查看查询用的是主机还是从机?

 

 在主机数据库中执行 INSERT INTO 表名 VALUES(3,@@hostname);语句

 

 此时在mycat查询表,可以看出mycat的逻辑表TESTDB没有用到读写分离,此时

 

需要在schema.xml文件的 balance属性值

 

修该balance的值后重启mycat 就可以看到读写分离的效果了

 

 

 

mycat下查看表的主机名,就可以验证是否是读写分离了

 

 

 

以上balance值我设置的是2,随机从主机和从机读取数据。

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!