关于mycat:分布式-实战将业务从-MyCAT-平滑迁移到-dble
作者:肖亚洲 爱可生 DBA 团队成员,负责我的项目中数据库故障与平台问题解决,对数据库高可用与分布式技术情有独钟。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 背景介绍客户环境近期呈现了几次问题,通过探讨后决定进行架构变更,要将 mycat 迁徙到 dble 。要求是:最小变动。 问题整顿联合客户状况与要求列举了下须要思考的事件: 参数设置分片函数数据节点的数据业务SQL问题解决1、参数设置 mycat 端参数如下: <system><property name="defaultSqlParser">druidparser</property><property name="processors">4</property><property name="processorBufferPool">20480000</property><property name="processorBufferLocalPercent">100</property><property name="frontSocketSoRcvbuf">10485760</property><property name="frontSocketSoSndbuf">41943040</property><property name="frontSocketNoDelay">1</property><property name="backSocketSoRcvbuf">41943040</property><property name="backSocketSoSndbuf">10485760</property><property name="backSocketNoDelay">1</property><property name="maxPacketSize">2048576000</property><property name="memoryPageSize">100m</property></system>针对该参数 DBLE 侧倡议如下: defaultSqlParser 、memoryPageSize 、processorBufferLocalPercent 已于 dble 中被废除,可不用配置processorBufferPool 参数名变更为 bufferPoolPageSize其余的参数在 dble 中可在 server.xml 中与 mycat 保持一致配置信息,局部参数信息详情可见:https://github.com/actiontech...留神:mycat 和 dble 的内存治理配置有较大不同。比方:没有 threadlocal 概念。倡议浏览以下文档:https://actiontech.github.io/... 2、分片函数 查看 mycat 分片规定: <function name="mod-long" class="io.mycat.route.function.PartitionByMod"><!-- how many data nodes --><property name="count">8</property></function>间接采纳 DBLE 的 hash 算法测试发现局部数据查问报错: 查看表内数据状况: 样例数据:20210810143211157000000000036 字段:user_code为varchar(32) 查看 mycat 环境分片规定:采纳的分片算法为 mod-long 。而 long 的取值范畴是 -9223372036854774808~9223372036854774807 ,查问出错的 20210810143211157000000000036 超过了 long 的取值范畴。所以能够得出 mycat 针对这一非凡状况做了非凡解决。 ...