数据库同步有哪些方式?【怎么保障目标和源数据一致性】

这篇具有很好参考价值的文章主要介绍了数据库同步有哪些方式?【怎么保障目标和源数据一致性】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

数据库同步有3大难题:
1是如何保障目标和源数据一致性;
2是异构数据库如何做数据类型转换,导致数据同步失败的原因常常是因为数据类型不一样;
3是在数据越实时越有价值的背景下,同步过程中能否做到实时同步。

一、几种主流的数据库同步方式

方式一:基于无侵入的日志模式(如Oracle redo、Mysql binlog)
基于日志的采集方式无需在源库端部署任务代理程序(Agent)及建任何表,对源数据库无侵入和影响压力;

方式二:基于时间戳
同步过程通过特定属性(如时间戳、自增序列)来识别新插入的数据,该方式实现最简单,但无法记录删除和更新,也不具备实时的能力;

方式三:基于触发器
基于数据库的触发器机制,当执行DML相关语句时,执行动作来捕获数据,该方式会降低系统能,因此大多数场景下,生产系统不允许添加触发器。

方式四:基于快照
基于快照的方式,可以通过比较源表和快照表来获得数据变化,但需要消耗大量存储空间和计算资源。

方式五:基于离线批处理
通过jdbc查询来批量获取数据,会进行数据表的大范围扫描和数据提取,会对数据库产生大量开销。

本文主要探讨无侵入的CDC模式,并以运用这种模式的数据库同步云工具 Tapdata Cloud 举例,你要问我为啥用它举例,原因只有一个:永久免费。

二、架构及工作原理

Tapdata Cloud包含两部分:

  1. Tapdata Cloud Manager,TCM是Tapdata Cloud的管理端,负责agent实例的安装,同步任务的配置、分发、任务状态监测。
  2. Tapdata agent,是Tapdata Cloud数据同步服务的执行实例,负责从TCM获取任务信息,通过流式技术从源系统获取数据、处理转换数据并发送到目标系统,并在任务执行过程中监测并上报任务状态至TCM。

数据库同步有哪些方式?【怎么保障目标和源数据一致性】

(Tapdata Cloud 工作原理图)

有朋友可能会担心这个云平台会不会把我要同步的数据泄露出去?

从Tapdata Cloud 工作原理上可以看出:

  1. 同步实例节点单向连接管控端运行服务。 Tapdata agent实例节点对外不主动暴露网络信息,只会连接 TCM管理端服务,获取任务信息、上报状态信息。
  2. 用户部署的Tapdata agent实例节点和 TCM 通信链路采用 HTTPS 协议。
  3. 自建模式下,所有数据流转均发生在受用户管理的服务器和网络环境。
    可见,数据同步过程中数据泄露的问题大可不必担忧。

三、全量同步和实时增量同步机制

Tapdata Cloud 这款云同步工具支持全量同步和实时增量同步,实现的过程如下图所示:
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


四、源和目标

据 Tapdata Cloud 最新版本,目前支持了:

数据库 版本 作为源 作为目标 是否可用
mysql 5.x,8.x 支持 支持
oracle 9i, 10g, 11g, 12c 支持 支持
sqlsever 2005, 2008, 2012, 2014, 2016, 2017 支持 支持
mongodb 3.2, 3.4, 3.6, 4.0, 4.2 支持 支持
PostgreSQL 9.x, 10.x,11.x,12.x,13.x 支持 支持
Elastic 5.x, 6.x, 7.x 暂不支持 支持
达梦数据库 7,8 支持 支持
Kafka 2.3.x及以上 暂不支持 支持
Redis 2.x, 3.x, 4.x 暂不支持 支持 即将上线
DB2 9.7 LUW版本 支持 支持 即将上线
Sybase Sybase ASE 15.7 及以上 支持 支持 即将上线
Gbase 支持 支持 即将上线

五、举例:Oracle 数据实时同步到 Elasticsearch

一般需要做全文检索的时候,会将 Oracle 数据实时同步到 Elasticsearch。

第一步:配置 Oracle 连接

  1. 点击 Tapdata Cloud 操作后台左侧菜单栏的【连接管理】,然后点击右侧区域【连接列表】右上角的【创建连接】按钮,打开连接类型选择页面,然后选择Oracle
    数据库同步有哪些方式?【怎么保障目标和源数据一致性】

  1. 在打开的连接信息配置页面依次输入需要的配置信息
    数据库同步有哪些方式?【怎么保障目标和源数据一致性】

【连 接 名 称】:设置连接的名称,多个连接的名称不能重复
【数据库地址】:数据库 IP / Host
【端 口】:数据库端口
【数据库名称】:tapdata 数据库连接是以一个 db 为一个数据源。这里的 db 是指一个数据库实例中的 database,而不是一个 schema。
【账 号】:可以访问数据库的账号
【密 码】:数据库账号对应的密码
【时 间 时 区】:默认使用该数据库的时区;若指定时区,则使用指定后的时区设置

