MyCAT安装指南

MyCAT安装指南

MyCAT 1.2版本

快速上手-安装指南(安装单机)

Mycat的server和mysql位于同一台服务器,centos6.2.4环境

Mycat:10.191.116.175

Mysql:10.191.116.175

是用Java开发,需要有JAVA运行环境,mycat依赖jdk1.7的环境,若本机没有,则需要下载安装:

http://www.java.com/zh_CN/

获取MyCAT最新开源版本,项目主页http://code.google.com/p/MyCAT/

目前最新代码暂时在淘宝上托管,二进制包下载地址:

http://code.taobao.org/svn/openclouddb/downloads/

windows下可以下载Mycat-server-xxxx.ZIP,linux下可以下载tar.gz解开在某个目录下,注意,目录不能有空格,在Linux(Unix)下,建议放在/usr/local/MyCAT目录下,如下面类似的:

下面是修改MyCat用户的密码方式(仅供参考)

目录解释如下:

Bin 程序目录,存放了window版本和linux版本,除了提供封装成服务的版本之外,也提供了nowrap的shell脚本命令,方便大家选择和修改,进入到bin目录:

  • Windows 下 运行: mycat.bat  console 在控制台启动程序,也可以装载成服务,若此程序运行有问题,也可以运行startup_nowrap.bat,确保java命令可以在命令执行。
  • Linux下运行:nohup sh  mycat  console &,首先要chmod +x mycat

Warp方式的命令,可以安装成服务并启动或停止。

  • mycat install (可选)
  • mycat start

注意,wrap方式的程序,其JVM配置参数在conf/wrap.conf中,可以修改为合适的参数,参数调整参照http://wrapper.tanukisoftware.com/doc/english/properties.html用下面是一段实例:

注:mycat必须依赖jdk1.7,在1.6的情景下会报错,如果机器未升级可以指定jdk的目录,我考了一个jdk的包出来的,添加的绝对路径,根据情况定。

wrapper.java.command=/usr/local/Mycat/jdk1.7.0/bin/java

# Java Additional Parameters

wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G

wrapper.java.additional.6=-Dcom.sun.management.jmxremote

# Initial Java Heap Size (in MB)

wrapper.java.initmemory=2048

# Maximum Java Heap Size (in MB)

wrapper.java.maxmemory=2048

若启动报内存不够,可以试着将上述内存都改小,改为1G或500M

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

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

建议本地有一个Mysql Server,若没有,建议安装一个,下载地址:

http://dev.mysql.com/downloads/mysql/5.5.html#downloads

启动Mysql,确保能正常登录访问数据,msyql命令行工具mysql\bin\mysql.exe建议加入PATH路径中,为了方便使用。

Service mysql start

用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片数据库;

CREATE database db1;

CREATE database db2;

CREATE database db3;

注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。

MySQL的配置文件中my.ini [mysqld] 中增加一行

  lower_case_table_names = 1

编辑MYCAT_HOME/conf/schema.xml文件,修改dataHost对应的连接信息:

注意writeHost/readHost中的location,user,password的值符合你所采用的Mysql的连接信息。

修改完成后保存,进入到MYCAT_HOME/bin目录下,执行启动命令:startup.bat ,启动成功以后显示如下信息:

注意,默认数据端口为8066,管理端口为9066。

客户端也可以用图形化的客户端如:mysqlworkbench、 navicat 、以及一些基于Java的数据库客户端来访问,注意要填写端口号8066,以及database 为TESTDB。

命令行运行:mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB  就能访问OpenCloudDB了,以下操作都在此命令行里执行(JDBC则将mysql的URL中的端口3306改为8066即可)

提示:访问MyCAT的用户账号和授权信息是在conf/server.xml文件中配置,而MyCAT用来连接后端MySQL库的用户名密码信息则在conf/schema.xml中,这是两套完全独立的系统,类似的还有MyCAT的逻辑库(schema),逻辑表(table)也是类似的。

Employee表,是根据规则sharding-by-intfile (分片字段为sharding_id)进行分片。创建employee表:输入如下SQL

create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

运行explain指令,查看该SQL被发往哪些分片节点执行:

explaincreate table employee (id int not null primary key,name varchar(100),sharding_id int not null);

建议参照schema.xml中employee表的定义,以及其分片规则,来看看什么数据会出现在dn1上,什么数据会出现在dn2上。

温馨提示:explain可以用于任何正确的SQL上,其作用是告诉你,这条SQL会路由到哪些分片节点上执行,这对于诊断分片相关的问题很有帮助。另外,explain可以安全的执行多次,它仅仅是告诉你SQL的路由分片,而不会执行该SQL

插入数据:

insert into employee(id,name,sharding_id) values(1,‘leader us‘,10000);

insert into employee(id,name,sharding_id) values(2, ‘me‘,10010);

insert into employee(id,name,sharding_id) values(3, ‘mycat‘,10000);

insert into employee(id,name,sharding_id) values(4, ‘mydog‘,10010);

company表是根据规则auto-sharding-long(主键范围)进行分片。创建company表:输入如下SQL

create table company(id int not null primary key,name varchar(100));

录入数据:

insert into company(id,name) values(1,‘hp‘);

insert into company(id,name) values(2,‘ibm‘);

insert into company(id,name) values(3,‘oracle‘);

你会看到三个分片上都插入了3条数据,因为company定义为全局表,用explain来确认这个情况:

explain insert into company(id,name) values(1,‘hp‘)

返回3个节点的信息:

| DATA_NODE | SQL                                         |

+-----------+---------------------------------------------+

| dn1       | insert into company(id,name) values(1,‘hp‘) |

| dn2       | insert into company(id,name) values(1,‘hp‘) |

| dn3       | insert into company(id,name) values(1,‘hp‘) |

+-----------+---------------------------------------------+

创建客户表:

create customer:    create table customer(id int not null primary key,name varchar(100),company_id int not null,sharding_id int not null);

插入数据:

insert into customer (id,name,company_id,sharding_id )values(1,‘wang‘,1,10000);  //stored in db1;

insert into customer (id,name,company_id,sharding_id )values(2,‘xue‘,2,10010);  //stored in db2;

insert into customer (id,name,company_id,sharding_id )values(3,‘feng‘,3,10000); //stored in db1;

查询结果:

Select * from  customer;

explain Select * from  customer;  (确认数据是分片存储)

创建表格orders,并插入数据:

create table orders (id int not null primary key ,customer_id int not null,sataus int ,note varchar(100) );

insert into orders(id,customer_id) values(1,1); //stored in db1 because customer table with id=1 stored in db1

insert into orders(id,customer_id) values(2,2); //stored in db2 because customer table with id=1 stored in db2

explain insert into orders(id,customer_id) values(2,2);

select customer.name ,orders.* from customer ,orders where customer.id=orders.customer_id;

travelrecord根据ID主键的范围进行分片:

create travelrecord: create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);

insert into travelrecord (id,user_id,traveldate,fee,days) values(1,‘wang‘,‘2014-01-05‘,510.5,3);这个ID就存放在分片0上了

explain insert into travelrecord (id,user_id,traveldate,fee,days) values(7000001,‘wang‘,‘2014-01-05‘,510.5,3); 这个ID就存放在分片1上了

看到支持跨分片的JOIN!

热点新闻,用取摸的方式随机分配到dn1,dn2,dn3上

create table hotnews(id int  not null primary key ,title varchar(400) ,created_time datetime);

插入数据

insert into hotnews(id,title,created_time) values(1,‘first‘,now()); 在分片1上

而Id为5,则到dn3上,5%3=2 ,即对应dn3的 index

其他:

goods表

create table goods(id int not null primary key,name varchar(200),good_type tinyint,good_img_url  varchar(200),good_created date,good_desc varchar(500), price double);一起探索MyCAT的奇妙新世界吧! QQ群:106088787

时间: 2024-08-08 08:16:16

MyCAT安装指南的相关文章

利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

Dockerfile内容如下: FROM centos MAINTAINER Victor [email protected] WORKDIR /root RUN rm -f /etc/yum.repos.d/* RUN echo '[BASE]' > /etc/yum.repos.d/base.repo RUN echo 'name=base' >> /etc/yum.repos.d/base.repo RUN echo 'baseurl=http://192.168.244.132/

mycat

schema.xml管理逻辑库,分片表,分片借点和分片主机等信息 server.xml是系统参数的配置文件. sequence是全局序列的配置文件 log4j.xml是mycat的日志输出配置文件 mycat从1.5版本开始支持两种配置方式:zookeeper和本地xml方式.默认以本地加载xml方式启动.如果需要配置成zookeeper方式启动,把zk.conf文件中的loadfromzk参数设置成true. server.xml配置文件 1.user标签 p.p1 { margin: 0.0

Spark1.0.0伪分布安装指南

?一.下载须知 软件准备: spark-1.0.0-bin-hadoop1.tgz   下载地址:spark1.0.0 scala-2.10.4.tgz    下载下载:Scala 2.10.4 hadoop-1.2.1-bin.tar.gz   下载地址:hadoop-1.2.1-bin.tar.gz jdk-7u60-linux-i586.tar.gz  下载地址:去官网下载就行,这个1.7.x都行 二.安装步骤 hadoop-1.2.1安装步骤,请看: http://my.oschina.

httpfs安装指南

安装环境 Linux maven3 jdk1.6 本地的maven源(有些依赖的jar包Cloudera已不再维护) 1.下载httfs源码包 https://github.com/cloudera/httpfs 使用git下载 git clone https://github.com/cloudera/httpfs.git 2.修改pom.xml文件 在<dependencies>中增加依赖 <dependency> <groupId>org.apache.hadoo

MyCAT+MySQL搭建

Mycat安装部署 1下载jdk: http://www.oracle.com/technetwork/java/javase/archive-139210.html,建议用7就好 jdk-7u55-linux-i586.tar.gz 解压包:tar –zxvf jdk-7u55-linux-i586.tar.gz 存放在/usr/local:mv jdk1.7.0_55 /usr/local/jdk 添加环境变量: Vim /etc/profile exportJAVA_HOME=/usr/l

mycat实现简单的mysql集群负载均衡

什么是mycat呢? 简单理解为一个MySQL中间件,它支持分流.基于心跳的自动故障切换,支持读写分离,支持mysql主从,基于Nio管理线程的高并发- 详见官网:http://www.mycat.io/ 为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接,一个是客户端与后端的连接,另一个是后端与数据库的连接,说白了就是发送端请求太多,接收端能够的接收和处理的请求并不多,在客户端与后端中可以利用类似nginx的负载均衡解决,而在后端与数据库中可以利用类似mycat的负

Mycat读写分离和分库分表配置

Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端mysql存储引擎里面.最新版本的Mycat不仅支持mysql,还可以支持MS SqlServer,Oracle,DB2等关系型数据库,而且还支持MongoDB这种NoSQL.Mycat对调用者屏蔽了后端存储具体实现. Mycat的原理是先拦截用户的SQL语句并做分

数据库中间件mycat简单入门

当在项目中mysql数据库成为瓶颈的时候,我们一般会使用主从复制,分库分表的方式来提高数据库的响应速度,比如mysql主从复制,在没有数据库中间件的情况下,我们只能由开发工程师在程序中控制,这对于一个在正在线上运行的项目来说,需要改动的代码量蛮大的,也不方便扩展,比如,我想再添加一台从机,下面进行mycat入门 一.部署步骤详解 (1) 用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片数据库: CREATE database db1; CREATE database db2;

[项目构建 十四]babasport Mycat配置及使用详解.

首先我们来看下什么是Mycat:MyCat:开源分布式数据库中间件, 这里定义的很简单, 就是分布式数据库的中间件. 其实Mycat 是可以时mysql进行集群的中间件, 我们可以对mysql来分库分表 来应对日益增长的数据量. 每台机器只存少量数据, 数据总和是分布式的机器上数据量总和. 例如我们一个表中有512条数据(当然实际情况可能有成千上万条数据), 那么现在我们有三台机器装有mysql数据库, 我们想将这些数据按照一定规则的存储在三台机器上, 那么我们设定规则: 表的id%/512 取