zoukankan      html  css  js  c++  java
  • Mycat

    视频地址

    Mycat

    第一章 入门概述

    image

    1.1 是什么

    Mycat是数据中间件

    1. 数据库中间件
      中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部分之间的沟通.
      例子:tomcat,web中间件.
      数据中间件:连接 java应用程序和数据库
    2. 数据库中间件对比
      数据库中间件(天上飞的理念,地上落地的实现)
      - cobar:阿里团队开发,已多年无维护更新
      - mycat:基于 cobar二次开发 开源社区维护
      - OneProxy:不开源的商业中间件
      - kingshard:go语言开发,在不断完善
      - Vitess:YouTube生产在使用,不支持 MySQL原生协议
      - Atlas: 360团队基于 mysqlproxy改写,高并发不稳定
      - MaxScale: maxScale是 mariadb研发的中间件
      - MySQLRoute: MySQLRoute 是MySQL官方 Oracle公司发布的中间件
      • Cobar 属于 阿里 B2B事业群,始于 2008,在阿里服役3年多,接管 3000+ MySQL数据的 shema,集群日处理在线 sql请求50亿次以上.由于 Cobar发起人离职,Cobar停止维护.
      • Mycat 是开源社区在阿里 cobar基础上进行二次开发,解决了 cobar存在的问题,并且加入了许多新的功能在其中.青出于蓝而胜于蓝.
      • OneProxy 基于 MySQL官方 proxy思想利用 c进行开发的,OneProxy是一款商业收费的中间件.舍弃了一些功能,专注在性能和稳定性上.
      • kingshard 由小团队用 go语言开发,还需要发展,需要不断完善.
      • Vistess 是 YouTube生产在使用,架构很复杂.不支持 MySQL原生协议,使用大量改造成本
      • Atlas 是 360团队基于 mysqlproxy改写,功能还需完善,高并发下不稳定.
      • MaxSale 是 mariadb(MySQL原作者维护的一个版本)研发的中间件
    3. mycat的官网
      http://www.mycat.org.cn/

    1.2 干什么的

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

    1.3 原理

    • Mycat 的原理最重要的一个动词时 "拦截" ,他拦截了用户发送过来的 sql语句,首先对 sql语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将从 sql发往后端的真是数据库,并返回的结果做适当的处理,最终返回给用户.
      image
      这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台 使用 Mycat还是 Mysql.

    第二章 安装启动

    2.1 安装

    image
    0. 去官网下载,放到 /opt 目录下,执行
    tar -zxvf Mycat-server-1.6.7.6-release-20210930213049-linux.tar.gz

    1. 加压后即可使用: 解压缩文件拷贝到 Linux写 /usr/local/
      cp -r mycat /usr/local/
    2. 三个配置文件
      schema.xml : 定义逻辑库,表,分片节点等内容
      rule.xml : 定义分片规则
      server.xml : 定义用户以及系统相关便令,如端口等.

    2.2 启动

    1. 修改配置文件 server.xml
      修改用户信息,与 mysql区分,如下
      image

    2. 修改配置文件 schema.xml
      删除 <schema>标签的表信息 <dataNode>标签只留一个, <dataHost> 标签只留一个, <writeHost> <readHost> 只留一对
      image

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

      mysql -uroot -proot -h 192.168.217.13 -P3306
      mysql -u用户名 -p密码 -h ip地址 -P端口号

    4. 启动程序

      • 控制台: 去 mycat/bin 目录下执行 ./mycat console
      • 后台启动: 去 mycat/bin 目录下 ./mycat start

      六个特殊目录不需要 加点斜杠的 bin ; usr/bin ; usr/local/bin ; sbin ; usr/sbin ; usr/lcoal/sbin

      image

    5. 启动时可能出现报错
      如果操作系统时 centos6.8,可能会出现域名解析失败错误
      image
      可以按照一些步骤解决

      1. 用 vim 修改 /etc/hosts 文件,在 127.0.0.1 后面增加你的机器名
        image
      2. 修改后重新启动网络服务
        image

    2.3 登录

    1. 登录后台管理窗口
      此登录方式用于管理维护 Mycat
      mysql -u用户 -p密码 -P 端口号 -h ip地址
      image
    2. 登录数据窗口
      此登录方式用于通过 Mycat查询数据,我们选择这种方式访问 mycat
      mysql -u用户 -p密码 -P 端口号 -h ip地址
      image

    第三章 搭建读写分离

    • 我们通过 Mycat 和 Mysql 的主从复制配合搭建数据的读写分离,实现 myslq 的高可用性.我们将搭建:
      一主一丛,双主双从两种读写分离模式

    3.1 一主一从

    • 一个主机用于处理所有写请求,一台从机负责所有读请求,架构图如下
      image
    1. 搭建 MySql数据库主从复制
      1. MySQL 主从复制原理
        image
      2. 主机配置

    3.2 双主双从

    第四章 垂直拆分

    4.1 如何划分表

    4.2 配置分库

    第五章 水平拆分

    5.1 配置分表

  • 相关阅读:
    黑马程序员JAVA高级视频_IO输入与输出18天2(FileWriter)
    黑马程序员JavaAPI17天5(集合转成数组)
    黑马程序员JAVA高级视频_IO输入与输出19天4(MyBufferedReader)
    android 取消webview的背景色
    DLNA
    Android JNI的若干问题总结
    gcc 一些应用
    如何基于nand flash启动Linux内核(分享一段实用、简单、类似bootloader功能的代码)
    Android JNI开发高级篇有关Android JNI开发中比较强大和有用的功能就是从JNI层创建、构造Java的类或执行Java层的方法获取属性等操作。 一、类的相关操作 1. jclass FindClass(JNIEnv *env, const char *name);
    ubuntu 配置ndk
  • 原文地址:https://www.cnblogs.com/zk2020/p/15497969.html
Copyright © 2011-2022 走看看