• ADADADADAD

    mysql中mycat 中间件如何使用[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:26:58

    作者:文/会员上传

    简介:

    一,什么是mycat一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

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

    一,什么是mycat

    一个彻底开源的,面向企业应用开发的大数据库集群

    支持事务、ACID、可以替代MySQL的加强版数据库

    一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

    一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

    结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

    一个新颖的数据库中间件产品

    以上是官方说明。其实就是数据库的连接池。mysql proxy也是一种连接池,但是效率很低。

    二,mycat 安装

    1,下载mycat

    2,安装mycat

    #tarzxvfMycat-server-1.6-RELEASE-20161028204710-linux.tar.gz-C/usr/local/

    三,配置mycat

    1,配置server.xml

    #vim/usr/local/mycat/conf/server.xml//添加以下内容<username="user">//mycat用户名<propertyname="password">user</property>//mycat密码<propertyname="schemas">mytest</property>//mycat虚拟数据库名<propertyname="readOnly">true</property>//只读</user><username="tankzhang"><propertyname="password">admin</property><propertyname="schemas">mytest</property></user>

    在这里要注意,默认的虚拟数据名是TESTDB,如果schema.xml里面没有配置testdb,那就要把testdb改成schema.xml里面有的虚拟数据名。这里定义的用户名和密码,虚拟数据库名,并不是在mysql中真实存在的。

    2,配置schema.xml

    #catschema.xml<?xmlversion="1.0"?><!DOCTYPEmycat:schemaSYSTEM"schema.dtd"><mycat:schemaxmlns:mycat="http://io.mycat/"><schemaname="mytest"checkSQLschema="false"sqlMaxLimit="100"dataNode="my1"/>//定义虚拟数据库名mytest<dataNodename="my1"dataHost="test1"database="test"/>//真实数据库名test<dataHostname="test1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"><heartbeat>selectuser()</heartbeat><writeHosthost="hostM1"url="192.168.5.213:3306"user="tank"password="123456">//真实数据库的连接方式<readHosthost="hostS1"url="192.168.5.214:3306"user="tank"password="123456"/>//同上</writeHost></dataHost></mycat:schema>

    mycat的配置参数,相当的多。重点说一下 balance="1"与writeType="0"

    a. balance 属性负载均衡类型,目前的取值有 4 种:

      balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。

      balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。

      balance="2",所有读操作都随机的在 writeHost、 readhost 上分发。

      balance="3", 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

      b. writeType 属性

      负载均衡类型,目前的取值有 3 种:

        writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

        writeType="1",所有写操作都随机的发送到配置的 writeHost。

        writeType="2",没实现。

        具体参数

        3,配置主从服务器

        4,添加真实用户

        grantallprivilegesontest.*totank@"192.168.%"identifiedby'123456';flushprivileges

        在213,214二台机器上添加用户。

        5,测试真实用户连接

        确保schema.xml中配置的真实用户,能连上真实的数据库。注意防火墙。

        四,启动mycat

        1,常用参数

        ./mycatstart启动./mycatstop停止./mycatconsole前台运行./mycatrestart重启服务./mycatpause暂停./mycatstatus查看启动状态

        2,启动,并查看mycat

        #./mycatstartStartingMycat-server...#netstat-tpnl|grep8066tcp00:::8066:::*LISTEN31728/java#./mycatstatusMycat-serverisrunning(31726).

        五,测试读写分离

        #mysql-utankzhang-p-P8066-h127.0.0.1//一定要带上127.0.0.1Enterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis1Serverversion:5.6.29-mycat-1.6-RELEASE-20161028204710MyCatServer(OpenCloundDB)Copyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>showdatabases;+----------+|DATABASE|+----------+|mytest|//虚拟数据库+----------+1rowinset(0.00sec)mysql>usemytest;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-Amysql>CREATETABLEIFNOTEXISTS`user`(->`id`int(11)unsignedNOTNULLDEFAULT'0'COMMENT'ID',->`name`varchar(20)NOTNULLDEFAULT''COMMENT'姓名',->`create_time`int(10)NOTNULLDEFAULT'0'COMMENT'创建时间',->PRIMARYKEY(`id`)->)ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=1;QueryOK,0rowsaffected(0.08sec)Databasechangedmysql>showtables;+----------------+|Tables_in_test|+----------------+|user|+----------------+1rowinset(0.01sec)mysql>INSERTINTO`user`(`id`,`name`)VALUES('1','tank');QueryOK,1rowaffected(0.00sec)mysql>select*fromuser;//修改从数据库的user表中的name,会发现读是从从数据库读取的+----+-----------+-------------+|id|name|create_time|+----+-----------+-------------+|1|tankzhang|0|+----+-----------+-------------+1rowinset(0.01sec)
    mysql中mycat 中间件如何使用.docx

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

    推荐度:

    下载
    热门标签: mysqlmycat