草庐IT

腾讯云数据库TDSQL-多源同步初体验

qq_25234357 2023-04-29 原文

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

​​​​​​​​​​​​​​

目录

前言

一、多源同步是什么?

二、多源同步的架构

三、使用步骤

1.多源同步之初见

2.TDSQL同步功能初体验

总结



前言

      随着5G时代的快速发展,企业的组织架构越来越复杂,业务系统越来越多。各种业务系统之间彼此独立,形成了企业信息化建设中的烟囱。解决各系统数据和功能的烟囱壁垒,实现资源复用和共享,实现数据的融合融通,Devops快速迭代,已成为业务发展的必然趋势。在数据库日常维护工作中,数据库升级,数据库替换,数据库迁移都需要用到数据同步功能。腾讯云数据库TDSQL多源同步功能可以很好的解决各业务系统,各数据库之间的数据同步问题。本文简单分享一下本人对于腾讯云数据库TDSQL多源同步功能的使用感受,希望该功能可以越做越好,助力国产数据库的发展。

一、多源同步是什么?

    根据腾讯官方文档描述:多源同步模块是腾讯云所开发的高性能,高一致,支持多种异构数据平台的数据分发服务。该服务支持以 TDSQL 作为源端的数据实时同步分发至MySQL,ORACLE, POSTGRES,KAFKA 等平台,同时也支持 MySQL 或者 ORACLE 的数据实时同 步至 TDSQL 中,并且部署灵活,支持一对多,多对一等多种复制拓扑结构。当前该服务的官网名称为“数据同步”,是作为一个子功能集成在腾讯云 TencentDB for TDSQL 产品中。

二、多源同步的架构

     以下截图来自腾讯多源同步官方文档,用于帮助理解多源同步功能

     使用多源同步功能需要安装kafka组件和consumer组件,onsumer安装成功后可以看到如下两个进程:

三、使用步骤

1.多源同步之初见

      登录腾讯TDSQL赤兔管理平台,左侧菜单选择数据同步-多源同步,可以看到创建【TDSQL同步】,创建【其他数据库同步】两个同步功能,如下图:

点击创建【TDSQL同步】显示如下同步界面:

      该界面提供源TDSQL集群和实例的选择,目标TDSQL集群和实例的选择,可见【TDSQL同步】可以提供的功能是TDSQL集群内部不同实例之间的数据同步,TDSQL不同集群不同实例之间的数据同步。

 点击创建【其他数据库同步】显示如下同步界面:

      该界面提供源TDSQL集群和实例的选择,目标实例的选择。目标实例可以选择自建MySQL,PostgreSQL,ORACLE,Ckafka.可见【TDSQL同步】可以提供的功能是TDSQL集群实例到MySQL,PostgreSQL,ORACLE,Ckafka四种类型数据库的数据同步。

        在TDSQL赤兔管理平台并没有看到MySQL,PostgreSQL,ORACLE到TDSQL实例的数据同步功能,不知道是否是因为本人拿到的版本是测试版,所以未提供该功能。业务如果想要使用TDSQL数据库,MySQL,PostgreSQL,ORACLE到TDSQL实例的数据同步应该首先是最需要的功能。希望后期可以尽快体验到多源同步MySQL,PostgreSQL,ORACLE到TDSQL实例的数据同步功能。

