• ADADADADAD

    MyCAT如何安装使用[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:15:18

    作者:文/会员上传

    简介:

    MyCAT安装mycat运行依赖于jre环境,需要首先安装jdk7以上版本检查jdk版本shell>java-versionjavaversion"1.7.0_79"Java(TM)SERuntimeEnvironment(build1.7.0_79-b15)JavaHotS

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MyCAT安装

    mycat运行依赖于jre环境,需要首先安装jdk7以上版本

    检查jdk版本shell>java-versionjavaversion"1.7.0_79"Java(TM)SERuntimeEnvironment(build1.7.0_79-b15)JavaHotSpot(TM)64-BitServerVM(build24.79-b02,mixedmode)下载解压mycatserver1.5安装文件shell>tarzxvfMycat-server-1.5-RELEASE-20160301083012-linux.tar.gz创建mycat用户,并设置环境变量shell>groupaddmycatshell>useradd-gmycatmycatshell>passwdmycatshell>chown-Rmycat.mycat/usr/local/mycatshell>vim/etc/profile添加如下内容exportMYCAT_HOME=/usr/local/mycatshell>source/etc/profile
    测试环境介绍

    Master:10.106.58.178
    Slave:10.106.58.179
    mycat:10.106.58.174

    mycat配置

    mycat1.5配置文件可以根据本地XML文件配置,也可以使用zookeeper来实现,本例介绍使用本地XML来配置。

    配置文件介绍

      conf/rule.xml 定义分片规则

      conf/schema.xml 定义逻辑库、表以及分片节点等内容

      conf/server.xml 定义用户授权及服务器参数相关配置

      shell>moreconf/schema.xml<?xmlversion="1.0"?><!DOCTYPEmycat:schemaSYSTEM"schema.dtd"><mycat:schemaxmlns:mycat="http://org.opencloudb/"><schemaname="test"checkSQLschema="false"sqlMaxLimit="100"dataNode="dn1"/><dataNodename="dn1"dataHost="cluster1"database="test"/><dataHostname="cluster1"maxCon="1000"minCon="10"balance="0"writeType="0"dbType="mysql"dbDriver="native"switchType="1"slaveThreshold="100"><heartbeat>selectuser()</heartbeat><writeHosthost="hostM1"url="10.106.58.178:3306"user="root"password="123456"><readHosthost="hostS1"url="10.106.58.179:3306"user="root"password="123456"/></writeHost></dataHost></mycat:schema>shell>moreconf/rule.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmycat:ruleSYSTEM"rule.dtd"><mycat:rulexmlns:mycat="http://org.opencloudb/"><tableRulename="rule1"><rule><columns>id</columns><algorithm>func1</algorithm></rule></tableRule><functionname="func1"class="org.opencloudb.route.function.PartitionByLong"><propertyname="partitionCount">8</property><propertyname="partitionLength">128</property></function></mycat:rule>server.xml的user定义了客户端连接mycat使用的用户验证schema.xml的user是mycat连接数据库使用的用户shell>moreconf/server.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmycat:serverSYSTEM"server.dtd"><mycat:serverxmlns:mycat="http://org.opencloudb/"><system><propertyname="defaultSqlParser">druidparser</property></system><username="test"><propertyname="password">test</property><propertyname="schemas">test</property></user></mycat:server>
      启动测试mycat
      查看wrapper.log,查看启动是否成功shell>/usr/local/mycat/bin/mycatstart通过mycat连接数据库shell>mysql-h10.106.58.174-P8066-utest-pmysql>select@@hostname;+------------+|@@hostname|+------------+|mysql178|+------------+1rowinset(0.13sec)mysql>createtableuser(idintprimarykey,namevarchar(100));QueryOK,0rowsaffected(0.13sec)mysql>insertintouser(id,name)values(1,'xiaoming');QueryOK,1rowaffected(0.07sec)查询从库mysql>select@@hostname;select*fromtest.user;+------------+|@@hostname|+------------+|mysql179|+------------+1rowinset(0.00sec)+----+----------+|id|name|+----+----------+|1|xiaoming|+----+----------+1rowinset(0.00sec)
      测试读写分离

      mycat提供了几种请求负载均衡分发形式,通过定义dataHost标签的balance属性来修改
      balance=0,不开启读写分离机制,所有读写操作都发送到当前可用的writeHost上
      balance=1,全部的readHost和stand by writeHost参与select语句的负载均衡,如双主双从模式,M2、S1、S2都分发请求
      balance=2,所有读操作随机在writeHost和readHost上分发
      balance=3,所有读请求随机的分发到writeHost上对应的readHost上执行,writeHost不承担读压力。(balance=3只支持mycat1.4以上版本)

      设置balance=1并将log4j修改为debug模式,观察执行结果。

      执行写入操作,可以看出分发到writeHost
      mysql> insert into test.user(id,name) values(2,'xiaoli');

      执行查询操作,可以看出分发到readHost
      mysql> select * from test.user where id = 2;

      测试故障切换

      mycat通过dataHost标签的writeType和switchType来定义故障切换方式。
      writeType=0,表示所有写都发送到配置的第一个writeHost上,第一个挂了切换到第二个writeHost上,重启后以切换后的为准,切换记录在conf/dnindex.properties
      writeType=1,表示所有写都随机发送到配置的writeHost上,mycat1.5以上已废弃不推荐。
      switchType=-1,表示不自动切换
      switchType=1,默认值,表示自动切换
      switchType=2,基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status。
      switchType=3,基于galaru cluster的切换机制(合适集群),mycat1.4以上支持,心跳语句为show status like 'wsrep%'。

      修改switchType=2,writeType=0,心跳语show slave status

      关闭Mastershell>servicemysqlstop
      通过mycat执行插入操作,发现请求分发到第二个writeHost上mysql>insertintotest.uservalues(3,'xiaowang');QueryOK,1rowaffected(0.04sec)
      重新启动原Mastershell>servicemysqlstart查看当前写入节点,0表示第一个,1表示第二个shell>moreconf/dnindex.properties#update#FriMar0415:51:39CST2016cluster1=1通过mycat写入数据mysql>insertintotest.uservalues(4,'xiaozheng');QueryOK,1rowaffected(0.04sec)mysql>select*fromtest.userwhereid=4;+----+-----------+|id|name|+----+-----------+|4|xiaozheng|+----+-----------+1rowinset(0.01sec)查看主库数据mysql>select*fromtest.user;+----+----------+|id|name|+----+----------+|1|xiaoming||2|xiaoli|+----+----------+2rowsinset(0.00sec)查看从库数据mysql>select*fromtest.user;+----+-----------+|id|name|+----+-----------+|1|xiaoming||2|xiaoli||3|xiaowang||4|xiaozheng|+----+-----------+4rowsinset(0.00sec)

      当原主库恢复之后,mycat并没有切换回第一个写入节点,而是需要重新配置主从状态。mycat的故障切换不会同步主从binlog差异数据,不能完整的保证数据一致性,而且没有记录切换后的writeHost提供服务时的binlog位置,其他从库指定新主库时,需要手工备份完整的数据,可考虑与MHA结合使用。

    MyCAT如何安装使用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mycat