mycat读写分离配置
young / / / 阅读量

介绍

Mycat是一款开源的数据库中间件,其官网为http://www.mycat.io/,其中官方对它介绍为:

Mycat 是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat 智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。

Mycat的实现原理为:

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL 语句,首先对SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

关于Mycat更多的介绍大家可以查看官网http://www.mycat.io/

环境

ip 系统 软件 备注
192.168.23.128 centos7.7 mycat
192.168.23.128 centos7.7 jdk1.8
192.168.23.128 centos7.7 mysql5.7.29 主库
192.168.23.132 centos7.7 jdk1.8
192.168.23.132 centos7.7 mysql5.7.29 从库

主要结构如下
img

mysql主从复制

此处省略配置过程

mycat 安装配置

mycat下载地址 http://www.mycat.io/ 选择 Mycat-server-1.6.7.4-release 版本

# 解压
tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
# 移动到/web/soft/下
mv mycat /web/soft

# 将文件权限赋给mycat账号
chown mycat:mycat -R /web/soft/mycat
#配置环境变量到 /etc/bashrc /etc/profile
echo 'export MYCAT_HOME=/web/soft/mycat' >> /etc/profile
echo 'export MYCAT_HOME=/web/soft/mycat' >> /etc/bashrc

配置Mycat的schema.xml文件,该文件位于Mycat中conf文件夹下,配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="mycat_test1" checkSQLschema="false" sqlMaxLimit="200" dataNode="dn1">
    </schema>
    <dataNode name="dn1" dataHost="dh1" database="wechat" />
    <dataHost name="dh1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="w1" url="192.168.23.128:3306" user="root" password="123456">
                    <readHost host="r1" url="192.168.23.132:3306" user="root" password="123456" />
        </writeHost>
    </dataHost>
</mycat:schema>

其中:

schema 标签用于定义MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用schema 标签来划分这些不同的逻辑库。

dataNode 标签定义了MyCat 中的数据节点,也就是我们通常说所的数据分片。一个dataNode 标签就是一个独立的数据分片。

dataHost标签直接定义了具体的数据库实例、读写分离配置和心跳语句。其中有几个重要的属性:

balance属性
负载均衡类型,目前的取值有3 种:
balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。
balance="1",全部的readHost 与stand by writeHost 参与select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1 与M2 互为主备),正常情况下,M2,S1,S2 都参与select 语句的负载均衡。
balance="2",所有读操作都随机的在writeHost、readhost 上分发。
balance="3",所有读请求随机的分发到wiriterHost 对应的readhost 执行,writerHost 不负担读压
力,注意balance=3 只在1.4 及其以后版本有,1.3 没有。

writeType 属性
负载均衡类型,目前的取值有3 种:
writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
writeType="1",所有写操作都随机的发送到配置的writeHost,1.5 以后废弃不推荐。

配置server.xml,即主要配置连接Mycat的用户账号信息,即:

<user name="root" defaultAccount="true">
    <property name="password">Test_2020</property>
    <property name="schemas">mycat_test1</property>
    <property name="defaultSchema">mycat_test1</property>
</user>

即配置一个用户名为root,密码为Test_2020的用户,同时具有mycat_test1模式下的读写权限,注意该模式即是在schema.xml配置文件定义的模式名一样。

启动Mycat,即:

./mycat start

Mycat启动成功后,会开放两个端口,即数据端口8066,管理端口9066

测试

应用的数据库连接配置信息用8066端口,同时用户也是server.xml配置文件中配置的用户。

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章