如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧
上一篇写了如何使用Docker搭建Mysql的主从复制,这篇文章是在已经搭建好Mysql的主从复制的基础上实现读写分离的。
直接CV也能搭建起来,莫慌。
我们一起加油!!!
只要有docker的环境就欧克了。
一、创建Mycat文件夹
mkdir /usr/local/mycat/conf -p
二、创建Docker文件夹
mkdir /usr/local/docker/mycat/ -p
然后cd到/usr/local/docker/mycat
目录下
cd /usr/local/docker/mycat
三、下载Mycat并解压
在这个目录下(/usr/local/docker/mycat
)下载 Mycat
wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
将Mycat-server-1.6.7.1-release-20190627191042-linux
重命名为mycat
mv Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz mycat.tar.gz
将mycat.tar.gz
进行解压
tar -zxvf mycat.tar.gz
此时目录结构:
为了不破坏原来的文件,我们将mycat的配置文件复制到/usr/local/mycat
下。
cp -r mycat/conf/ /usr/local/mycat # 当前文件夹下mycat/conf/ 复制到 /usr/local/mycat 目录下
可以看到已经复制成功了。
四、编写Dockerfile文件
依旧是在/usr/local/docker/mycat
目录下进行操作:
vim dockerfile
dockerfile
文件内容:
#基于openjdk:8 创建镜像,
#如果是基于centos或其他的,必须保证已安装了JDK,否则就需要在Dockerfile文件中也ADD进来
FROM openjdk:8#将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
#将mycat解压到/usr/local目录中,得到 /usr/local/mycat
ADD mycat.tar.gz /usr/local#容器数据卷,用于数据保存和持久化工作
#将mycat的配置文件的地址暴露出映射地址,启动时直接映射宿主机的文件夹
VOLUME /usr/local/mycat
WORKDIR /usr/local/mycat#用来在构建镜像过程中设置环境变量
ENV MYCAT_HOME=/usr/local/mycat#暴露出MyCat的所需端口
EXPOSE 8066 9066#以前台进程的方式启动MyCat服务
CMD ["/usr/local/mycat/bin/mycat", "console","&"]
五、打包镜像
docker build -t mycat:1.6 . #注意最后的小数点 . 点代表dockerfile文件在执行打包命令的目录下
六、编写Mycat配置文件
跳转到/usr/local/mycat/conf/
目录下(就是我们之前将配置文件复制去的那个目录)
cd /usr/local/mycat/conf/ ls #展示文件
重点文件就是标红的三个
- schema.xml、server.xml :用于读写分离,在我们这个小Demo中,只对schema.xml做了编辑。
- rule.xml:用于分表分库配置文件。
- 详情请查询相关官方文档。
编辑schema.xml
文件:
vim schema.xml
默认文件内容:
删除不必要的,改成下面这样的即可。
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema><dataNode name="dn1" dataHost="localhost1" database="testdb" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="47.113.227.254:3310" user="root" password="123456"> <readHost host="hostS2" url="47.113.227.254:3311" user="root" password="123456" /> </writeHost> </dataHost>
</mycat:schema>
关于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行。
七、启动镜像
docker run --name mycat -p 8066:8066 -p 9066:9066 -v /usr/local/mycat/conf/:/usr/local/mycat/conf/ -v /usr/local/mycat/logs/:/usr/local/mycat/logs/ -d mycat:1.6
docker ps -a #查看容器docker logs mycat #查看运行日志
八、连接测试
8.1、Navicat连接
可使用Navicat
或者CMD
命令行。
关于这里的账号和密码:
是在之前提到过的server.xml
配置文件中。
我的连接上是这样的,因为我已经搭建起了主从复制,里面也有表,所以是这样的。
8.2、CMD连接
mysql -uroot -p123456 -h IP地址 -P 8066
8.3、读写分离测试
我们在主机中insert一句insert into mytable values(99,@@hostname)
,这样就可以看出问题了。
从机在复制这条语句去执行的时候,和出现和主机不一样的数据(有混合配置可以处理,我这里没有处理,主要产生于函数),这样我们再使用mycat去读取数据,就可以看到是否实现读写分离了。
主机:
从机:
从机取到的数据是不一样的。
mycat读取:
可以看到读取的是从机上的数据,可以说明我们确实已经实现了读写分离啦。
九、自言自语
我其实真的非常好奇,一个真正高可用的系统要用多少个服务器
如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧相关推荐
- redis主从读写分离replication复制数据+sentienl哨兵集群主备切换
说明:最近公司在自己搭建了一套redis主从读写分离+sentinel哨兵集群主备切换,通过手工去搭建replication复制+主从架构+读写分离+哨兵集群+高可用redis集群架构 公司的已经搭建 ...
- windows mysql 主从_mysql读写分离实战二-windows 上mysql主从数据库搭建及问题总结
根据前篇web项目的搭建后,需要搭建主从数据库,这里在windows服务器上搭建了主从结构的mysql,这里在记录下在本机模拟搭建过程 在windows上安装和linux还是有些不同,不注意就会耽误不 ...
- 数据库应用——MyCat代理MySQL集群
MyCat代理MySQL集群 一.MyCat代理MySQL集群 1.1 MyCat概述 1.2 MyCat功能 1.3 MyCat图示 二.Mycat实战详解 2.1 MyCat实战案例 2.1.1 ...
- mysql慢sql增加读写分离_MySQL主从同步+读写分离
MySQL主从同步+读写分离 实验拓扑: 三台mysql数据库: 192.168.80.101 主服务器 mysql 192.168.80.102 从1服务器 mysql 192.168.80.103 ...
- 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6
在超哥的帮助下,完成了基于InnoDb数据引擎的mysql数据库集群搭建,实现了主从复制的功能,本篇博文介绍如何使用二进制安装mysql的方法,具体实现步骤如下: 软件使用说明: Liunx系统:ce ...
- docker mysql主从_使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- docker安装mysql集群
目录 一.前言 二.主从集群搭建 2.1.master 主服务器的搭建 2.2 slave服务器准备 一.前言 主从复制的流程: 1. 主服务器上面的任何修改都会通过自己的 I/O tread(I/O ...
- MySQL 集群(三):MySQL + Mycat 实现读写分离,主备切换集群
MySQL 集群(三):MySQL + Mycat 实现读写分离,主从切换集群 下载 Mycat Mycat 主要文件 端口 Mycat 命令 配置文件 server.xml schema.xml 配 ...
- haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
最新文章
- 艾伟也谈项目管理,项目做完了,总结一下
- 文档扫描识别——基于M-LSD线段检测的拍照文档校正
- 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行
- SQLServer禁用、启用外键约束
- BZOJ1298:[SCOI2009]骰子的学问
- YaCy开源搜索引擎的热门技巧
- Java连接SQLite数据库
- 计算机网络实验报告实验台,计算机控制实验台
- 卡诺模型案例分析_设计师必修课:KANO 模型的讲解与案例分析
- 3G中的A-GPS移动定位技术
- 华为商城抢购插件_有赞商城社群接龙全面上线,社群营销玩法升级
- problem: ERROR cluster.YarnClientSchedulerBackend: Yarn application has already exited with state
- Mysql持久性的实现
- React 18 的七大更新点你知道几个?
- Unity实现植物识别示例详解
- ozip解密_【ozip转换解包】ROM制作工具已适配机型列表,全网最全!
- JAVA学习日记DAY09--javaweb的一些简单应用
- 固态硬盘长期不通电数据丢失吗 数据丢失怎么恢复
- Android实现Line登录分享
- 10万级内存交易撮合系统
热门文章
- SAP的会计凭证类别
- 万亿市场下,电商代运营还需另求“第二曲线”
- c语言 求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- basler相机参数简要中文说明_你知道相机曝光模式怎么用么?6种相机曝光模式详解及应用...
- win7配置远程连接oracle数据库吗,win7环境下配置oracle数据库的方法有哪些?
- mysql安装 linux 5.6,Linux安装MySql5.6版详细教程
- .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...
- java的默认_java默认包的使用
- c语言测验答案,C语言测验题答案.doc
- android加载转圈动画,android 围绕中心旋转动画