数据库同步过程中一致性和完整性的保证

简介:

数据库同步过程,最严格的指标,第一是效率,即每秒同步SQL条数;其次是一致性,即主库产生的数据,备库同步后是否一致;第三就是数据库同步的完整性如何保证,即当同步各个环节出现问题时,如何考虑出错处理,下面我们将分别进行讨论并进行合理性分析。

  第一、效率

  数据库同步过程主要分为三个阶段,即抽取、分析、装载。

  抽取过程主要是实时读取数据库日志,这部分可以作到毫秒级别间隔,所以不存在效率问题,基本上可以作到实时抽取;

  分析过程主要是分析SQL语句并把源日志转化为备库的可装载日志,这部分的主要时间是写文件时间,由于普通硬盘写入时间是50M/秒左右,故对于大交易量情况,如果每秒主库阵列产生日志量上300M/秒左右,那相比之下分析组件还是会有秒级延迟的,因为我们同步软件一般都不安装在主库,无法使用高速阵列的写入速度,所以秒级别延迟还是会产生的,但是只要不是持续高峰日志量的产生速度,再经过一段时间后数据会自行同步,如果要追求实时抽取的同时又要实时分析,那建议只能给同步服务器配置一个阵列了;

  装载过程主要是根据分析组件的结果进行备库SQL语句的装载,所以并发装载是提高效率的唯一方法,不过对于备库服务器配置不是很高的情况,建议数据库长连接的数目需要能够合理配置,因为备库有时会作为查询统计的负载分担,所以如果备库的资源有限,对于查询统计分担的效果会大打折扣。

  第二、一致性

  如何能够保证备库的数据和主库一致,这个问题如果在业务层面提出来,大家肯定没什么好的办法,一个共同的回答就是“查看备库”,用应用去连,之后检查刚刚同步的数据是正确的就可以了,不过这样的抽查很有可能检查不出来特殊错误的数据,我想从几个机制方面来分析这个问题。

  1、分析日志(Analysis Log)

  就是即将装载到备库的SQL语句,这部分是装载正确的根本,这部分数据如果正确了,则保证了数据源的正确。

  2、装载日志(Upload Log)

  就是装载数据时是否出现问题,有时备库和主库表定义有不一致,那么在这个日志就会记录出错,根据此日志就能够检查出问题出现在什么地方。

  通过以上两个日志基本能保证同步过程中的错误捕捉,同时再加上同步数据检查程序(此数据需要主、备库检查过程中不能更改数据)和应用程序。

  连接备库抽查是两个辅助检查方式,同时备库作为查询统计分析进行实时提供服务也会把抽查变成常态,从而保证数据的一致性。

  第三、完整性

  数据库的完整性,主要从容错机制来考虑,例如出现下面错误情况时需要同步程序能够自动恢复:

  1、源库断电或重起

  2、源库SHUTDOWN

  3、源库网络断

  4、备库断电或重起

  5、备库SHUTDOWN

  6、备库网络断

  7、数据库装载出错

  针对上面主要几种情况,同步软件必须进行一一考虑断点的记录方式和位置,保证任何情况下同步程序能够续抽、续传,甚至对错误处理也可以通过人为参与后继续同步,同时还有两方面功能必须考虑:

  1、不停机初始化

  2、日志已经归档

  3、自身程序停止的重起

  4、同步服务器断电之后断点启动

  数据库同步软件只有充分考虑了以上三个方面的指标,才能为行业客户提供优秀的、实时的、数据完整一致的同步产品,满足相关基于数据库同步的业务需求。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
15天前
|
关系型数据库 数据库
关系型数据库的数据完整性
关系型数据库通过一系列机制和技术手段来确保数据的完整性,从而为用户提供准确、一致和可靠的数据服务。这些措施对于保障数据的质量、满足用户需求以及维护系统的稳定运行具有重要意义。
20 5
|
2月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
2月前
|
SQL 关系型数据库 数据库
事务隔离级别:保障数据库并发事务的一致性与性能
事务隔离级别:保障数据库并发事务的一致性与性能
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
108 1
|
10天前
|
DataWorks 关系型数据库 调度
DataWorks操作报错合集之DataWorks 数据库同步任务中,如果遇到表情符报错的现象,怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
20 0
|
10天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
28 0
|
10天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks目前支持ES数据库的分表同步如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
32 1
|
2月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
59 0
|
3天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
9 0
|
4天前
|
存储 关系型数据库 数据库
关系型数据库的数据一致性和完整性
关系型数据库的数据一致性和完整性是数据库设计中的两个重要概念,它们共同保证了数据库中数据的准确性和可靠性。
16 2