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密码】

原文地址:https://www.cnblogs.com/niunafei/p/12823753.html