文档章节

使用mycat实现数据库的分库分表

阿dai
 阿dai
发布于 2017/09/02 20:16
字数 802
阅读 265
收藏 0

使用mycat实现数据库的分库分表

准备工作:

安装mysql5.6:https://my.oschina.net/u/3497124/blog/1488479
安装Java1.8:https://my.oschina.net/u/3497124/blog/1525269

安装&配置mycat

安装mycat

软件下载地址:http://pan.baidu.com/s/1kUEwy39 (在此使用1.6版本)

[root@localhost src]# tar zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz

[root@localhost src]# ls
jdk-8u144-linux-x64.gz  Mycat-server-1.3.0.3-alpha-20150211194835-linux.tar.gz
mycat                   Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz

[root@localhost src]# mv mycat /usr/local

创建mycat用户:
[root@localhost src]# useradd mycat

更改权限:
[root@localhost src]# chown -R mycat:mycat /usr/local/mycat  

[root@localhost src]# cd /usr/local/mycat/

配置mycat

编辑mycat配置文件:

[root@localhost mycat]# vim conf/schema.xml   
搜索“datahost”
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="localhost:3306" user="root"
                                   password="123456">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="localhost:3306" user="root" password="123456" />
                </writeHost>
                <writeHost host="hostS1" url="localhost:3316" user="root"
                                   password="123456" />
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>

说明: 在此设置writeHost、readHost中的url、user、password与本机一致。

配置mycat的用户名和密码:

[root@localhost mycat]# vim conf/server.xml
……
<user name="mycat1">
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
</user>

说明: 这里设定了一个mycat1的租户,密码为123456,这个标签用来框定shema的配置范围(TEWTDB)。

启动mycat

[root@localhost mycat]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...

[root@localhost mycat]# ps aux |grep mycat
root      3670  0.4  0.0  17808   752 ?        Sl   19:01   0:00 /usr/local/mycat/bin/./wrapper-linux-x86-64 /usr/local/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/usr/local/mycat/logs/mycat.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/mycat

[root@localhost mycat]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1361/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2185/master         
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      3672/java           
tcp6       0      0 :::9066                 :::*                    LISTEN      3672/java           
tcp6       0      0 :::3306                 :::*                    LISTEN      2503/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1361/sshd           
tcp6       0      0 :::39288                :::*                    LISTEN      3672/java           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2185/master         
tcp6       0      0 :::1984                 :::*                    LISTEN      3672/java           
tcp6       0      0 :::39809                :::*                    LISTEN      3672/java           
tcp6       0      0 :::8066                 :::*                    LISTEN      3672/java       

连接MySQL

[root@localhost mycat]# mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB  
Welcome to the MySQL monitor.

至此搭建完成,相关应用后续研究…

注意: 这里-h后面必须是ip,使用localhost会出错。

测试

创建一个表:
mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0(无效的数据源,该错误不影响后续操作)

查看该SQL被发往哪些分片节点执行:
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.01 sec)

说明: explain可以用于任何正确的SQL上,其作用是告诉你,这条SQL会路由到哪些分片节点上执行,这对于诊断分片相关的问题很有帮助。另外,explain可以安全的执行多次,它仅仅是告诉你SQL的路由分片,而不会执行该SQL。由上可知在TESTDB创建employee表的同时也在dn1、dn2同步创建了employee表。

参考:
安装指南: http://code.taobao.org/svn/openclouddb/doc/

http://blog.csdn.net/jaysonhu/article/details/52858535

© 著作权归作者所有

共有 人打赏支持
阿dai
粉丝 64
博文 217
码字总数 285109
作品 0
昌平
运维
私信 提问
mycat学习02--摸打滚爬之mycat主从复制于读写分离(线上经验)

上一篇文章讲到了mycat的安装和配置,相信验证过的朋友已经知道了,上一篇的做法已经实现了主从复制与读写分离的效果,这里给大家详细说以下读写分离部分: 我的架构还是双主双从架构:(试验...

拎壶冲冲冲
07/09
0
0
MySQL多数据源笔记4-Mycat中间件实战

Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集 群构...

狂小白
03/18
0
0
Mycat学习实战-Mycat初识

Mycat学习实战-Mycat初识 Mycat学习实战-Mycat初识 1. Mycat是什么 2. Mycat与其他中间件的区别 3. Mycat能解决的问题 4. Mycat核心概念 5. Mycat文件夹以及文件介绍 1. Mycat是什么 Mycat是...

ygqygq2
06/29
0
0
手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

微信搜索“java进阶架构师”,选择“置顶公众号”更多精彩文章 20大进阶架构专题每日送达 一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之...

java进阶架构师
10/26
0
0
MyCAT全局序列号-数据库方式

1.MyCat中的全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式。...

HilaryHe
07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 教程:在 Confluence 中导航

当你对 Confluence 有所了解后,你会发现 Confluence 使用起来非常简单。这个教程主要是针对你使用的 Confluence 界面进行一些说明,同时向你展示在那里可以进行一些通用的任务和操作。 空间...

honeymose
47分钟前
2
0
sed, awk 练习

1. sed打印某行到某行之间的内容 2. sed 转换大小写 将单词首字母转化大写 将所有小写转化大写 3. sed 在某一行最后面添加一个数字 4. 删除某行到最后一行 解析: {:a;N;$!ba;d} :a : 是...

Fc丶
今天
2
0
babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部