四、安装mycat 1、jdk环境主从数据库
https://blog.csdn.net/qq_50743124/article/details/124074378?spm=1001.2014.3001.5501
#查看安装的jdk版本 -如果有环境可以不用下载 java -version # 执行以下命令查看可安装的jdk版本: yum -y list java*2、安装mycat
# 查询mycat镜像列表,选择星数高 docker search mycat # 拉取mycat镜像 docker pull longhronshens/mycat-docker # 查看版本信息 docker image inspect longhronshens/mycat-docker:latest|grep -i version五、mycat读写分离 1、为什么要读写分离
读写分离之后可以降低计算机的压力
2、读写分离的原理读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,
这样能有效地减轻单台数据库的压力。
通过Mycat即可轻易实现上述功能,不仅可以支持MysoL,也可以支持oracle和sql Server。
MyCat控制后台数据库的读写分离和负载均衡由schema . xml文件datahost标签的balance属性控制。
docker run --name Mmycat -v /usr/local/mycat/schema.xml:/usr/local/mycat/conf/schema.xml -v /usr/local/mycat/rule.xml:/usr/local/mycat/conf/rule.xml -v /usr/local/mycat/server.xml:/usr/local/mycat/conf/server.xml --privileged=true -p 8066:8066 -p 9066:9066 -e MYSQL_ROOT_PASSWORD=mysql1234 -d longhronshens/mycat-docker
参数说明:
- -v:容器文件挂载到本地文件;目的:本地修改文件容器内绑定的文件一起变
前提
主库和从库要有schema.xml配的 balance: 负载均衡类型,目前取值有4种: balance="0”:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 balance=“1”︰全部的readHost 与 stand by writeHost(备用的writeHost)都参与select语句的负载均衡,简而言之,就是采用双主双从模式(1 -->s1 ,M2 -->S2,正常情况下,M2,51,S2 都参与 select 语句的负载均衡)。 balance=“2”:所有的读写操作都随机在writeHost , readHost上分发。 balance="3”:所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力 ;balance=3只在MyCat1.4 之后生效。 checkSQLschema 默认读者使用finalshell 注意不是这个;是尾部没有init的 找到这个目录 把info修改debug才能出现日志
4.2、schema.xml(重点关注)
重要参数说明:
4.3、rule.xml(不用改)
当该值设置为true时,如果我们执行语句"select from test01.user ;"语句时,MyCat则会把schema字符去掉,可以避免后端数据库执行时报错;
5、验证准备
5.1、找到容器流水号
docker inspect 容器名或者容器ID
5.2、进入容器内部文件系统
/var/lib/docker/overlay2/41d76209d603e2a5fd37bf0d9804e004f39a4c3f694299e01ba55687ebebc51f/merged/usr/local/mycat/conf
5.3、修改mycat容器的log4j2.xml文件
6、验证
6.1、新开一个窗口观察日志
docker exec -it Mmycat bash
cd /usr/local/mycat/logs
tail -f mycat.log
6.1、在mycat的数据库操作观察日志
show databases;
use ITCAST;
show tables;
select * from user;
验证结果



