高效数据移动指南 | 如何快速实现数据库 MySQL 到 MongoDB 的数据同步?

在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。

本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。

本文教程为:MySQL → MongoDB 的数据同步任务。

在实际应用中,数据同步涉及诸多场景,如容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代、业务分流等,不同的场景在数据流向、同步需求、数据处理等方面会有不同的需求,需要针对性地选择迁移工具和方案。

以 MySQL 到 MongoDB 的数据同步需求为例,这样从关系型数据库到非关系型数据库的数据移动需要考虑数据结构的差异和转换规则。MySQL 基于表结构,而 MongoDB 是文档型数据库,数据格式更为灵活。同步过程中,需要将 MySQL 中的表结构映射到 MongoDB 的文档结构,并确保数据类型兼容。此外,还需考虑数据一致性、实时性要求,以及增量同步机制的实现。

一、什么是 MySQL?

MySQL 是一个流行的开源关系型数据库管理系统(RDBMS),其特点是高性能、可靠性和易用性,广泛应用于 Web 应用、企业应用和数据仓库。基于 SQL(结构化查询语言),MySQL 适用于各种规模的应用、具有跨平台特性、提供多种存储引擎、支持事务和外键。其中,MySQL 的高性能和可靠性在实际应用中尤为重要,因为它能够处理大量的数据和高并发的请求,而不会显著降低系统的响应速度。MySQL 的易用性也是一个关键优势,用户可以通过图形化界面或者命令行进行数据库管理,相对简单易学。

优势

  • 开源:社区活跃,提供持续的更新和支持。
  • 跨平台:支持多种操作系统,如 Windows、Linux 和 macOS。
  • 高性能:优化了读写性能,适合处理大量数据。
  • 灵活性:支持多种数据类型,包括整型、浮点数、字符串和日期等。
  • 安全性:提供多层次的安全特性,包括用户权限管理、加密连接等。

二、什么是 MongoDB?

MongoDB 是一款面向文档的、分布式数据库系统,用于存储和管理大量结构化和非结构化数据。其核心概念包括文档存储和分布式,主要特性有动态模式、索引、聚集、映射-归约和复制。它广泛应用于内容管理系统、电子商务平台、社交媒体网站、物联网应用和移动应用开发等领域。MongoDB 利用灵活的文档取代表和行来处理和存储各种形式的数据。 作为 NoSQL 数据库解决方案,MongoDB 提供了一个弹性数据存储模型,可以让用户轻松地存储和查询多元数据类型。 不仅简化了数据库管理,而且为跨平台应用程序和服务创建了高度可扩展的环境。MongoDB 的设计理念是为了应对大数据量、高性能和灵活性需求,它以 JSON-like 的格式存储数据,使得数据结构更加灵活和丰富。

优势

  • 负载均衡:MongoDB 的负载均衡共享过程一次性跨多个虚拟机分布大量数据,同时仍保持可接受的读写吞吐量。 这种水平扩展可以帮助组织避免硬件垂直扩展的成本,同时还能扩展基于云的部署的容量。
  • 特设数据库查询:MongoDB 能够处理不需要预定义模式的特设数据库查询。通过使用一种类似于 SQL 数据库的查询语言,对于入门和高级开发人员而言都非常容易上手。这种便利性使用户能够通过常见的帮助命令和简单的 shell 命令轻松地推送、查询、排序、更新和导出数据。
  • 多语言支持:MongoDB 曾发布了多个版本,并且仍在持续开发中,具备对流行编程语言的驱动程序支持,包括 Python、PHP、Ruby、Node.js、C++、Scala、JavaScript 等。

三、方案选择:如何实现 MySQL → MongoDB 的数据同步?

实现 MySQL 到 MongoDB 的数据同步的常见方式包括,手动构建数据管道或使用自动化工具:

手动构建数据管道

例如编写 Python 脚本来处理数据的提取、转换和加载(ETL)。这里可以借助 Apache Airflow 等工具来调度和管理这些任务。然而,这种手动方法需要开发者具备深厚的编程和数据工程知识,通常需要花费一周甚至更长时间来完成整个开发流程。此外,手动构建的数据管道需要持续的维护和监控,以确保数据的准确性和实时性。

自动化工具

例如选择使用 TapData 这样的自动化数据集成平台,只需三步就可以在几分钟内开启所需的数据同步任务:

  • 将 MySQL 设置为源连接
  • 将 MongoDB 设置为目标连接
  • 定义要传输的数据以及传输频率