第二步:配置 Elasticsearch 连接

  1. 同第一步操作,点击左侧菜单栏的【连接管理】,然后点击右侧区域【连接列表】右上角的【创建连接】按钮,打开连接类型选择页面,然后选择Elasticsearch
    数据库同步有哪些方式?【怎么保障目标和源数据一致性】

  1. 在打开的连接信息配置页面依次输入需要的配置信息,配置完成后测试连接保存即可。
    数据库同步有哪些方式?【怎么保障目标和源数据一致性】

第三步:建立同步任务,以全量+增量同步举例
进入Tapdata Cloud 操作后台任务管理页面,点击添加任务按钮进入任务设置流程
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


根据刚才建好的连接,选定源端与目标端。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


根据数据需求,选择需要同步的库、表,如果你对表名有修改需要,可以通过页面中的表名批量修改功能对目标端的表名进行批量设置.
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


在以上选项设置完毕后,点击下方的全量+增量选项并点击确定按钮即可完成本次全量同步任务的配置,在点击确定后将自动返回任务管理页面,在任务管理页面中,点击右侧的启动按钮即可使Tapdata Agent 开始执行本次任务。在全量任务执行完毕后,Tapdata Agent 会自动进入增量同步状态。在该状态中,Tapdata Agent 会持续监听源端的数据变化(包括:写入、更新、删除),并实时的将这些数据变化写入目标端。

数据库同步有哪些方式?【怎么保障目标和源数据一致性】


点击任务监控可以打开任务执行详情页面,可以查看任务执行的具体信息。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


同理,其他数据库的同步操作也跟上面步骤一致,比如几个常用的场景是:
• 从业务数据库到缓存数据库的实时同步
• 不停机迁移数据库
• 将主业务中心的数据实时同步至次业务中心
• 构建只读实例
• 构建异地灾备中心
• 构建异地多活


六、目标和源数据一致性

很多人都担心同步的数据可能没法和源数据一致,Tapdata Cloud 提供了数据校验功能,包括快速count校验、表全字段值校验和关联字段值校验三种校验方式。
• 快速count:仅对源表和目标表的行数进行count校验,速度极快,但是不会展示差异的具体字段内容。
• 全表字段值校验:会对源表和目标表的全部字段进行逐行校验,能查出所有字段的差异,但是速度慢。
• 关联字段值校验:只对源表和目标表的关联字段的值进行比对校验,速度快于全表字段值校验模式。
校验操作步骤
进入数据校验菜单,点击新建校验任务创建数据校验。
【选择任务】:选择一个历史同步任务
【校验类型】:可选 快速count校验、表全字段值校验和关联字段值校验
【校验任务名】:默认与选择的同步任务名字一样
【校验频次】:设置您的校验的执行频次
【单次校验】:只执行一次校验
【重复校验】:设置校验任务重复执行,支持设置校验执行的起止时间和校验间隔
【错误数据保存条数】:当出现校验不一致的数据时,不一致数据保存的最大条数。该数值会影响到差异校验,当错误数据条数超出设置的保存条数时,将无法进行差异校验。
【校验条件】:添加需要进行校验的表。点击自动添加会自动将任务下的所有表全部添加进来。

快速count校验

创建快速count校验时只需要选择到要校验的表,无需设置关联条件。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


表全字段值校验

除了要选择待校验表外,还需要针对每一个表设置索引字段。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


在进行表全字段值校验时,还支持进行高级校验。通过高级校验可以添加JS校验逻辑,对源和目标的数据进行校验。

数据库同步有哪些方式?【怎么保障目标和源数据一致性】


完整示例:以MongoDB查询示例

JavaScript

function validate(sourceRow){
    // 第1步
    var targetRow = target.executeQuery({database: "target",collection: "USER",filter: {USER_ID: sourceRow.USER_ID}});
    // 第2步
    if(sourceRow.USER_ID === targetRow[0].USER_ID){
        // 第3步
        return {result: 'passed',message: "",data: ""}
    }else{
        return {result: 'failed',message: "记录不一致",data: targetRow}
    }
}

数据库同步有哪些方式?【怎么保障目标和源数据一致性】


关联字段值校验

创建关联字段值校验时,除了要选择待校验表外,还需要针对每一个表设置索引字段。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】

七、异构数据类型转换

在异构数据库之间做同步,类型转换是一大难题,也是导致数据同步失败的重要原因,Tapdata Cloud 类型映射功能,在系统推演的基础上,提供了人工调整的能力,这一点比其他数据同步工具都更方便使用。
数据库同步有哪些方式?【怎么保障目标和源数据一致性】


八、总结

