一些常见的数据库中间件
Cobar / Mycat / TDDL / Sharding-JDBC
Mycat 可以认为是一个虚拟的数据库服务器,可以看作是一个基于mysql协议的数据库代理。解决:分库分表带来的复杂操作。
官网 http://www.mycat.io/
电子书 http://www.mycat.io/document/Mycat_V1.6.0.pdf
应用场景:
读写分离 、 分库分表
Mycat在linux的安装
1、下载安装包 http://dl.mycat.io/
2、日志 /logs/wrapper.log Resources/log4j.xml
3、启动 默认端口 8066
Mycat配置文件
schema.xml
<schema name="database_rice1" />
配置逻辑数据库(mycat虚拟数据库下的database)
<table name="td_user_info" dataNode="dn1,dn2,dn3" />
定义逻辑表,td_user_info绑定到对应的dn1,dn2,dn3的数据库上,并且做了水平切分
<childTable name=""/>
垂直分库后的表
<dataNode name="db1"/>
绑定虚拟数据库到具体的database上
<dataHost name="localhost" />
指向一个真实存在的物理数据库
rule.xml
<tableRule name="auto-sharding-long"/>
<funtion name="rang-long"/>
server.xml
<user name="root"/>
配置权限控制
Mycat实现读写分离
待详解
Mysql全局ID解决方案
本地文件方式,server.xml中配置sequnceHandlerType=0 表示使用本地文件的方式去做全局ID
数据库方式,使用全局的序列表
分布式zkid
Mycat分片规则
枚举分片
范围分片
取模分片
一些概念
逻辑库
真实的数据库
逻辑表
应用层真实操作的表
分片表
分片后,落在各个库的表
非分片表
没有做分片
全局表
在整个分片里它是全局的,每一个分片里都会保存一份相同的数据(如 字典数据表)(如何做数据同步?)