TapData 内置 100+ 数据连接器,提供了友好的用户界面和强大的实时同步功能,无需编写复杂的代码即可轻松实现数据的迁移和同步。这样不仅节省了大量的时间和人力成本,还能保障数据同步过程的稳定性和可靠性。对于那些希望快速、高效地完成 MySQL 到 MongoDB 数据同步的企业和开发者来说,这样的便捷工具无疑是一个理想的选择。

四、TapData 高效同步完整教程

完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加源与目标的数据连接(支持版本:MySQL 5.0、5.1、5.5、5.6、5.7、8.x;MongoDB 3.4、3.6、4.0+),并快速构建数据管道。(*涉及工具版本为 TapData 本地部署版)

① 准备工作(作为源库)

数据源:MySQL

为保障任务的顺利执行,您需要为 MySQL 数据库开启 Binlog(可实现增量数据同步),然后为数据复制/开发任务创建一个数据库账号。

  1. 登录 MySQL 数据库,执行下述格式的命令,创建用于数据同步/开发任务的账号。
  • MySQL 5.x
  • MySQL 8.x
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:用户名。
  • password:密码。
  • host:允许该账号登录的主机,百分号(%)表示允许任意主机。

示例:创建一个名为 tapdata 的账号。

CREATE USER 'tapdata'@'%' IDENTIFIED BY 'Tap@123456';
  1. 为刚创建的账号授予权限,简易示例如下,推荐基于业务需求设置更精细化的权限控制。
  • 授予指定库权限
  • 授予所有库权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'username' IDENTIFIED BY 'password';
GRANT SELECT ON database_name.* TO 'username' IDENTIFIED BY 'password';
  • database_name:要授予权限的数据库名称。
  • username:用户名。
  • password:密码。
  1. 为保障读取 MySQL 数据库的增量数据,您需要跟随下述步骤开启 Binlog。
    a.使用 vim 命令,修改 $MYSQL_HOME/mysql.cnf 中的配置,例如:
server_id         = 223344
log_bin           = mysql-bin
expire_logs_days  = 1
binlog_format     = row
binlog_row_image  = full
  • server_id:对于 MySQL 中的每个服务器和复制客户端必须是唯一的,设置为大于 0 的整数
  • log_bin:Binlog 序列文件的基本名称
  • expire_logs_days:二进制日志文件保留的天数,到期自动删除
  • binlog_format:设置为 row
  • binlog_row_image:设置为 full

修改完成后,执行下述命令重启 MySQL 进程。

/etc/inint.d/mysqld restart

(可选)登录 MySQL 数据库,执行下述命令确认配置已生效,即输出的结果中,format 的值为 ROW

SHOW VARIABLES LIKE 'binlog_format';

输出示例如下:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

数据目标:MongoDB

基本配置

  • 目标端 MongoDB 支持副本集和分片集群。
  • 如果您的目标端 MongoDB 只有一个节点,您可以将其配置为单成员的复制集,以开启 oplog 功能。
  • 确保为目标 MongoDB 配置了足够的资源来处理源数据库的工作负载。

账户权限
如果目标 MongoDB 启用了安全身份验证,则 Tapdata 使用的用户帐户必须具有以下角色 / 权限:

  • clusterMonitor(数据验证功能需要使用)
  • readWrite(作为目标数据库需要拥有的角色) 要创建具有以上权限的用户,您可以参考以下示例:
