Mycat——分表分库组件

系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。

1.Mycat下载安装

Mycat解压后的目录结构如下:

目录

说明

2.Mycat架构

Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库。

简单分表的示例如下:

服务器

IP

说明

Mycat作为主数据库中间件,肯定是与代码弱关联的,所以代码是不用修改的,使用Mycat后,数据库连接是不变的,默认端口是8066。连接方式和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/

3.Mycat具体配置如下:

server.xml

32

32

0.0.0.0

4096

300000

100

druidparser

1

8066

9066

test

TESTDB

user

TESTDB

true

参数

说明

rule.xml

参数

说明

schema:

属性

说明

table:

属性

说明

dataNode:

属性

说明

dataHost:

属性

说明

4.登录mycat

mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB

测试数据库:

DROP DATABASE IF EXISTS db01;

CREATE DATABASE db01;

USE db01;

CREATE TABLE users (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NOT NULL DEFAULT '',

addtime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

############################################################

DROP DATABASE IF EXISTS db02;

CREATE DATABASE db02;

USE db02;

CREATE TABLE item (

id INT NOT NULL AUTO_INCREMENT,

value INT NOT NULL default 0,

addtime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

############################################################

DROP DATABASE IF EXISTS db03;

CREATE DATABASE db03;

USE db03;

CREATE TABLE item (

id INT NOT NULL AUTO_INCREMENT,

value INT NOT NULL default 0,

addtime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在通过数据库查询数据库和表,发现只有逻辑数据库TESTDB而不是db01, db02, db03;而且表也是统一显示的,而不是分布在不同的实际数据库中。参考图片如下:

现在在访问Mycat在数据库中插入数据,看数据能否按照前面配置的路由规则进行分表

测试SQL:

insert into users(name,addtime) values('zhangsan',now());

insert into users(name,addtime) values('lisi',now());

insert into item(id,value,addtime) values(1,100,now());

insert into item(id,value,addtime) values(2,100,now());

然后在Mycat上查看是否插入成功,下图显示插入成功

在Mycat上查询数据:

然后登录实际的数据库(MySQL端口号3306),看分表是否成功。下图显示分表成功

至此Mycat安装和测试分表分库结束。功能测试正常。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G0IPGS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券