用动易建设网站教程,彩页设计教程,网站开发 分工,百度提交网站改版学习了一下数据量过大的解决方案,使用 MyCAT 中间件。
MyCAT 可以解决分布式事务、读写分离、主从、分片等一系列MySQL集群和分布式问题。 整体过程可以概括为拦截 - 分发 - 响应
例如设置 MyCAT 分片规则为每500万条数据就换一个数据库存储。
分库分表的中心思想都是将数据…学习了一下数据量过大的解决方案,使用 MyCAT 中间件。
MyCAT 可以解决分布式事务、读写分离、主从、分片等一系列MySQL集群和分布式问题。 整体过程可以概括为拦截 - 分发 - 响应
例如设置 MyCAT 分片规则为每500万条数据就换一个数据库存储。
分库分表的中心思想都是将数据分散存储使得单一数据库/表的数据量变小来缓解单一数据库的性能问题从而达到提升数据库性能的目的。
分库分表的形式主要是两种垂直拆分和水平拆分。而拆分的粒度一般分为分库和分表。 Mycat最重要的3大配置文件
server.xml
配置 MyCAT 数据库的账号和密码配置文件 schema.xml
主要记录了主从库等相关信息
writeHost 为写入节点readHost为读取节点 schema 标签的 name 属性为 MyCAT 访问看到的数据库名逻辑库名
schema nameTESTDB checkSQLschemafalse sqlMaxLimit100table nametest dataNodemycat1,mycat2,mycat3 ruleauto-sharding-long/
/schema dataNode 属性配置为表切分后例如分别对应 localhost1 的三个库
dataNode namemycat1 dataHostlocalhost1 databasemycat1 /
dataNode namemycat2 dataHostlocalhost1 databasemycat2 /
dataNode namemycat3 dataHostlocalhost1 databasemycat3 / table标签是逻辑表的配置其中一共包含9个可配置的属性参数释义如下所示 .name对应MySQL中的表名。 .dataNode逻辑表所在的分片该属性值需要和dataNode标签的name属性对应。 .rule逻辑表使用的分片规则名称。规则在conf/rule.xml中配置该属性值必须与tableRule标签中的name属性值对应。 .ruleRequired是否绑定分片规则如果为true就一定要配置rule。 .primaryKey逻辑表对应真实表的主键。 .type逻辑表类型分为全局表和普通表后面会详细说明该属性。 .autoIncrement是否启用从自增主键对应MySQL自增主键默认是禁用的。 .subTable分表MyCAT1.6以后开始支持该属性。 .needAddLimit是否允许自动添加在schema标签中设置的limit默认为true。 rule.xml
MyCAT通过rule.xml配置水平分表策略通过schema.xml使用table标签指定表的分表策略。
常见的分片规则 取模算法 按日期分片算法
案例使用 ID 范围分片为例使用 name 为 auto-sharding-long 读取的分片规则文件定义在 autopartition-long.txt tableRule nameauto-sharding-longrulecolumnsid/columnsalgorithmrang-long/algorithm/rule/tableRule
function namerang-longclassio.mycat.route.function.AutoPartitionByLongproperty namemapFileautopartition-long.txt/property/function
autopartition-long.txt
修改为 id 范围0-2的为第0个库3-4为第1个库5-6为第2个库
# range start-end ,data node index
# K1000,M10000.
0-20
3-41
5-62