Mycat实现mysql的读写和分离

mycat是什么?

mycat是一款国产分布式数据库中间件。mycat是基于阿里巴巴的开源项目cobar为基础开发的。

http://www.mycat.org.cn/

mycat可以让程序员专注于业务相关的代码编写,不用担心数据库相关的业务(负载均衡,集群管理,读写分离,分库分表)。

mycat的安装和配置

前置条件:需要安装jdk,配置环境变量

 步骤一:安装mycat ,上传mycat的压缩包

Mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz  #官网下载镜像 

解压缩

tar -zxvf Mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz

将mycat文件夹移动到/usr/local/,配置环境变量 (vi /etc/profile)

 

export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin

 

生效命令:source /etc/profile

步骤二: 修改配置文件

schema.xml(逻辑库的配置):

[root@server05 conf]# vi /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">    
<!--逻辑数据库的配置  #chenweishuo_dn和chenweishuo_host名字随便写,但要互相对应-->
        <schema name="teacher" checkSQLschema="false" sqlMaxLimit="100" dataNode="chenweishuo_dn">

        </schema>
        <!--database(teacher)是物理数据库的名字-->
        <dataNode name="chenweishuo_dn" dataHost="chenweishuo_host" database="teacher" />
        <!--balance负载均衡的意思
            1. balance="0",不开启读写分离
            2. balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双 主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载 均衡。 
            3. balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
            4. balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。  
        -->
        <!--
       1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后已切换后的为准,切录在配置文件中:dnindex.properties .
       2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

  switchType 属性
-1 表示不自动切换 1 默认值,自动切换 
 2 基于 MySQL 主从同步的状态决定是否切换 心跳语句为 show slave status
 3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1) 心跳语句为 show status like ‘wsrep%’ -->

        <dataHost name="chenweishuo_host" maxCon="1000" minCon="10" balance="1"
                writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
                <!--集群才会有心跳-->
                <heartbeat>show slave status</heartbeat>
                <writeHost host="master1" url="192.168.65.10:3306" user="root" password="Es*QZhbOs0%">
                 <!-- 添加只读库配置-->
                 <readHost host="slave1" url="192.168.65.11:3306" user="root" password="Es*QZhbOs0%" />
                </writeHost>
                <writeHost host="master2" url="192.168.65.12:3306" user="root" password="Es*QZhbOs0%">
                 <readHost host="slave2" url="192.168.65.13:3306" user="root" password="Es*QZhbOs0%" />
               </writeHost>
        </dataHost>
</mycat:schema>

server.xml(用户权限的配置):

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

log4j2.xml(修改日志的打印级别):

将日志打印级别设置为debug

启动mycat:mycat start

测试读写分离

步骤一:通过navcat连接mycat:

 

 

posted @ 2020-08-05 19:08  白描先生  阅读(165)  评论(0编辑  收藏  举报
}); });