OMS对上亿行数大表迁移如何提升效率

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

3 个赞

最简单的就是调整OMS的jvm大小和work_num数。。或者源库能拆分成多张表的话其实也能提高效率 :sweat_smile:

3 个赞

有调整过,目前jvm32G worknum128 但感觉效率还是不太满意 rps 10000左右

3 个赞

源库的拆分是指?

3 个赞

OMS的资源看上去是够了,那看一下源库和目标库是否存在瓶颈呢。。检查下源库和目标库是否有慢SQL以及insert语句耗时高不高

3 个赞

把源库大表拆成多张小表

3 个赞

查询和插入都是毫秒级别,batchSize 设置的30000

3 个赞





3 个赞

这样来看单表确实没有好的办法,目前迁移了多少数据量。。计算下还要多久的时间,是否能接受吧 :sweat_smile:

3 个赞

背景是3版本迁移到4版本并且做分区表改造,3版本数据库数据量单副本100G左右,1亿行的那张大表就90多G了,目前优化的方式是临时提升源端和目标端的CPU配置,提高并发能力,目前迁移速度在3-4小时左右

3 个赞

3-4个小时应该也还好,3.x源端那边如果是分区的话其实速度也应该能快很多

2 个赞

再请教两个问题,一个是上面的增量拉取组件的延迟该怎么处理呢?
另一个是在全量校验过程中有几个表报错运行异常


这个情况有什么处理方式吗?

1 个赞

是和表无主键有关吗?

第二个问题找到了:对于无主键表,现在 OMS 不支持增量同步以及数据校验,所以如果要同步的表包括主键表+无主键表,那么后续增量同步任务,需要将无主键表剔除掉,或者保证无主键表没有变更。
MySQL 迁移到 OB-数据库技术博客-OceanBase分布式数据库

1 个赞

1、调整ob租户内存大小和调整oms jvm 大小
2、通过分区表 批量迁移,我记得oms或者datax 可以 单独对分区表迁移
3、冷热数据分割,热数据通过oms迁移;冷数据 dump ,datax,flink cdc 都可以 ,方法很多。

1 个赞

你oms什么版本的 ,我记得4.2.2 以后 都支持无主键表迁移了。

1 个赞

增量延迟大概在多久。。我实测的经验在二三十秒都算正常,如果超过这个时间需要确定的源端日志是否有写入,源端写入不频繁的话超过这个时间也算正常

1 个赞

好的,估计可能因为测试环境周六日没啥写入操作。

1 个赞

4.2.1版本

1 个赞

全量迁移的时候可以参考下面参加提高源和目标batch的大小提高性能,生产环境谨慎调节

“limitator.image.insert.batch.max”:

string"100"

“limitator.platform.threads.number”:

string"4"

“limitator.reviewer.period”:

string"3"

“limitator.reviewer.review.batch.max”:

string"100"

“limitator.reviewer.rounds.max”:

string"20"

“limitator.reviewer.time.max”:

string"60"

“limitator.select.batch.max”:

string"200"

“limitator.table.diff.max”:

string"10000"

“mapper.from_master_to_image.list”:

string"silvans;;=datasync;;"

“rectifier.image.enable”:

string"false"

“rectifier.image.operator.delete”:

string"false"

“rectifier.image.operator.insert”:

string"false"

“rectifier.image.operator.update”:

string"false"

“sampler.verify.ratio”:

string"100"

“task.checker_jvm_param”:

string"-server -Xms4g -Xmx4g -Xmn2g -Xss512k"