use admin
db.createUser({"user" : "johndoe","pwd"  : "my_password","roles" : [{"role" : "clusterMonitor","db" : "admin"},{"role" : "readWrite","db" : "my_db"},{"role" : "read","db" : "local"}]
}

*注意:只有 MongoDB 版本 3.2 需要 local 数据库的读取权限。

② 创建 MySQL 的连接

  1. 进入 TapData 控制台,在左侧导航栏,单击连接管理
  2. 单击页面右侧的创建,在弹框中,搜索并选择 MySQL。
  3. 在跳转到的页面,根据下述说明填写 MySQL 连接信息:
    在这里插入图片描述
  • 连接信息设置
    • 连接名称:填写具有业务意义的独有名称。
    • 连接类型:支持将 MySQL 作为源或目标库。
    • 地址:数据库连接地址。
    • 端口:数据库的服务端口。
    • 数据库:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
    • 账号:数据库的账号。
    • 密码:数据库账号对应的密码。
  • 高级设置
    • 连接参数:额外的连接参数,默认为空。
    • 时区:默认为数据库所用的时区,您也可以根据业务需求手动指定。 如果源库为默认数据库时区(+8:00),目标端数据库为指定时区+0:00,那么假设源端数据库存储的时间为 2020-01-01 16:00:00,目标端数据库存储的时间则为 2020-01-01 08:00:00
    • 共享挖掘:挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
    • 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
    • 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
    • Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
    • 模型加载频率:数据源中模型数量大于 1 万时,TapData 将按照设置的时间定期刷新模型。
  • SSL 设置:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 CA 文件、客户端证书、客户端密钥文件等,相关文件已在开启 SSL 连接中获取。
  1. 单击连接测试,测试通过后单击保存
    在这里插入图片描述*提示:如提示连接测试失败,请根据页面提示进行修复。

③ 创建 MongoDB 的连接

1.参照 MySQL 连接创建流程,完成 MongoDB 连接配置信息填写,添加数据目标:
在这里插入图片描述
2. 测试 MongoDB 的连接:
在这里插入图片描述④ 创建数据复制/开发任务

1.左侧导航栏点击数据复制,并点击右侧创建:
在这里插入图片描述
2.进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标
在这里插入图片描述
3.单击源与目标节点,即可按需对二者进行设置:
在这里插入图片描述4. 保存任务
在这里插入图片描述⑤ 任务启动与监控

  1. 启动任务,任务全量同步正常运行:
    在这里插入图片描述2. 增量同步开启
    在这里插入图片描述以上,便是借助 TapData 快速实现数据库 MySQL 到 MongoDB 的全、增量同步的模拟教程。

后续,我们还将持续输出本专题内容,欢迎关注 TapData 官方公众号,了解更多。

↓↓ 点击文末「阅读原文」,开启高质量同步之旅

推荐阅读】:

  • 制造业数字化转型创新思路 |《数智新时代制造业数字化创新实践白皮书》上线!
  • TapData 信创数据源 | 国产信创数据库 OceanBase数据同步指南,加速国产化进程,推进自主创新建设
  • TapData 信创数据源 | 国产信创数据库 TiDB数据迁移指南,加速国产化进程,推进自主创新建设
  • TapData 信创数据源 |国产信创数据库达梦(Dameng)数据迁移指南,加速国产化进程,推进自主创新建设
  • ETL vs. ELT:数据集成的最佳实践是什么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534695.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

OCR2.0--General OCR Theory

引领光学字符识别(OCR)的新篇章 引言:OCR技术进化的必要性 光学字符识别(OCR)是一项广泛应用的技术,它能够从图像中提取字符并将其转换为可编辑格式。虽然OCR-1.0在过去取得了广泛应用,但传统…

水滴式多功能粉碎机:粉碎中草药的好帮手

水滴式中草药粉碎机,顾名思义,其设计灵感源自自然界中水滴的柔和与力量。它摒弃了传统粉碎机粗犷的粉碎方式,采用低速研磨技术,模拟水滴穿透岩石的细腻与持久,对中草药进行温和而深入的粉碎。这种技术不仅保留了药材中…

Redis集群_cluster

cluster集群 cluster翻译就是集群,所以cluster集群也叫做redis集群相比于哨兵模式,cluster集群能支持扩容,并且无需额外的节点来监控状态,所以使用这种模式集群的系统会用的更多些redis cluster采用的是去中心化网络拓扑架构&…

2024.9.14(RC和RS)

一、replicationcontroller (RC) 1、更改镜像站 [rootk8s-master ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io",&…

探索UWB技术的独特优势:实现高精度定位

UWB定位技术是一种利用无线信号进行精确位置定位的技术,它利用超宽带无线电信号通过测量信号的到达时间、相位差和信号能量等参数来确定物体的精确位置。 UWB定位技术具有多种优势,首先,它具有较高的定位精度,可实现毫米级的精确…

哈工大“计算机设计与实践”(cpu)处理器实验设计报告

哈工大“计算机设计与实践”(cpu)处理器实验设计报告 【哈工大“计算机设计与实践”(cpu)处理器实验设计报告】 在计算机科学领域,CPU(中央处理器)是计算机系统的核心部件,负责执行指…

性能诊断的方法(四):自下而上的资源诊断方法和发散的异常信息诊断方法

关于性能诊断的方法,我们可以按照“问题现象—直接原因—问题根源”这样一个思路去归纳。我们先从问题的现象去入手,包括时间的分析、资源的分析和异常信息的分析。接下来再去分析产生问题现象的直接原因是什么,这里我们归纳了自上而下的资源…

C语言 13 指针

指针可以说是整个 C 语言中最难以理解的部分了。 什么是指针 还记得在前面谈到的通过函数交换两个变量的值吗&#xff1f; #include <stdio.h>void swap(int, int);int main() {int a 10, b 20;swap(a, b);printf("a %d, b %d", a, b); }void swap(int …

Python编码系列—Python建造者模式:构建复杂对象的优雅之道

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

传知代码-融合经典与创新的图像分类新途径

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 在当前的深度学习领域&#xff0c;构建兼具高性能与灵活性的卷积神经网络&#xff08;CNN&#xff09;已成为计算机视觉研究的核心课题。本文介绍了一种全新的卷积神经网络架构&#xff0c;该网络巧妙地结合…

OZON电子产品大幅增长,OZON跨境PS5销量激增

Top1 存储卡 Карта памяти Canvas Select Plus 128 ГБ 商品id&#xff1a;1548303593 月销量&#xff1a;2131 欢迎各位卖家朋友点击这里&#xff1a; &#x1f449; D。DDqbt。COm/74rD 免费体验 随着智能手机和平板电脑的普及&#xff0c;用户对于存储空…

vite + vue3 + ts 移动端开箱即用现代开发模板

中文 | English SouthernWind https://blog.csdn.net/nanchen_J?typeblog sw-template vite vue3 ts 移动端开箱即用现代开发模板 特点 &#x1f436; Vite 的Vue3 的文件路由布局系统Mock 后续支持Api 自动引入组件自动引入VueUse 支持TypeScript 的Tailwind css 的暗…

Gitlab实现多项目触发式自动CICD

工作中可能会遇到这种场景&#xff0c;存在上游项目A和下游项目B&#xff0c;项目B的功能依赖项目A&#xff08;比如B负责日志解析&#xff0c;A是日志描述语言代码&#xff09;&#xff0c;这种相互依赖的项目更新流程一般如下&#xff1a; A项目更新&#xff0c;通知B项目开发…

好用的电脑监控软件推荐!分享六个企业必备的电脑监控软件,赶紧Get吧!

数字化办公日益普及&#xff0c;由于工作的需要&#xff0c;几乎每个员工都有自己的电脑&#xff0c;并且大多数电脑都接入了互联网。 这使得电脑监控软件&#xff0c;变为企业管理中必不可少的一部分&#xff01;它们不仅能够帮助管理者实时了解员工的工作状态&#xff0c;提…

充电宝什么品牌比较好用?2024年最值得推荐充电宝品牌!

近年来&#xff0c;随着电子设备使用需求的增加&#xff0c;充电宝市场呈现出蓬勃发展的态势。优秀的充电宝产品不仅能够提供稳定的充电速度&#xff0c;还具备方便携带的体验&#xff0c;深受用户喜爱。然而&#xff0c;面对市场上众多品牌和型号的选择&#xff0c;如何找到最…

Linux云计算 |【第二阶段】SHELL-DAY5

主要内容&#xff1a; awk命令、内置变量&#xff08;FS、$0、$1、$2、NF、NR&#xff09;、过滤时机&#xff08;BEGIN{}、{}、END{}&#xff09;、处理条件&#xff08;正则、&&、||、~\!~、等&#xff09;、awk数组、监控脚本、安全检测脚本 一、awk介绍 awk 是一…

基于微信平台的旅游出行必备商城小程序+ssm(lw+演示+源码+运行)

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

影视直冲?对接卡券特权充值接口对于用户来说有什么优势?

对用户来说有哪些优势&#xff1a; 便利性&#xff1a;用户可以直接在应用程序或网站上充值和使用卡券&#xff0c;无需通过多个平台或渠道&#xff0c;提高了用户体验。实时性&#xff1a;卡券充值和使用状态可以实时更新&#xff0c;用户可以立即看到余额变化和卡券状态。安…

移动硬盘无法读取?别慌!这些方法助你恢复数据!

在我们的日常工作和生活中&#xff0c;移动硬盘作为重要的数据存储工具&#xff0c;承载着珍贵资料。然而&#xff0c;移动硬盘无法被电脑读取的情况时有发生&#xff0c;令人焦急。别慌&#xff0c;下面为大家详细介绍恢复移动硬盘数据的有效方法。 一、检查硬件连接和驱动问题…

麒麟桌面操作系统:查看最近安装与卸载的软件包

麒麟桌面操作系统&#xff1a;查看最近安装与卸载的软件包 1、查看最近安装的deb包2、查看最近卸载的deb包 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在麒麟桌面操作系统中&#xff0c;快速查看最近安装与卸载的软件包非常简单。这里有…