• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何保证数据库同步中目的端交易提交的原子性

mysql 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论

数据库同步过程中既要保证数据库装载的效率,又要保证数据库每个交易的原子性,即保证一个事务中多条SQL语句执行的成功出于以上目

数据库同步过程中既要保证数据库装载的效率,又要保证数据库每个交易的原子性,即保证一个事务中多条SQL语句执行的成功出于以上目的,我们选择多表并发加多断点方式来进行同步,原理是取出需要同步的事务,按照表及SQL语句量进行划分,分给不同的进程来执行,每个进程有一个断点,当一个表的某一条SQL语句执行出错的时候,该进程会记录下此断点,该表停止同步,其他表的数据同步继续进行,当手工处理完该表出错的SQL语句后,该进程根据标志把错误表需要同步的SQL语句重新执行或跳过,这样同步进程会继续,并且个别表的错误不会影响整体的同步

那么原子性如何能够在同步过程中保持一致呢?借助网格断点就可以达到该目的。网格断点实际上就是把交易的SCN号和每条SQL语句的表顺序进行关联,记录该SCN号中的某条SQL语句执行情况的流水文件,日志分析进程按照表名创建多个网格文件,,内容是SCN号以及执行语句,按照SCN号来排序,这样每个同步进程就可以读取属于自己的相关表文件,并按照SCN号的顺序进行并发装载,这样保证同一时点的数据是按照SCN号进行装载的,保证了在备库上查询统计的一致性。

当每个进程执行成功后就会修改自己对应的断点文件,所以当系统出现异常的时候我们就会检查所有的断点文件,这样数据库就可以根据断点情况继续同步,对于不同本文来源gao@!dai!ma.com搞$$代^@码!网!的DDL和DML语句进行相应的错误处理。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何保证数据库同步中目的端交易提交的原子性
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址