Otter实现MySQL数据库分库分表

1 篇文章 0 订阅

问题现象

因为游戏公司在开始会设计多款游戏,所以开始的时候架构并不是很完美,久而久之,随着数据量越来越大,就会需要将数据进行拆分,但是如果游戏火起来,可能会需要进行多次拆分,每次拆分需要将数据进行拆分导出导入到新的数据库,确实很麻烦,所以基于这个背景,再加上之前博主用过otter同步数据,所以衍生一个想法,能否用otter进行同步过滤到后端多个数据库,经过我的测试发现是可以实现这样的功能的,也算是给大家提供一个拆分数据思路。

实验结果

在这里插入图片描述
在同步关系的Event Processor选择source
然后在Event Processor文本中嵌入下面的代码

 package com.alibaba.otter.node.extend.processor;

import com.alibaba.otter.shared.etl.model.EventColumn;
import com.alibaba.otter.shared.etl.model.EventData;
import org.apache.commons.lang.StringUtils;
public class TestEventProcessor extends AbstractEventProcessor {

    public boolean process(EventData eventData) {
				//isHandle就是用来控制该条数据是否需要进行同步
        boolean isHandle = false;
			//这里的sbtest1是要进行分表数据的表名
        if(StringUtils.equals("sbtest1", eventData.getTableName())){
        	//这里的k是对应的列名。需要根据哪个列名进行数据分片规则
            EventColumn eventColumn = getColumn(eventData , "k");

            //eventColumn.getColumnValue())%10这是一种简单的取模规则
            //也可以自己重写规则,我这里就是把k列末位位0的数据同步到后端数据库中
            //如果要拆分到10个表中,可以采用otter批量建立同步关系的方法,可以自行百度
            if((Integer.parseInt(eventColumn.getColumnValue())%10) == 0){
                isHandle =true;
            }
        }

        return isHandle;

    }


} 

总结

通过otter工具的使用,可以减少很大的人力消耗以及时间投入,毕竟开发一个DTS工具是很麻烦的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值