DTS两个数据库同步实验

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 数据同步,数据迁移

预置条件

A:数据库 Mysql01

B:数据库 Mysql02

通过 DTS 中的“数据同步”实现 Mysql01 到 Mysql02 的数据及数据结构的修改(DML+DDL)的同步。

此处 DTS 上的操作步骤不再详述.

实验步骤

1、数据表tbuser,在两个数据库环境中结构相同,但数据的初始状态如下:

Mysql01中

id

user_name

age

1001

user1

10

1002

user2

20

Mysql02中

id

user_name

age

1001

user1

10

1003

user3

30

2、向 Mysql01 的 tbuser 中插入一条数据:

insertinto tbuser(id,user_name,age)values('1004','user4','40');


此时 Mysql01 中的 binlog :

### INSERTINTO `db01`.`tbuser`
### SET###   @1=1004###   @2='user4'###   @3=40


结束后,我们到 Mysql02 中查看数据,发现多了一条相同的数据。

3、更新 Mysql01 中的tbuser:

update tbuser set user_name='user3'where id =1002;


此时 Mysql01 中的 binlog 为:

### UPDATE `db01`.`tbuser`
### WHERE###   @1=1002###   @2='user3'###   @3='30'


此时去 Mysql02中查看数据,结果如下:

select*from tbuser;


id

user_name

age

1001

user1

10

1003

user3

30

1004

user4

40

也就是在 Mysql02 中没有任何的数据改变,这说明在进行更新操作时,只会更新 id 存在于 Mysql02 中的数据。那么如果我们换成条件更新呢?

在刚刚的基础上,我们继续在 Mysql01 中进行以下 sql 操作:

update tbuser set user_name='user3-01'where user_name ='user3';


此时,Mysql01 中数据为:

id

user_name

age

1001

user1

10

1002

user3-01

30

Mysql02 中的数据为:

id

user_name

age

1001

user1

10

1003

user3

30

1004

user4

40

4、操作两张表中都有的数据 1004

先将 Mysql02 中的数据进行更新:

update tbuser set age='45'where id =1004;


再进行 Mysql01 中的数据更新:

update tbuser set user_name='user4-01'where user_name ='user4';


也就是,我们在进行源库更新时,不采用主键为条件的更新,同时更新的目标字段与第一次在目标库更新的字段不同,那么此时目标库 Mysql02 中的数据会时如何呢?结果如下:

id

user_name

age

1001

user1

10

1003

user3

30

1004

user4-01

40

可以看出,目标库的age又被更新成了 “40”,原因都在 binlog 中,我们可以查看 Mysql01 中的更新:

### UPDATE `db01`.`tbuser`
### WHERE###   @1=1004###   @2='user4-01'###   @3='40'


可见 binlog 中记录的过程都是将表中每个字段都记录下来的,这也就是为什么目标库 Mysql02 中的age也被更新的原因。所以我们在使用DMS进行数据追踪和备份时,发现导出的 sql 都是包含了所有的字段,而不是只有你做了更新的字段的原因。

总结

由此可知当在更新同步时,是通过根据源库的主键 id 进行的目标数据库的更新。后续实现 delete操作,效果相同。同理可推断出,当在源库进行 insert 操作时,要想后续实现这些数据对应的 update 和 delete 操作,那么定然是将源库带 id 的 insert sql进行目标库插入,也就是必须保证源库的主键 id 和目标库的主键 id 相同(具体可见上面的 binlog)。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
2月前
|
存储 SQL NoSQL
数据传输DTS同步问题之同步失败如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
3天前
|
DataWorks 关系型数据库 调度
DataWorks操作报错合集之DataWorks 数据库同步任务中,如果遇到表情符报错的现象,怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
14 0
|
3天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
17 0
|
3天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks目前支持ES数据库的分表同步如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
25 1
|
4天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
12 0
|
4天前
|
分布式计算 关系型数据库 大数据
MaxCompute产品使用合集之怎么才可以将 PostgreSQL 中的 geometry 空间类型字段同步到 MaxCompute 或另一个 PostgreSQL 数据库
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
监控 分布式数据库 API
数据传输DTS同步问题之遇到错误如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
2月前
|
容灾 NoSQL 关系型数据库
数据传输DTS同步问题之二分库到四分库如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
302 0
|
3月前
|
关系型数据库 分布式数据库 数据库
云原生数据库PolarDB快速入门实验
【2月更文挑战第2天】很基础的PolarDB入门操作实验考试,假期闲着无聊考着玩玩。云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。