• mycat


    目录:

    1、mycat是什么

      中间件:是一类连接软件和应用的计算机软件,以便于软件各部件之间的沟通。

      例子:tomcat ==>  web 中间件

      数据库中间件:连接 java 应用程序和数据库

    2、数据库中间件对比

    1)Cobar: 属于阿里B2B事业群,始于 2008 年,在阿里服役3年,接管 3000+ 个 MySQL 数据库的 schema,集群日处理在线 SQL 请求 50 亿次以上。由于 Cobar 发起人的离职,Cobar 停止维护。

    2)Mycat 是开源社区在阿里 Cobar 基础上进行二次开发,解决了 Cobar 存在的问题,并且加入了许多新的功能,青出于蓝而胜于蓝。

    3)OneProxy 基于 MySQL 官方的proxy思想利用c进行开发的,OneProxy 是一款商业收费的中间件。舍弃了一些功能,专注在性能和稳定性上。

    4)kingshard 由小团队用go语言开发,还需要发展完善。

    5)Vitess 是 youtube 生产在使用,架构很复杂。不支持 MySQL 原生协议,使用需要大量改造成本。

    6)Atlas 是 360 团队基于 MySQL Proxy改写,功能还需完善,高并发下不稳定。

    7)MaxScale 是 mariadb研发的中间件。

    8)MySQLRoute 是MySQL 官方Oracle 公司发布的中间件。

    3、mycat 能干什么

      读写分离

       数据分片

      多数据源整合

    4、mycat 原理

      mycat 的原理中最重要的一个动词时“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终返回给用户。

     5、mycat 安装

      上传 Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz 到 /usr/local 并解压

      xshell 连接 centos7 服务器,可以使用 xftp将Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz 上传到服务器,也可以先安装工具 lrzsz

    yum -y install lrzsz

      然后将 Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz 拖到 xshell 上面

      解压

    tar -xzvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

    6、启动

    6.1、修改配置文件

      三个配置文件

      1)schema.xml:定义逻辑库、表、分片节点等内容

      2)rule.xml:定义分片规则

      3)server.xml:定义用户以及系统相关变量,如端口等。

      修改 配置文件 server.xml

       修改 schema.xml

    6.2、验证远程访问情况

      mycat 作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况。

    mysql -uroot -p123456 -h 192.168.213.112 -P 3306
    
    如果远程访问报错,请创建对应用户
    grant all privileges on *.* to root@'缺少的host' identified by '密码';

      主机1 192.168.213.111连接上MySQL,执行(将主机192.168.213.112改为% 表示所有主机都可以访问)

     

      主机2 192.168.213.112 连接上 MySQL,执行

       两台主机关闭防火墙

       主机1远程连接到主机2

    6.3、启动程序

      控制台启动:/usr/local/mycat/bin 目录执行 ./mycat console

      后台启动:/usr/local/mycat/bin 目录执行 ./mycat start

      需要jdk环境(安装jdk8,如果按照jdk7会报类找不到)

       主机名解析错误

       vim /etc/hosts

      启动成功

    7、mycat 登陆

      新开一个xshell 窗口,9066端口:此登录方式用于管理维护 Mycat

       8066端口:此登录方式用于通过 Mycat 查询数据,我们选择这种方式访问 Mycat

    8、搭建读写分离

      我们通过 mycat 和 mysql 的主从复制配合搭建数据库的读写分离,实现 mysql 的高可用性。下面将搭建一主一从、双主双从两种读写分离模式。

    8.1、一主一从

      一台主机用于处理所有写请求,一台从机负责所有读请求,架构图如下:

       mysql 主从复制搭建参考:https://www.cnblogs.com/xy-ouyang/p/13388672.html

      搭建的一主一从为:111为主机,112为从机

       mycat 配置文件schema.xml

       启动mycat

       

      连接主机1 mysql -uroot -p123456,创建user表,插入一条记录 insert into user(null,@@hostname,10); 由于使用了@@hostname,这样从机执行这一句sql时得到的结果与主机是不一样的。主机结果:

       从机结果:

       通过mycat访问:竟然访问的是主机(主机负责写操作的)

       出现上面的问题是因为少了一个配置,/usr/local/mycat/conf/schema.xml 的 <dataHost balance="">此属性可以配置读写分离的类型

    1)balance="0",不开启读写分离机制,所有读操作都发送到当前可用的 writeHost上;
    2)balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单说,
    当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2、S1、S2都参与 select 语句的负载均衡; 3)balance="2", 所有的读操作都随机在 writeHost、readHost 上分发; 4)balance="3",所有读请求随机分发到 readHost执行,writeHost 不负担读压力。

      修改balance="2", 重启mycat服务,访问结果是:切换主从机(writeHost和readHost)访问

       修改balance="3", 重启mycat服务,访问结果是:只访问readHost

    8.2、双主双从

      

     ---

  • 相关阅读:
    当Table中td内容为空时,让它显示边框的办法
    超链接可以是JS代码
    学习Filter
    关于SQL语句的拼接问题
    复习JSP时遇到的几个问题
    凡是项目中的增删改都要加事务
    Xshell和SecureCRT连不上VMware虚拟机linux系统
    IBM AIX定义数组变量
    Python模块之re 正则表达式
    Python模块之itertools 用于创建和使用迭代器的函数工具
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/13388737.html
Copyright © 2020-2023  润新知