前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速体验MyCAT

快速体验MyCAT

作者头像
Leshami
发布2018-08-13 14:25:40
8340
发布2018-08-13 14:25:40
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

横空出世的MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域、互联网项目,大部分是交易和管理系统,少量是信息系统。比较大的系统中,数据规模单表单月30亿。本人也初步尝鲜,体验了一把,见以下描述,供大家参考。 一、安装mycat MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用 了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。 环境准备 1) JDK 下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 注:必须 JDK7 或更高版本. 2) MySQL 下载 http://dev.mysql.com/downloads/mysql/5.5.html#downloads 注:MyCAT 支持多种数据库接入,如:MySQL、 SQLServer、 Oracle、 MongoDB 等,推荐使用 MySQL 做集群。 3) MyCAT 项目主页 https://github.com/MyCATApache/ 注:MyCAT 相关源码、文档都可以在此地址下进行下载。 windows下可以下载Mycat-server-1.4-RELEASE-yyyymmddxxxx-win.tar 将其解压在某个目录下,建议解压到本地某个盘符根目录下(不建议使用中文目录),如下为解压后的: D:\>cd mycat D:\mycat>dir 驱动器 D 中的卷没有标签。 卷的序列号是 0006-4285 D:\mycat 的目录 2015/09/24  14:55    <DIR>          . 2015/09/24  14:55    <DIR>          ..  2015/09/24  14:55    <DIR>          bin           //bin 程序目录 2015/09/24  14:51    <DIR>          catlet 2015/09/24  16:35    <DIR>          conf         //conf 目录下存放配置文件 2015/09/24  14:55    <DIR>          lib          //lib 目录下主要存放 mycat 依赖的一些 jar 文件 2015/09/25  10:49    <DIR>          logs         //log 目录下主要是日志存放 2015/09/22  23:30               217 version.txt D:\mycat>more version.txt                        //版本信息 BuildTime  2015-09-22 15:30:06 GitVersion   b9af103db1f04afca17edaa05bfe3118ed0b23c2 MavenVersion 1.4-RELEASE GitUrl https://github.com/MyCATApache/Mycat-Server.git MyCatSite http://www.mycat.org.cn QQGroup 106088787 二、配置mycat 1、mycat的配置 文件全部基于xml文件来完成,位于mycat路径下的conf目录 通常包括以下配置文件:全部基于xml文件来完成,位于mycat路径下的conf目录,通常包括以下配置文件: autopartition-long.txt  cacheservice.properties dnindex.properties ehcache.xml index_to_charset.properties log4j.xml                         //日志文件的相关配置 partition-hash-int.txt partition-range-mod.txt router.xml rule.xml schema.xml sequence_conf.properties sequence_db_conf.properties sequence_time_conf.properties server.xml wrapper.conf 2、基本配置 修改server.xml如下 <user name="test">                                //配置连接到mycat的用户名及密码等 <property name="password">test</property> <property name="schemas">testdb</property>    //配置逻辑数据库名 </user> <user name="user"> <property name="password">user</property> <property name="schemas">testdb</property> <property name="readOnly">true</property>    //只读用户 </user> 修改schema.xml如下 D:\mycat\conf>type schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100">   //逻辑数据库名及相关配置 <!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node --> <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" /> //定义了一张全局表 </schema> <dataNode name="dn1" dataHost="192.168.1.204" database="db1" />  //定义分片节点,位于为2台不同的Linux主机 <dataNode name="dn2" dataHost="192.168.1.143" database="db2" />  //2个不同的主机使用了不同的物理库名                                                             //注:也可以在同一个实例上来定义分片,库名不同即可 <dataHost name="192.168.1.204" maxCon="1000" minCon="10" balance="0"  //定义分片主机相关属性 writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.1.204:3306" user="mycat"  //连接到物理数据库地址用户名密码等 password="pwd">                                    </writeHost> </dataHost> <dataHost name="192.168.1.143" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.1.143:3307" user="mycat" password="pwd"> </writeHost> </dataHost>             </mycat:schema> 三、启动mycat 1、直接运行 mycat.bat console 或者startup_nowrap.bat D:\mycat\bin>mycat.bat console wrapper  | --> Wrapper Started as Console wrapper  | Launching a JVM... jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved. jvm 1    | jvm 1    | log4j 2015-09-25 11:11:07 [./conf/log4j.xml] load completed. jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log  //可以看到启动成功 2、装载成服务启动 D:\mycat\bin>mycat.bat install wrapper  | Mycat-server installed. D:\mycat\bin>mycat start               //也可以通过界面方式启动mycat wrapper  | Starting the Mycat-server service... wrapper  | Mycat-server started. 四、演示mycat 1、登录 登录方式类似于 mysql 的服务端登陆,目前 mycat 有两个端口,8066 数据端口,9066 管理端口 登陆方式如: mysql -h127.0.0.1 -utest -ptest -P9066 [-dmycat] -h 后面是主机,即当前 mycat 按照的主机地址,本地可用 127.0.0.1 远程需要远程 ip -u Mycat server.xml 中配置的逻辑库用户 -p Mycat server.xml 中配置的逻辑库密码 -P 后面是端口 默认 9066,注意 P 是大写 -d Mycat server.xml 中配置的逻辑库 数据端口与管理端口的配置端口修改: 数据端口默认 8066,管理端口默认 9066 ,如果需要修改需要配置 serve.xml 2、演示 --基于管理端口演示

