Mycat

docker 安装mysql主从和mycat

mysql主从:https://blog.csdn.net/Amor_Leo/article/details/85177001
mycat安装:https://blog.csdn.net/Amor_Leo/article/details/85218405

Mycat是什么

数据库中间件,类似nginx,拦截请求,路由分发, 不同的是nginx拦截的是请求,而Mycat拦截的是sql

为什么要用Mycat

mycat数据模型

简单来说就是将以前的分库分表,读写分离等相关业务和配置从系统项目里面剥离出来,教给mycat统一管理,系统只需要链接mycat即可

主从复制

mysql主从复制原理

基本的读写分离是基于mysql的主从复制,主从复制内部的binlog同步来实现的,和redis主从不同的是,redis是通过RDB文件从太开始同步,而binlog只复制修改的部分

作用:

垂直分库:由不同的表名调用不同的数据库
垂直分表:通过不同的策略写入和查找
读写分离,可以设置读和写的主从策略
权限控制;读写权限
防火墙功能:ip白名单和黑名单

分片策略:rule.xml

具体策略:

枚举策略:

#(1)修改schema.xml配置文件
#(2)修改rule.xml配置文件 ... areacode hash-int partition-hash-int.txt 1 0 # columns:分片字段,algorithm:分片函数 # mapFile:标识配置文件名称,type:0为int型、非0为String, #defaultNode:默认节点:小于 0 表示不设置默认节点,大于等于 0 表示设置默认节点, # 设置默认节点如果碰到不识别的枚举值,就让它路由到默认节点,如不设置不识别就报错 #(3)修改partition-hash-int.txt配置文件 110=0 120=1 #(4)重启 Mycat #(5)访问Mycat创建表 作用:当areacode=110的时候访问或者写入dataNode1 areacode=120读取写入dataNode2中

hash策略:



mycat:rule xmlns:mycat="http://io.mycat/">
          
              
                user_id  
                sharding-by-substring  
              
        
                0
                2
                2
                0
        

 columns标识将要分片的表字段。 
 algorithm为分片函数。 
 startIndex为字符串开始截取位,从0开始。 
 size为截取的位数。 
 partitionCount为分片个数 
 defaultPartition为默认节点

范围策略:

#(1)修改schema.xml配置文件
#(2)修改rule.xml配置文件 ... order_id rang-long autopartition-long.txt 0 # columns:分片字段,algorithm:分片函数 # mapFile:标识配置文件名称 #defaultNode:默认节点:小于 0 表示不设置默认节点,大于等于 0 表示设置默认节点, # 设置默认节点如果碰到不识别的枚举值,就让它路由到默认节点,如不设置不识别就 报错 #(3)修改autopartition-long.txt配置文件 0-102=0 103-200=1 #(4)重启 Mycat #(5)访问Mycat创建表 作用:当0<=order_id<=102的时候访问或者写入dataNode1 103<=order_id<=200读取写入dataNode2中

时间策略:

  #(1)修改schema.xml配置文件
#(2)修改rule.xml配置文件 ... login_date shardingByDate yyyy-MM-dd 2019-01-01 2019-01-04 2 # columns:分片字段,algorithm:分片函数 #dateFormat :日期格式 #sBeginDate :开始日期 #sEndDate:结束日期,则代表数据达到了这个日期的分片后循环从开始分片插入 #sPartionDay :分区天数,即默认从开始日期算起,分隔 2 天一个分区

还有很多规则具体参考:cnblogs.com/bjxq-cs88/p/9470405.html

全局序列

1 mycat文件 不推荐,mycat宕机风险,不推荐
2.数据库存储方式,一次从mysql 拿100个自增id ,用完再取,宕机会再次获取,只会造成id不连续,并不会有重合风险
3.雪花算法

Mycat高可用

Mycat高可用

用HAProxy和keepalived来保证Mycat的高可用性

你可能感兴趣的:(Mycat)