数据库中间件mycat 读写分离

    科技2022-07-16  106

    mycat安装

    首先在官网下载mycat,官网地址:http://mycat.org.cn/

    下载地址:http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/

    上传至centos7中。 解压

    tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

    mycat软件目录构成:

    conf 目录下存放配置文件,server.xml 是Mycat 服务器参数调整和用户授权的配置文 件,schema.xml 是逻辑库定义和表以及分片定义的配置文件,rule.xml 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置 文件修改,需要重启Mycat 或者通过9066 端口reload。

    lib 目录下主要存放mycat 依赖的一些jar 文件。

    尝试启动mycat服务

    bin/mycat start

    查看是否启动成功 已经成功启动。

    读写分离配置

    schema.xml 中配置逻辑库、数据节点,数据主机:

    <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 注意:里面的元素一定要按 schema 、dataNode 、 dataHost的顺序配置,name属性值为逻辑库名 --> <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema> <!--配置数据节点,database为数据节点中的数据库中的真实名字--> <dataNode name="dn1" dataHost="dhost1" database="testdb" /> <!--配置datahost的信息,连接数据库的配置--> <dataHost name="dhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!--配置服务器ip和数据库端口,用户名和密码,用于写数据--> <writeHost host="hostM1" url="192.168.130.128:3306" user="root" password="qwe123"> <!--配置服务器ip和数据库端口,用户名和密码,用于读数据--> <readHost host="hostS2" url="192.168.130.129:3306" user="root" password="qwe123" /> </writeHost> </dataHost> </mycat:schema>

    Balance参数设置:

    1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。

    2. balance=“1”,所有读操作都随机发送到当前的writeHost对应的readHost和备用的writeHost

    3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发      4. balance=“3”,所有读请求随机的分发到wiriterHost 对应的readhost 执行

    WriteType参数设置:

    1. writeType=“0”, 所有写操作都发送到可用的writeHost上。

    2. writeType=“1”,所有写操作都随机的发送到readHost。

    3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

    server.xml配置

    修改用户配置,name="schemas"和前面配置的schemas.xml中的name对应

    <user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">testdb</property> </user>

    这里的两个mysql服务我主动停止了主从复制,所以两个数据库中数据不一致。便于我们看到效果。 首先是主数据库(用于写): ip 192.168.130.128 database testdb table t_order

    从数据库(用于读) ip 192.168.130.129 database testdb table t_order

    navicate连接

    到 conf/server.xml 中查看用户名和密码 mycat默认的服务端口为8066,管理端口为9066 连接成功,Mycat 对我们的应用来说,就是一个数据库! 查看表

    可以看到读取到的是从数据库中的记录。 然后手动插入一条数据 查看主数据库,发现数据插入成功 查看从数据库,没有数据增加 查看mycat数据库,同样没有数据增加,因为是读取的从数据库的记录 这就实现了读写分离,当然,实际应用中我们需要开启主从复制哦。

    Processed: 0.009, SQL: 8