mycat简单使用「建议收藏」

mycat简单使用「建议收藏」MyCat MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以 要求必须在JDK7以上的版本上运行。 mysql …

mycat简单使用

MyCat

MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以 要求必须在JDK7以上的版本上运行。

mysql

mysql主从复制

首先安装mysql数据库实现主从复制,之前有写过搭建基于Docker的Mysql主从复制搭建

Mycat中间件安装、配置和测试

mycat安装

wget http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

tar -zvxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

解压之后mycat下面文件夹  bin  catlet  conf  lib  logs  version.txt     目录解释如下:

bin 程序目录              ./mycat start启动/stop停止/restart重启/status查看状态

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

lib目录下主要存放mycat依赖的一些jar文件         日志存放在logs/mycat.log中,每天一个文件,日志的配置是在conf/log4j.xml中         可以根据自己的需要,可以调整输出级别为debug,debug级别下,会输出更多的信息,方便排查问题.

Mycat相关配置

修改schema.xml配置文件(这里简单的读写分离配置)

<?xml version=”1.0″?>     <!DOCTYPE mycat:schema SYSTEM “schema.dtd”>     <mycat:schema xmlns:mycat=”http://io.mycat/“>

<schema name=”test” checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”haha”>         </schema> # 一个<schema >相当于一个数据库;name:逻辑库名称;dataNode对应<dataNode>的name     <dataNode name=”haha” dataHost=”Mycat-node” database=”test” />

<dataHost name=”Mycat-node” maxCon=”1000″ minCon=”10″ balance=”1″ writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″  slaveThreshold=”100″>         <heartbeat>show slave status</heartbeat>         <writeHost host=”Mysql-node1″ url=”localhost:3339″ user=”root” password=”123456″>              <readHost host=”Mysql-node2″ url=”localhost:3340″ user=”root” password=”123456″>              </readHost>         </writeHost>         <writeHost host=”Mysql-node2″ url=”localhost:3340″ user=”root” password=”123456″>         </writeHost>     </dataHost>     </mycat:schema>

还需要修改对应的server.xml中的配置文件

# mycat的访问端口配置
<property name="serverPort">8066</property> <property name="managerPort">9066</property>

# mycat用户密码配置相关信息
 <user name="root">
                <property name="password">123456</property>
                <property name="schemas">test</property> #此处为数据库配置文件<schema>名称

                <!-- 表级 DML 权限设置 -->
                <!--
                <privileges check="false">
                        <schema name="test" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>
                 -->
        </user>

        <user name="user">
                <property name="password">user</property>
                <property name="schemas">test</property>
                <property name="readOnly">true</property>
        </user>

代码100分

代码100分强制走写节点(加在sql语句前)
/*#mycat:db_type=master*/

对于<dataHost>标签,它里面重要的参数列举如下:

balance指的负载均衡类型,目前的取值有4种:
1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance=”1”,全部的readHost与stand bywriteHost参与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没有。

代码100分writeType属性:
1.writeType=”0”,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
2.writeType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。

switchType指的是切换的模式,目前的取值也有4种:
1. switchType=’-1’ 表示不自动切换
2. switchType=’1’ 默认值,表示自动切换
3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
4. switchType=’3’基于MySQLgalary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。

注意:估计Mycat1.4才开始支持switchType。1.3版本配置该属性的话,日志里会报错:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; Attribute “switchType” must bedeclared for element type “dataHost”。
MyCAT心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。

mycat分库分表配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="haha" >
        <table name="t_user" dataNode="db_1,db_2,haha" rule="crc32slot" ></table># name为被拆分的表名称 rule为拆分规则 对应在rule.xml文件中进行修改 
    </schema>
        <dataNode name="db_1" dataHost="Mycat-node" database="db_one" /> #表拆分之后存放的数据库1
        <dataNode name="db_2" dataHost="Mycat-node" database="db_two" /> #表拆分之后存放的数据库2
        <dataNode name="haha" dataHost="Mycat-node" database="test" /> #表拆分之后存放的数据库3

<dataHost name="Mycat-node" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>show slave status</heartbeat>
    <writeHost host="Mysql-node1" url="localhost:3339" user="root" password="123456">
         <readHost host="Mysql-node2" url="localhost:3340" user="root" password="123456">
         </readHost>
    </writeHost>
    <writeHost host="Mysql-node2" url="localhost:3340" user="root" password="123456">
    </writeHost>
</dataHost>
</mycat:schema>


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7044.html

(0)
上一篇 2023-03-28
下一篇 2023-03-28

相关推荐

  • 数据库迁移系列之–Oracle迁移到Mysql

    数据库迁移系列之–Oracle迁移到Mysql敬请期待…

    2023-02-26
    146
  • Python Master Framers-构建高效Python应用程序的必备技能

    Python Master Framers-构建高效Python应用程序的必备技能Python是一门非常强大的开发语言,它是免费的、易于学习的、跨平台等等应用十分广泛。构建高效的Python应用程序,是每一个Python工程师必须了解的重要技能之一。下面,我们将从以下几个方面阐述重要的技能。

    2024-01-26
    101
  • @InsertProvider 同 text.xml 配置文件使用优劣「建议收藏」

    @InsertProvider 同 text.xml 配置文件使用优劣「建议收藏」1.有时候我们会些更具传递的参数去插入, 用text.xml 当减少实体类的时候,你需要到text.xml 一个一个的删掉多余的,但是通过InsertProvider 写的因为和类直接强关联,编译器…

    2023-03-09
    155
  • Python实现唯一值去重的方法

    Python实现唯一值去重的方法在处理数据时,有时候需要去重操作,即保留唯一值并删除重复值。Python作为一门广泛应用于数据处理的编程语言,提供了多种方法用于实现唯一值的去重。本文将介绍几种方法,并且给出对应的代码示例。

    2024-06-13
    49
  • Python是脚本语言吗

    Python是脚本语言吗Python是一种高级的通用编程语言,由Guido van Rossum在1989年发起开发。最初的目标是在Amoeba操作系统上实现一种诱人的脚本语言,因此Guido在设计Python时兼顾了交互性和易读性,这些特点使Python开发人员可以轻松编写小型脚本,并逐渐发展成为用于构建复杂的、高级的、大型软件项目的语言。

    2024-09-10
    29
  • mysql索引失效的几种情况_如何判断索引是否失效

    mysql索引失效的几种情况_如何判断索引是否失效在上一篇文章中,通过分析执行计划的字段说明,大体说了一下索引优化过程中的一些注意点,那么如何才能避免索引失效呢?本篇文章将来讨论这个问题。 避免索引失效的常见方法 1.对于复合索引的使用,应按照索引建

    2023-02-12
    143
  • 一则MySQL派生表优化案例「建议收藏」

    一则MySQL派生表优化案例「建议收藏」笔者最近遇到一则典型的因为sql中存在派生表造成的性能案例,通过改写SQL改善了的性能,但当时并没有弄清楚这其中的原因,派生表究竟是什么原因会导致性能上的副作用。说来也巧,很快就无意中就看到下文中的提

    2023-02-11
    162
  • mysql大表更新_sql根据一个表更新另一个表

    mysql大表更新_sql根据一个表更新另一个表MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明。 1、 环境准备 数据库版本: 5.7.25-28(Perc

    2023-03-14
    145

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注