当在项目中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)

 
 

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

  1. 开源数据库中间件-MyCat

    开源数据库中间件-MyCat产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求.这 ...

  2. MyCAT简单入门配置

    MyCAT简单入门配置 安装jdk 建议1.7以上 安装mysql 安装MyCAT Mycat 源码:https://github.com/MyCATApache/Mycat-Server Mycat ...

  3. 【Jmeter】压测mysql数据库中间件mycat

    背景 因为博主所负责测试的项目需要数据库有较大的吞吐量,在最近进行了升级,更新了一个数据库中间件 - - mycat.查询了一些资料,了解到这是阿里的一个开源项目,基于mysql,是针对磁盘的读与写, ...

  4. 数据库中间件MyCat学习总结(1)——MyCat入门简介

    为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代.如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷. MyCat的目标就是:低成本 ...

  5. 分布式数据库中间件 MyCat 搞起来!

    关于 MyCat 的铺垫文章已经写了三篇了: MySQL 只能做小项目?松哥要说几句公道话! 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下! What?Tomcat 竟然也算中间件? ...

  6. 数据库中间件MyCat学习总结(2)——MyCat-Web原理介绍

    Mycat是一个分库分表的基于java开发的数据库中间件,使用过程中需要有一个监控系统,mycat-web应运而生.mycat-web是一个使用SpringMVC + Mybatis的监控平台,使用常 ...

  7. 分布式数据库中间件 MyCat | 分库分表实践

    MyCat 简介 MyCat 是一个功能强大的分布式数据库中间件,是一个实现了 MySQL 协议的 Server,前端人员可以把它看做是一个数据库代理中间件,用 MySQL 客户端工具和命令行访问:而 ...

  8. 开源分布式数据库中间件MyCat源码分析系列

    MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置. ...

  9. 分布式数据库中间件Mycat百亿级数据存储(转)

    此文转自: https://www.jianshu.com/p/9f1347ef75dd 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,如高并发下的假死,心跳连接的故障,只实现 ...

随机推荐

  1. Java -Dfile.encoding=UTF-8 出现乱码问题原因分析

    这两天写了一个 Java 程序来玩,结果又遭遇了以前遇到过很多次的乱码问题,具体描述一下: 在 Mac 系统里面,常用的 Java 程序启动方式有如下几种: 1.通过 eclipse 执行 class ...

  2. easyUI学习网站

    http://www.runoob.com/jeasyui/plugins-form-timespinner.html http://www.jeasyui.net/plugins/178.html ...

  3. 【leetcode❤python】 88. Merge Sorted Array

    #-*- coding: UTF-8 -*-class Solution(object):    def merge(self, nums1, m, nums2, n):        "& ...

  4. 【leetcode❤python】 8. String to Integer (atoi)

    #-*- coding: UTF-8 -*-#需要考虑多种情况#以下几种是可以返回的数值#1.以0开头的字符串,如01201215#2.以正负号开头的字符串,如'+121215':'-1215489' ...

  5. DrawIndexedPrimitive参数详解

    HRESULT DrawIndexedPrimitive( [in]  D3DPRIMITIVETYPE Type, [in]  INT BaseVertexIndex, [in]  UINT Min ...

  6. react入门笔记

    this.props.children是任何内嵌的元素 利用ref属性给子组件命名,this.refs引用组件,getDOMNode()获取本地的DOM元素,如: this.refs.author.g ...

  7. STL--map

    map--概述: 映射(Map)和多重映射(Multimap)是基于某一类型Key的键集的存在,提供对TYPE类型的数据进行快速和高效的检索. l对Map而言,键只是指存储在容器中的某一成员. lMu ...

  8. 转 谈谈android反编译和防止反编译的方法

    谈谈android反编译和防止反编译的方法   android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项 ...

  9. ZOJ-2365 Strong Defence 无公共边割边集

    题意:该题的题意晦涩,勉勉强强听别人说了一遍后再读了一遍题才算懂了题意,题图说的是A国因为B国药进攻自己的国家,于是想办法在联通A-B之间的路径上进行阻击.阻击的舰船停留在一个路径上,舰船上都要放置水 ...

  10. [转]ubuntu环境变量配置文件

    参考网址:http://www.bkjia.com/Linuxjc/1008127.html Ubuntu通常使用的几个配置文件主要有下面这几个: /etc/environment./etc/prof ...