Docker 安装 Mycat 中间件 | 实现主从 & 读写分离
上一篇写了如何使用Docker搭建Mysql的主从复制,这篇文章是在已经搭建好 Mysql 的主从复制的基础上实现读写分离的。
直接 CV 也能搭建起来,莫慌。
我们一起加油!!!
一、创建 Mycat 文件夹
二、创建 Docker 文件夹
然后 cd 到/usr/local/docker/mycat
目录下
三、下载 Mycat 并解压
在这个目录下(/usr/local/docker/mycat
)下载 Mycat
将Mycat-server-1.6.7.1-release-20190627191042-linux
重命名为mycat
将mycat.tar.gz
进行解压
此时目录结构:
为了不破坏原来的文件,我们将 mycat 的配置文件复制到/usr/local/mycat
下。
可以看到已经复制成功了。
四、编写 Dockerfile 文件
依旧是在/usr/local/docker/mycat
目录下进行操作:
dockerfile
文件内容:
五、打包镜像
六、编写 Mycat 配置文件
跳转到/usr/local/mycat/conf/
目录下(就是我们之前将配置文件复制去的那个目录)
重点文件就是标红的三个
schema.xml、server.xml :用于读写分离,在我们这个小 Demo 中,只对 schema.xml 做了编辑。
rule.xml:用于分表分库配置文件。
详情请查询相关官方文档。
编辑schema.xml
文件:
默认文件内容:
删除不必要的,改成下面这样的即可。
关于schema.xml
做几点简单说明:
dataHost 下的 balance 属性,也是通过此属性配置读写分离的类型:
balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,
balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力
writeType="0": 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个
switchType="1":
1 默认值,自动切换。
-1 表示不自动切换
基于 MySQL 主从同步的状态决定是否切换。
补充-命令模式下的快速删除
:
按下insert
键后-->再按下Esc
进入命令模式。
按
dd
即删除光标当前所在行。按
ndd
(n 表示你输入的数字)表示删除包括光标所在行开始后的 n 行。
七、启动镜像
八、连接测试
8.1、Navicat 连接
可使用Navicat
或者CMD
命令行。
关于这里的账号和密码:
是在之前提到过的server.xml
配置文件中。
我的连接上是这样的,因为我已经搭建起了主从复制,里面也有表,所以是这样的。
8.2、CMD 连接
8.3、读写分离测试
我们在主机中 insert 一句insert into mytable values(99,@@hostname)
,这样就可以看出问题了。
从机在复制这条语句去执行的时候,和出现和主机不一样的数据(有混合配置可以处理,我这里没有处理,主要产生于函数),这样我们再使用 mycat 去读取数据,就可以看到是否实现读写分离了。
主机:
从机:
从机取到的数据是不一样的。
mycat 读取:
可以看到读取的是从机上的数据,可以说明我们确实已经实现了读写分离啦。
九、自言自语
我其实真的非常好奇,一个真正高可用的系统要用多少个服务器😂。
参考:
版权声明: 本文为 InfoQ 作者【宁在春】的原创文章。
原文链接:【http://xie.infoq.cn/article/0053f678ddff38181d3c32326】。文章转载请联系作者。
评论