首页 > 数据库 > mysql教程 > 如何保证数据库同步中目的端交易提交的原子性

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 17:14:16
原创
997 人浏览过

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

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

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

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

linux

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
数据库数据
来自于 1970-01-01 08:00:00
0
0
0
数据库
来自于 1970-01-01 08:00:00
0
0
0
数据库文件导入
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板