Docker版:Mysql分库分表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主从复制实战(一主一从、双主双从)
mysql 5.8以上版本有问题可以参考: