数据库中间件mycat简单入门

当在项目中mysql数据库成为瓶颈的时候,我们一般会使用主从复制,分库分表的方式来提高数据库的响应速度,比如mysql主从复制,在没有数据库中间件的情况下,我们只能由开发工程师在程序中控制,这对于一个在正在线上运行的项目来说,需要改动的代码量蛮大的,也不方便扩展,比如,我想再添加一台从机,下面进行mycat入门

一、部署步骤详解

(1) 用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片数据库;
 CREATE database db1;
 CREATE database db2;
 CREATE database db3;

(2) /etc/my.cnf,设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。
        lower_case_table_names = 1

(3) 解压Mycat-server-1.3.0.2-20150105144205-Linux.tar.gz 到/usr/local/mycat

(4) 解压jdk-7u65-linux-i586.gz,拷贝jdk1.7.0_65 到/usr/local/mycat/

(5) 修改/usr/local/conf/wrap.conf 修改wrapper.Java.command=java为上一步存放路径
 wrapper.java.command=/usr/local/mycat/jdk1.7.0/bin/java

(6) 创建mycat 用户,改变目录权限为mycat
 useradd mycat
 chown -R mycat.mycat /usr/local/mycat

(7) 修改用户密码
 passwd mycat
 输入:

(8) 修改/usr/local/conf/schema.xml,URL、用户名、密码修改,其余不变
 <writeHost host="hostM1" url="192.168.0.4:3306" user="root"
                        password="admin">

二、运行步骤详解

(1) 进入 /usr/local/mycat/bin (默认数据端口为8066,管理端口为9066)
 执行 ./mycat start

三、使用步骤详解
  (1) 进入mysql bin目录/usr/local/mysql/bin/

(2) 登录mysql 执行以下命令
 ./mysql -utest -ptest -h10.1.176.104 -P8066 -DTESTDB
 
 (mycat的用户账号和授权信息是在conf/server.xml文件中配置)

(3) 表创建测试
 
 mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
 Query OK, 0 rows affected (0.30 sec)

mysql> explain create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
 +-----------+------------------------------------------------------------------------------------------------+
 | DATA_NODE | SQL                                                                                            |
 +-----------+------------------------------------------------------------------------------------------------+
 | dn1       | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) | 
 | dn2       | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) | 
 +-----------+------------------------------------------------------------------------------------------------+
 2 rows in set (0.04 sec)

(4) 客户端软件使用:navicat

创建mycat新连接:ip:10.1.176.104,用户名:test,密码:test,端口:8066
 可看到TESTDB数据库下已创建表:employee

打开db1,db2 数据库也可看到已创建表employee

(5) 插入数据测试
 mysql> insert into employee(id,name,sharding_id) values(1,‘leader us‘,10000);
 ERROR 2006 (HY000): MySQL server has gone away
 No connection. Trying to reconnect...
 Connection id:    6
 Current database: TESTDB

Query OK, 1 row affected (0.03 sec)

mysql> explain insert into employee(id,name,sharding_id) values(1,‘leader us‘,10000);
 +-----------+-----------------------------------------------------------------------+
 | DATA_NODE | SQL                                                                   |
 +-----------+-----------------------------------------------------------------------+
 | dn1       | insert into employee(id,name,sharding_id) values(1,‘leader us‘,10000) | 
 +-----------+-----------------------------------------------------------------------+
 1 row in set (0.00 sec)
 
  (6) 根据规则auto-sharding-long(主键范围)进行分片测试
 mysql> explain create table company(id int not null primary key,name varchar(100));
 +-----------+---------------------------------------------------------------------+
 | DATA_NODE | SQL                                                                 |
 +-----------+---------------------------------------------------------------------+
 | dn1       | create table company(id int not null primary key,name varchar(100)) | 
 | dn2       | create table company(id int not null primary key,name varchar(100)) | 
 | dn3       | create table company(id int not null primary key,name varchar(100)) | 
 +-----------+---------------------------------------------------------------------+
 3 rows in set (0.01 sec)

(7) 三个分片上都插入了3条数据
 mysql> explain insert into company(id,name) values(1,‘hp‘);
 +-----------+---------------------------------------------+
 | 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‘) | 
 +-----------+---------------------------------------------+
 3 rows in set (0.00 sec)

(8) 确认是分片存储
 
 mysql> select * from employee;
 +----+-----------+-------------+
 | id | name      | sharding_id |
 +----+-----------+-------------+
 |  2 | me        |       10010 | 
 |  4 | mydog     |       10010 | 
 |  1 | leader us |       10000 | 
 |  3 | mycat     |       10000 | 
 +----+-----------+-------------+
 4 rows in set (0.01 sec)

mysql> explain select * from employee;
 +-----------+----------------------------------+
 | DATA_NODE | SQL                              |
 +-----------+----------------------------------+
 | dn1       | SELECT * FROM employee LIMIT 100 | 
 | dn2       | SELECT * FROM employee LIMIT 100 | 
 +-----------+----------------------------------+
 2 rows in set (0.00 sec)

时间: 2024-10-06 14:55:01

数据库中间件mycat简单入门的相关文章

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS等操作系统之上. CentOS7

现代Java服务端开发核心技术之数据库中间件MyCAT入门

现代Java服务端开发核心技术之数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 SecureCRT Linux客户端 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS

开源数据库中间件-MyCat

开源数据库中间件-MyCat产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机.它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升. 但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的.这个时候NoSQL肯定是无法满足的,所以还是需要使用关系型数据库.如何

开源数据库中间件MYCAT产品介绍与企业实战

开源产品就像一块布,不能拿来就用,我们要量体裁衣,把它变成一件衣服.互联网开发无小事,因为互联网应用要面对海量信息,一个小小的问题也能被无限放大,就像汪洋中的蝴蝶效应.一个互联网应用遇到的问题可能与系统.网络.应用.架构.数据等各个层面的问题有关,只有耐心发现并处理好每一个相关层面的问题,才能最终形成一款好的互联网应用.时刻提醒自己当下一波巨浪到来前我们会准备的更好! <开源数据库中间件MYCAT产品介绍与企业实战>  下载地址:http://download.csdn.net/detail/

Jmeter测试mysql数据库中间件mycat

背景 因为博主所负责测试的项目需要数据库有较大的吞吐量,在最近进行了升级,更新了一个数据库中间件 - - mycat.查询了一些资料,了解到这是阿里的一个开源项目,基于mysql,是针对磁盘的读与写,理论上读写速度上会略小于mysql. 与组长沟通后,决定在功能测试完成后,对升级后的mycat进行性能压测. 环境准备 1.下载Jmeter 可以访问下面的地址进行下载,建议下载zip版本的,因为zip是一个绿色版本,无需安装,解压后即可使用, Jmeter下载地址 2.下载mysql数据库的驱动包

转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库中间件 MyCAT 源码分析 —— 调试环境搭建

关注**微信公众号:[芋艿的后端小屋]**有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 1. 依赖工具 2. 源码拉取 3. 数据库配置 4. MyCat 配置 5. MyCAT 启动 6. MyCAT 测试 7. 交流

数据库中间件Mycat源码解析(三):Mycat的SQL解析和路由

mycat对sql的解析分为两部分,一个是普通sql,另一个是PreparedStatment. 下面以解析普通sql为例分析(另一种方式大同小异),sql从客户端发过来后server接收后会调用FrontendCommandHandler的handle方法,这个方法会调用FrontendConnection的query方法,接着query方法会调用ServerQueryHandler的query方法,接着调用ServerConnection的execute方法.如下图所示: public vo

数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析

关注微信公众号:[芋艿的后端小屋]有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 1. 概述 2. Lexer 词法解析器 3. Token 词法标记 3.2.1 Literals.IDENTIFIER 词法关键词 3.2