关于OMS数据迁移中全量校验的疑问

OMS中含有全量校验功能,用于全量迁移后数据的校验,请问校验的原理是什么呢?是使用类似bin_log保证数据一致性吗

不是,这里全量校验可以理解为是一个快照做校验
原理就是源端和目标端分别select,然后进行比对,对于不一致的数据再给几次机会,重新查询后再校验

这里的话会对所有的数据select比对吗

不是,使用pk、uk分片select

1 个赞

请问可以详细解释下如何使用主键索引、唯一索引进行分片吗?因为我在OMS文档中并没有看到这部分的原理解释

利用数据库排序和分页查询,将pk分成若干分片
select pk from xxx order by pk limit batchsize,1

这样获取到的id如果校验相同,还需要校验其他字段吗?例如stuendt表,含有id、学号、姓名,源端和目标端id校验通过,还需要校验学号姓名字段吗?比如select 学号 from student where id = 1

OceanBase 的 OMS(OceanBase Migration Service)是一个数据迁移和管理服务,它提供了从其他数据库到 OceanBase 的数据迁移功能。在数据迁移过程中,全量校验功能是一个关键部分,用于确保迁移后的数据与目标数据库中的数据保持一致。

关于全量校验的原理,它并不是使用 bin_log(二进制日志)来保证数据一致性的。虽然 bin_log 在某些数据库系统中用于复制数据和恢复数据,但在这里的全量校验功能通常基于以下原理:

  1. 数据对比:OMS 会在源数据库和目标数据库之间对比数据。这可以通过比较每行数据的值来实现,确保源数据库和目标数据库中的相应行具有相同的值。
  2. 哈希校验:有时,为了更高效地进行数据对比,可以使用哈希函数来生成数据的哈希值,并在源数据库和目标数据库之间对比这些哈希值。如果哈希值相同,则可以认为数据是一致的。
  3. 行计数:除了对比具体的数据值外,还可以对比源数据库和目标数据库中的行数。如果行数相同,并且每行数据都相同,则可以认为数据是一致的。
  4. 约束检查:在某些情况下,还可以利用数据库的约束(如主键约束、外键约束等)来验证数据的一致性。如果数据违反了这些约束,则说明数据不一致。

需要注意的是,全量校验可能是一个耗时的过程,特别是当数据量很大时。因此,在实际操作中,可能需要在迁移过程中采取一些优化措施,如分批次进行校验、使用并行处理等方式来提高校验的效率。

总之,OMS 中的全量校验功能是通过对比源数据库和目标数据库中的数据来实现的,而不是使用 bin_log。在实际应用中,可以根据具体的需求和场景选择合适的校验方法。