2.TDSQL同步功能初体验

     为了测试TDSQL同步功能,本人创建了一个分布式实例作为目标库,监控库作为源库。TDSQL同步任务初始化界面配置如下:


       点击下一步,进入选择库列表界面,这里可以看到全量匹配,精确匹配,正则匹配三个功能。初次测试,打算只同步一张表,所以选择了精确匹配。数据匹配库这里的格式需要特别注意,为了处理一些库表名包含特殊字符的场景,这里的库表名都需要使用“ ` ”飘号包括在内。

  插入之前在非分布式实例监控库创建test数据库,并创建test1表,插入一条数据,用于同步测试

[root@tdsql01 tdsql_install]# mysql -h192.168.92.132 -uhanlon -p123456 -P15001
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 200990
Server version: 5.7.35-V2.0R681D005-v17-20210125-2105-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| sys                 |
| sysdb               |
| tdsqlpcloud         |
| tdsqlpcloud_monitor |
+---------------------+
7 rows in set (0.12 sec)

MySQL [(none)]> create database test;
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> use test
Database changed


MySQL [test]> insert into test1 values(1,'test1');
Query OK, 1 row affected (0.13 sec)

MySQL [test]> 

 这里我按照习惯输入表名,没有使用“ ` ”飘号包括在内,填写完毕,鼠标离开编辑窗口后,系统自动在使用“ ` ”飘号库名和表名包括在内,这个功能非常智能,人性化,可以有效避免人为疏漏。

 点击下一步:

点击开始创建

提示同步库为空,请点击预览,点击确认,点击上一步,点击数据匹配库下面的预览

没有看到异常信息,初步猜测是因为目标实例没有创建test库,于是在目标实例创建test库

[root@tdsql01 tdsql_install]# mysql -h192.168.92.132 -uadmin -p123456 -P15002
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4194305
Server version: 8.0.22-v18-txsql-2.0.1-V2.0R692D001-20210623-1106 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| sysdb              |
+--------------------+
5 rows in set (0.66 sec)

MySQL [(none)]> create database test;
Query OK, 1 row affected (0.25 sec)

MySQL [(none)]> use test;
Database changed
MySQL [test]> show tables;
Empty set (0.00 sec)

MySQL [test]> 

 再次点击下一步,点击开始创建,显示如下界面

 可见确实是因为目标库不存在,导致报错。该同步功能不会自动在目标实例创建目标库。个人认为该功能还存在优化空间,建议对该功能可以进一步优化:

1.目标库不存在时系统自动创建目标库

2.目标库不存在时系统报错:目标库不存在,而不是同步库不存在。报错信息更加清晰明了,便于使用人员傻瓜式使用,而不是去猜测同步库不存在的具体含义。

 点击开始创建后点击立即开启,无法开启同步任务,错误描述显示初始化,根据该错误描述无法判断错误原因。点击关闭该界面,显示如下:

系统产生了一条任务状态为停止的同步任务,同步状态为异常,依然看不到异常的原因。查看消费者进程,发现多了一条binlogconsumer进程,说明同步任务进程已经创建,只是因为某种原因没有正常执行。

因本次测试使用的源实例是系统使用的监控库,怀疑是不是系统使用的数据库不能作为源库。后期计划创建新的非分布式实例,再次测试,测试结果将持续更新

总结

1.根据腾讯官方文档说明多源同步可以支持非TDSQL数据库到TDSQL的数据同步,但是实际使用TDSQL的多源同步功能发现并没有非TDSQL到TDSQL的同步功能,不知道是否因为版本限制,建议官方文档做进一步说明。

2.选择库列表输入数据匹配库的时候,库名和表名需要使用“ ` ”飘号包括在内,在没有使用“ ` ”飘号包括在内的情况下,系统会自动增加“ ` ”飘号将库名和表名包括在内,该功能非常智能,非常人性化,可以有效避免人为输入错误。

3.目标库不存在的情况下提示同步库不存在,报错信息不够清晰明了,建议

(1).目标库不存在时系统自动创建目标库

(2).目标库不存在时系统报错:目标库不存在,而不是同步库不存在。报错信息更加清晰明了,便于使用人员傻瓜式使用,而不是去猜测同步库不存在的具体含义。

4.使用监控库作为源库创建同步任务,点击开始创建后点击立即开启,无法开启同步任务,错误描述显示初始化,根据该错误描述无法判断错误原因。同步任务状态显示停止,同步状态显示异常,建议该功能可以做进一步优化,系统自动判断同步异常原因,并给出用户明确的提示,以便用户进一步的操作。

有关腾讯云数据库TDSQL-多源同步初体验的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  3. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  7. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  8. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  9. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  10. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

随机推荐