• 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:

     

  • 相关阅读:
    zbb20171108 一台电脑启动多个 tomcat
    zbb20171101 oracle 启动 linux
    zbb20171017 svn Cleanup failed to process the following paths错误的解决
    zbb20171013 mysql服务重启 重启服务 重启mysql服务
    zbb20171013 mysql 远程连接 报错 1130-host ... is not allowed to connect to this MySql server
    zbb20171013 svnserver 修改默认端口
    zbb20171013 tomcat 设置访问ip地址直接访问项目
    zbb20171013 Windows 下端口占用 查询 以及结束进程的方法
    20171012 nginx 超时时间配置
    20171012 tomcat 超时时间配置
  • 原文地址:https://www.cnblogs.com/cwshuo/p/13442014.html
Copyright © 2020-2023  润新知