异构数据库迁移埋下的 9 个大坑,你怎么还不会躲开?( 五 )


  • 事务顺序
这个探究的是 , 软件同步是否能保持事务的顺序 , 如不能保持 , 那就得多留个心眼了 , 这种情况轻则导致同步延迟误判 , 重则导致旧 数据覆盖新数据 , 影响数据一致性 。
一个简单的测试样例为 , 创建一个周期性(如每分钟)更新的时间戳表 , 这个表的记录数与源端Oracle DB的节点数一致 。 定时脚本依次连接各个实例并以当前时间更新相应的字段 , 在目标端 , 我们可以通过查询时间点表观察会不会出现下面两种情况:
  • 后更新的数据是否会先被查询出来;
  • 同步出现延迟的话 , 时间戳表记录的时间会不会与同步进程的时间戳保持一致 。
  • 批量ddl测试
对于基于数据库日志的同步工具 , 大批量的DDL语句很可能会触发源端解析缓慢的情况 , 毕竟这涉及与数据字典的交互 。
笔者曾遇过某个基于Ogg的O2O同步环境遇到这种瓶颈 , 而最终的解决方案为调整开发商版本上载的脚本 , 加大DDL语句之间等待时间间隔 。
  • 基于同步原理短板的探究
对于基于rowid的同步方案 , 没啥好说的 , 只能从规范上减少move、shrink等改变rowid操作 , 实在要操作的话 , 需要重新同步相应的数据 。
对于基于主键的同步方案 , 则重点考虑如何处理无主键表如何处理 。
  • 进程重启测试
包含两种场景 , 正常重启以及异常重启 。
异常重启即高可用方面的 , 具体不展开了;至于正常重启的话 , 需要观察进程的一些自定义参数会不会被重置 。
关注公众号【dbaplus社群】 , 获取更多原创技术文章和精选工具下载

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。