MyCat 读写分离

数据分片
一. 相关概念
1. 分库/分表,什么是分库分表?
将存放在一台数据库服务器中的数据,按照特定方式进行拆分,分散存放到多台数据库服务器当中,以达到分散单台服务器负
载的效果。
2. 水平分割
横向切分,按照表中指定字段的分片规则,将表记录按行切分,分散存储到多个数据库中。
垂直分割
纵向切割,将单个数据库的多个表按业务类型分类,分散存储到不同的数据库。
##################################################################################
二. 1. MyCat介绍
mycat是基于java的分布式数据库系统中间件,为高并发环境的分布式存储提供解决方案
适合数据大量写入的存储需求;支持MySQL,oracle,sqlserver,Mongodb等;提供数据读写分离服务;
提供数据分片服务;基于阿巴巴cober进行演发的开源软件。
2. 分片规则
Mycat支持提供10种分片规则,以下是5种常用的
①. 枚举法 //sharding-by-intfile
②. 固定分片 //rule1
③. 范围约定 //auto-sharding-log
④. 求模法 //mod-log
⑤. 日期列分区法 //sharding-by-date
3. 工作过程
当mycat收到一个sql命令时,
①. 解析sql命令涉及到的表
②. 然后看对表的配置,如果有分片规则,则获取sql命令里分片字段的值,并匹配分片函数,获得分片列表
③. 然后将sql命令发往对应的分片服务器去执行
④. 最后收集和处理所有分片结果数据,并返回到客户端
4. 拓扑结构

##################################################################################
三. 配置数据分片
1. 配置数据分片服务器192.168.4.56
①. 部署mycat运行环境
]# yum -y install java-1.8.0-openjdk //安装JDK
]# which java //查看命令
/usr/bin/java
]# java –version //显示版本
②. 安装提供服务的软件包
]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz //解压源码
]# mv mycat /usr/local/ //移动目录(非必须操作)
]# ls /usr/local/mycat/ //查看文件列表
- bin //mycat命令
- catlet //扩展功能
- conf //配置文件
server.xml //设置连接账号及逻辑库 schema.xml //配置数据分片
rule.xml //分片规则 其他文件 //函数调用文件
- lib //mycat使用的jar包
- logs //mycat启动日志和运行日志
- wrapper.log //mycat服务启动日志
- mycat.log //记录sql脚本执行后的报错内容
③. 配置客户端连接使用的用户及密码
]# vim /usr/local/mycat/conf/server.xml //一般使用默认配置
//连接mycat服务时使用的用户名
123456 //用户连接mycat用户时使用的密码
TESTDB //逻辑库名


user
TESTDB
true //只读权限,连接mycat服务后只有读记录的权限,不写这一行则是可读可写

④. 配置数据分片
]# cp schema.xml /opt/ //拷贝一份数据分片的配置文件,防止修改错误
]# wc -l schema.xml //删除前查看总行数
77 /root/schema.xml
]# sed -i ‘56,77d’ schema.xml //删除无关行的配置
]# sed -i ‘39,42d’ schema.xml
]# sed -i ‘16,18d’ schema.xml
]# sed -i ‘45,47d’ schema.xml
]# vim /usr/local/mycat/conf/schema.xml
⑤. 配置数据库服务器
用户授权并创建存储数据库
[root@host53 ~]# mysql -uroot -p123qqq…A -e ‘create database db1’
[root@host53 ~]# mysql -uroot -p123qqq…A -e ‘grant all on . to admin@"%" identified by “123qqq…A”’
[root@host54 ~]# mysql -uroot -p123qqq…A -e ‘create database db2’
[root@host54 ~]# mysql -uroot -p123qqq…A -e ‘grant all on . to admin@"%" identified by “123qqq…A”’
[root@host55 ~]# mysql -uroot -p123qqq…A -e ‘create database db3’
[root@host55 ~]# mysql -uroot -p123qqq…A -e ‘grant all on . to admin@"%" identified by “123qqq…A”’
⑥. 启动mycat服务(192.168.4.56)
[root@host56 conf]# /usr/local/mycat/bin/mycat -help
[root@host56 conf]# /usr/local/mycat/bin/mycat status
[root@host56 conf]# /usr/local/mycat/bin/mycat start
[root@host56 conf]# /usr/local/mycat/bin/mycat status
⑦. 查看服务信息
查看进程
[root@host56 conf]# ps -C java
查看端口
[root@host56 conf]# netstat -utnlp | grep :8066
日志文件
[root@host56 conf]# ls /usr/local/mycat/logs/
⑧. 客户端50 连接分片服务器56 访问数据
[root@host50 ~]# mysql -h192.168.4.56 -P8066 -uroot -p123456
> show databases;
> use TESTDB;
> show tables;
> desc goods;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值