为了达到数据实时要求,并且不对源库造成干扰,首选 CDC 模式。
现在市面上已经陆续出现了一些数据同步工具,完全没有必要自己撸代码了,免费的用起来不香吗?
希望上文的实操图文,对你的数据库同步有帮助,有数据库相关的问题可以随时跟我交流!文章来源地址https://www.toymoban.com/news/detail-411349.html

到了这里,关于数据库同步有哪些方式?【怎么保障目标和源数据一致性】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 某高品质房产企业:借助NineData平台,统一数据库访问权限,保障业务安全

    该企业是中国领先的优质房产品开发及生活综合服务供应商。在 2022 年取得了亮眼的业绩表现,销售额市场占有率跻身全国前五。业务涵盖房产开发、房产代建、城市更新、科技装修等多个领域。 2023 年,该企业和玖章算术(浙江)科技有限公司达成合作,通过玖章算术的

    2024年02月04日
    浏览(44)
  • 数据库➡ES,数据更新同步

            mysql5.7(自己部署),elasticsearch:7.4.2(自己部署),centos7.0(虚拟环境),python3.8(自己部署),pycharm(自己安装);--建议可用docker部署mysql和es         ①、mysql数据,estable表字段(ID--unique,VALUE--str is json format)唯一ID,json格式的字符串,(表中存的为需要更新

    2024年01月17日
    浏览(38)
  • MySQL数据库同步方案

    MYSQL主从同步架构是目前使用最多的数据库架构之一,主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。 如上图所示,192.168.4.10(主机名为\\\"10.mysql\\\")作为MySQL主数据库,192.168.4.

    2024年02月10日
    浏览(41)
  • kafka的安装,用于数据库同步数据

    因业务需求,需要查询其他部门的数据库数据,不方便直连数据库,所以要定时将他们的数据同步到我们的环境中,技术选型选中了kafka+CDC Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。 它最初由LinkedIn(领英)公司

    2024年02月20日
    浏览(44)
  • es和数据库同步方案

    5.5 课程信息索引同步 5.5.1 技术方案 通过向索引中添加课程信息最终实现了课程的搜索,我们发现课程信息是先保存在关系数据库中,而后再写入索引,这个过程是将关系数据中的数据同步到elasticsearch索引中的过程,可以简单成为索引同步。 通常项目中使用elasticsearch需要完

    2024年02月11日
    浏览(41)
  • openstack同步数据库报错!!

    [root@controllerhaproxy1 ~]# tail -f /var/log/keystone/keystone.log 2023-03-22 17:22:15.111 5891 ERROR keystone File \\\"/usr/lib/python2.7/site-packages/debtcollector/renames.py\\\", line 43, in decorator 2023-03-22 17:22:15.111 5891 ERROR keystone return wrapped(*args, **kwargs) 2023-03-22 17:22:15.111 5891 ERROR keystone File \\\"/usr/lib/python2.7/site-packages/o

    2024年02月01日
    浏览(30)
  • MySQL数据库实现主从同步

    安装MySQL数据库8.0.32 今天来学习数据库主从同步的原理及过程,数据库主要是用来存储WEB数据,在企业当中是极为重要的,下面一起来看下。 MySQL主从复制在中小企业,大型企业中广泛使用,MySQL主从复制的目的是实现数据库冗余备份,将master数据库数据定时同步到slave数据库

    2024年02月02日
    浏览(54)
  • C#实现SqlServer数据库同步

    实现效果: 设计思路: 1. 开启数据库及表的cdc,定时查询cdc表数据,封装sql语句(通过执行类型,主键;修改类型的cdc数据只取最后更新的记录),添加到离线数据表; 2. 线程定时查询离线数据表,更新远程库数据; 3. 远程库数据被更改又会产生cdc数据,对此数据进行拦截;

    2024年02月13日
    浏览(37)
  • 【ElasticSearch】深入探索 ElasticSearch 对数据的聚合、查询自动补全、与数据库间的同步问题以及使用 RabbitMQ 实现与数据库间的同步

    在本文中,我们将深入探讨 ElasticSearch 在数据处理中的关键功能,包括数据聚合、查询自动补全以及与数据库的同步问题。 首先,我们将聚焦于 ElasticSearch 强大的聚合功能,解释什么是聚合以及如何通过 DSL 语句和 RestClient 实现各种聚合操作。这一功能能够让我们更深入地了

    2024年02月08日
    浏览(54)
  • 基于Canal实现MySQL 8.0 数据库数据同步

    主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服务器 1、Ubuntu系统下MySQL配置文件位置 2、CentOS系统下MySQL配置文件位置 3、添加如下配置,开启MySQL binlog功能 关于canal简介,这里就不再阐述,具体可以参看官方文档介绍,地

    2023年04月23日
    浏览(161)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包