Welcome 微信登录

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

数据库同步过程中既要保证数据库装载的效率,又要保证数据库每个交易的原子性,即保证一个事务中多条SQL语句执行的成功出于以上目的,我们选择多表并发加多断点方式来进行同步,原理是取出需要同步的事务,按照表及SQL语句量进行划分,分给不同的进程来执行,每个进程有一个断点,当一个表的某一条SQL语句执行出错的时候,该进程会记录下此断点,该表停止同步,其他表的数据同步继续进行,当手工处理完该表出错的SQL语句后,该进程根据标志把错误表需要同步的SQL语句重新执行或跳过,这样同步进程会继续,并且个别表的错误不会影响整体的同步那么原子性如何能够在同步过程中保持一致呢?借助网格断点就可以达到该目的。网格断点实际上就是把交易的SCN号和每条SQL语句的表顺序进行关联,记录该SCN号中的某条SQL语句执行情况的流水文件,日志分析进程按照表名创建多个网格文件,内容是SCN号以及执行语句,按照SCN号来排序,这样每个同步进程就可以读取属于自己的相关表文件,并按照SCN号的顺序进行并发装载,这样保证同一时点的数据是按照SCN号进行装载的,保证了在备库上查询统计的一致性。当每个进程执行成功后就会修改自己对应的断点文件,所以当系统出现异常的时候我们就会检查所有的断点文件,这样数据库就可以根据断点情况继续同步,对于不同的DDL和DML语句进行相应的错误处理。Oracle Golden Gate体系架构详解数据库同步过程中一致性和完整性的保证相关资讯      数据库 
  • 数据库范式详解  (06/20/2014 08:59:37)
  • rman 创建catalog实验及说明  (10/07/2012 19:00:24)
  • SYSTEM用户删除后怎么重新创建和原  (09/09/2012 10:00:38)
  • 分布式数据库:dblink  (10/27/2012 15:57:32)
  • AutoMySQLBackup实现数据库定期备  (09/14/2012 08:08:02)
  • 利用dbstart和dbshut脚本自动启动  (08/21/2012 06:16:21)
本文评论 查看全部评论 (0)
表情: 姓名: 字数