代码语言:javascript
复制
D:\mycat\bin>mysql -utest -ptest -P9066 -Dtestdb
		mysql> show @@help;      -- 获取有关管理的相关命令
		mysql> show @@database;  -- 查看逻辑数据库
		+----------+
		| DATABASE |
		+----------+
		| testdb   |
		+----------+


mysql> show @@datanode;  --查看分片节点
+------+-------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
| NAME | DATHOST           | INDEX | TYPE  | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME |
+------+-------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
| dn1  | 192.168.1.204/db1 |     0 | mysql |      0 |   10 | 1000 |     152 |          0 |        0 |       0 |            -1 |
| dn2  | 192.168.1.143/db2 |     0 | mysql |      0 |    0 | 1000 |       0 |          0 |        0 |       0 |            -1 |
+------+-------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+


	mysql> show @@server;   --查看服务器状态
	+---------------+-------------+--------------+------------+---------------+---------------+---------+--------+-----------------------+
	| UPTIME        | USED_MEMORY | TOTAL_MEMORY | MAX_MEMORY | RELOAD_TIME   | ROLLBACK_TIME | CHARSET | STATUS | AVG_BUFPOOL_ITEM_SIZE |
	+---------------+-------------+--------------+------------+---------------+---------------+---------+--------+-----------------------+
	| 23m 50s 344ms |   344386624 |   2058878976 | 2058878976 | 1443150953033 |            -1 | gbk     | ON     |                  1878 |
	+---------------+-------------+--------------+------------+---------------+---------------+---------+--------+-----------------------+


		mysql> show @@version;  --查看版本
		+----------------------------------------+
		| VERSION                                |
		+----------------------------------------+
		| 5.5.8-mycat-1.4-RELEASE-20150922233010 |
		+----------------------------------------+


		--基于数据端口演示,分别创建连接用户及数据库
		(root@192.168.1.204) [(none)]> grant all privileges on *.* to 'mycat'@'192.168.%.%' identified by 'pwd';
		Query OK, 0 rows affected (0.00 sec)


		(root@192.168.1.204) [(none)]> create database db1;
		Query OK, 1 row affected (0.00 sec)
		
		(root@192.168.1.143) [(none)]> grant all privileges on *.* to 'mycat'@'192.168.%.%' identified by 'pwd';
		Query OK, 0 rows affected (0.00 sec)
		
		(root@192.168.1.143) [(none)]> create database db2;
		D:\mycat\bin>mysql -utest -ptest -P8066 -Dtestdb


		D:\mycat\bin>mysql -utest -ptest -P8066 -Dtestdb
		mysql> select database();
		+------------+
		| DATABASE() |
		+------------+
		| testdb     |
		+------------+


		mysql> show tables;
		+------------------+
		| Tables in testdb |
		+------------------+
		| goods            |
		+------------------+


		mysql> desc goods;
		ERROR 1146 (42S02): Table 'db2.goods' doesn't exist


		mysql> explain create table goods(id int auto_increment not null primary key,val varchar(20));
		+-----------+--------------------------------------------------------------------------------+
		| DATA_NODE | SQL                                                                            |
		+-----------+--------------------------------------------------------------------------------+
		| dn1       | create table goods(id int auto_increment not null primary key,val varchar(20)) |
		| dn2       | create table goods(id int auto_increment not null primary key,val varchar(20)) |
		+-----------+--------------------------------------------------------------------------------+


		mysql> create table goods(id int auto_increment not null primary key,val varchar(20));
		Query OK, 0 rows affected (0.05 sec)


		mysql> insert into goods(val) values('apple');


		mysql> explain select * from goods;
		+-----------+-------------------------------+
		| DATA_NODE | SQL                           |
		+-----------+-------------------------------+
		| dn2       | SELECT * FROM goods LIMIT 100 | --此处可知,select查询会直接查询第二个分片
		+-----------+-------------------------------+
		
		mysql> select 'Leshami' as author,'http://blog.csdn.net/leshami' as Blog;
		+---------+------------------------------+
		| author  | Blog                         |
		+---------+------------------------------+
		| Leshami | http://blog.csdn.net/leshami |
		+---------+------------------------------+


		mysql> select * from goods;
		+----+-------+
		| id | val   |
		+----+-------+
		|  1 | apple |
		+----+-------+


		D:\mycat\bin>mysql -umycat -ppwd -h192.168.1.143 -P3307 -e "select * from db2.goods"
		Warning: Using a password on the command line interface can be insecure.
		+----+-------+
		| id | val   |
		+----+-------+
		|  1 | apple |
		+----+-------+


		D:\mycat\bin>mysql -umycat -ppwd -h192.168.1.204 -P3306 -e "select * from db1.goods"
		Warning: Using a password on the command line interface can be insecure.
		+----+-------+
		| id | val   |
		+----+-------+
		|  1 | apple |
		+----+-------+
		
		D:\mycat\bin>mysql -uuser -puser -P8066 -Dtestdb  --只读用户连接
		mysql> use testdb;
		Database changed
		mysql> show tables;
		+------------------+
		| Tables in testdb |
		+------------------+
		| goods            |
		+------------------+


		mysql> desc goods;
		ERROR 1495 (HY000): User readonly   --提示用户只读
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年10月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档