zoukankan      html  css  js  c++  java
  • 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:

     

  • 相关阅读:
    基因疗法 中国科学家利用基因疗法成功逆转1型糖尿病进程
    麻省理工比特币
    数据处理包dplyr的函数
    资源革命
    翻译文章第六章4-7
    kaggle Titanic心得
    Javascript高级编程学习笔记(56)—— DOM2和DOM3(8)低版本IE范围
    Javascript高级编程学习笔记(55)—— DOM2和DOM3(7)操作范围
    Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择
    Javascript高级编程学习笔记(53)—— DOM2和DOM3(5)遍历
  • 原文地址:https://www.cnblogs.com/cwshuo/p/13442014.html
Copyright © 2011-2022 走看看