zoukankan      html  css  js  c++  java
  • Docker版:Mysql分库分表MyCat实战

    SpringCloudAlibaba实战教程系列  

    docker:官网    中文官网

    docker:镜像官网

    MyCat官网

    一、MyCat简单认识。MyCat来世今生介绍与配置

      认识MyCat之前怎么先来认识下,Cober是由阿里巴巴开源的mysql分布式处理中间件,可以在分布式的环境下像传统数据库一样提供海量的数据服务。而MyCat的前身是阿里的cober,Mycat使用 NIO 重构了网络模块,并且优化了 Buffer内核,增强了聚合,Join 等基本特性,同时MyCat兼容绝大多数数据库成为通用的数据库中间件。

      Mycat 是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多 租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的 Mycat 智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的 表映射到不同存储引擎上,而整个应用的代码一行也不用改变。

      当前是个大数据的时代,但究竟怎样规模的数据适合数据库系统呢?对此,国外有一个数据库领域的权威人 士说了一个结论:千亿以下的数据规模仍然是数据库领域的专长,而 Hadoop 等这种系统,更适合的是千亿以上 的规模。所以,Mycat 适合 1000 亿条以下的单表规模,如果你的数据超过了这个规模,请投靠 Mycat Plus 吧!

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

     

    Mycat 目前适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景: 

      • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;

      • 分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片;

      • 多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化;

      • 报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计;

      • 替代 Hbase,分析大数据;

      • 作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果, 除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选择。

    二、MyCat安装使用

    1、创建本地到MyCat的映射文件夹

     mkdir -p /root/mycat/logs /root/mycat/conf

    2、下载MyCat的源文件包,最新下载地址 、github下载地址

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

    wegt如果出现wget: unable to resolve host address ‘dl.mycat.io’异常,可以选择修改/etc/hosts文件,添加 dl.mycat.io   210.51.26.184配置

    3、解压缩、并复制配置本地conf中的文件

    tar -zxvf mycat.tar.gz
    cp -r mycat/conf/* /root/mycat/conf/

    重点关注三个配置文件:

     schema.xml :定义逻辑库、表、分片节点等配置。

       rule.xml :定义分片规则,水平拆分的规则都在这里定义。

      server.xml :定义用户以及系统相关变量,例如端口、用户登录账号密码、用户权限等。如下图:

    编辑server.xml,schema.xml等配置文件参考:mycat官方github地址 

    4、在当前目录创建Dockerfile文件

    touch Dockerfile
    vim Dockerfile 

    在Dockerfile文件中插入如下文件

    #基于opjdk8创建镜像,可自行替换centos等
    FROM openjdk:8
    ADD mycat.tar.gz /usr/local/
    VOLUME /usr/local/mycat/conf
    ENV MYCAT_HOME=/usr/local/mycat
    EXPOSE 8066 9066
    CMD ["/usr/local/mycat/bin/mycat", "console","&"]
    
    ### 说明 ###
    #将mycat解压到/usr/local目录中,得到 /usr/local/mycat
    #将mycat的配置文件的地址暴露出映射地址,启动时直接映射宿主机的文件夹
    #设置MYCAT_HOME
    #暴露出MyCat的所需端口
    #以前台进程的方式启动MyCat服务

    5、构建镜像并启动 

    docker build -t mycat-1.6 .

     6、运行启动容器

    docker run --name mycat -p 8066:8066 -p 9066:9066 -v /root/mycat/conf:/usr/local/mycat/conf -v /root/mycat/logs:/usr/local/mycat/logs -d mycat-1.6

     7、验证:

    登录mycat 容器根据配置的用户名密码进行登录使用,进行操作数据库查看logs操作日志即可。

    mysql -uroot -p123456 -h172.17.0.5 -P8066

    Docker(部署常见应用):Docker安装MySql完整教程、实操 

    Docker版:Mysql分库分表MyCat实战  

    Docker实现Mysql主从复制实战(一主一从、双主双从)  

    mysql 5.8以上版本有问题可以参考:

    mysql-管理命令【创建用户、授权、修改密码、删除用户和授权、忘记root密码】

  • 相关阅读:
    基于 VirtualApp 结合 whale hook框架实现hook第三方应用
    C/C++标准有哪些?
    【tips】编译epic异常解决
    Android 虚拟多开系列二——技术原理
    Android 虚拟多开系列一——技术调研
    Ubuntu 16.04 Apache2 更改访问html根路径方案(可解决403)
    android 原生 MediaPlayer 和 MediaCodec 的区别和联系(三)
    Android 原生 MediaPlayer 和 MediaCodec 的区别和联系(二)
    Android MediaPlayer 和 MediaCodec 的区别和联系(一)
    Mongodb实战使用指南
  • 原文地址:https://www.cnblogs.com/niunafei/p/12823753.html
Copyright © 2011-2022 走看看