如何将 PolarDB-X 与大数据等系统互通|学习笔记(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 快速学习如何将 PolarDB-X 与大数据等系统互通

开发者学堂课程【如何将PolarDB-X与大数据等系统互通如何将 PolarDB-X 与大数据等系统互通】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/984/detail/14937


如何将 PolarDB-X 与大数据等系统互通


原来的那个 client example 里面有个 print column 这样的一个方法,它只是把它打到控制台上,到这里就完了。那我这边就追加了一段同时生成一个 insert into accounts,然后往里面加增量的数据,写到那Kinkhouse 就是这段投递的一个代码。那么现在回到刚才那个上面来看一下,现在 PolarDB-X  有没有正常的运行,那如果它正常运行,我现在通过本地的8527这个端口,用  root 这个账号,密码也是123456就可以连上它了,可以看到已经正常的点到了 PolarDB-X 里面,来看一下系统当前的一个状态,来建一个本次测试时候需要的一个库,就转账测试所需要的一个库,建这样的一个库,我来看一下当前 Binlog 的一个状态,可以看到刚才这个 Binlog 已经建库并记录到全体Binlog 里面,而且格式是跟SQL的那个格式是一样的。抛弃一个  PolarDB-X  ,那么接下来其中一个server,那个 server 直接连接到这个 PolarDB-X 上,server使用官方提供一个 Run ,它做了一个简单的封装,可以看到在这里会传进去一堆的参数,这些参数本身都是所需要的。这里面关键的一个点,第一个是要指定PolarDB-X ,这里就是8527端口,那就账号 PolarDB-X ,密码是123456,不过正常再过一会这个clinicnk server 就会正常的连接到 PolarDB-X ,开始消费它的一个增量的日志,可以登到这个容器里面来看一下,这个里面应该是好了,那就再建立一个 Kinkhouse ,回去那个页面上就是给 Copy 过来了,唯一的增加的一个地方就是做了一个端口的映射,它容器里面8123这个端口映射到主机上,这样做的原因是一会要将这个远程的 ecs 端口在映射到本地,以方便就是本地的那段投递的代码能够正常的把这些变更或者投递到 Kinkhouse 里面。这个时候就在远程的服务器上的三个容器就准备完成了,第一个是PolarDB-X  ,第二个是clinicnk server,第三个就是 Kinkhouse 。现在需要再做另外一件事情就是将这三个服务它们的端口映射到我的本地的电脑上,看这个端口的映射其实也比较简单,可以用一个ssh,ssh提供一个命令,它在正常登录之后加一个参数就是大写的l变量参数,那它前面一段的意思就是 listen 本机的一个IP和端口,然后后面这段的意思就是把收到的来自于本机的连接到8527端口的所有流量全部无脑的转发到远程那个机器827单子上面,这样也就达到了端口转发的两个目的,那现在需要转发两个端口,第一个是 canal server ,第二个是 pink house ,本地那个 client 这个例子就可以跑起来了,那 clever server 默认的端口是11111,那第二个需要把 Kinkhouse  映射过来, Kinkhouse  默认的是8123,那也来做一下。这样我就将远程的两个服务就是 clever server 和Kinkhouse 两个端口,一个是11111,一个是8123,映射到了本机的端口,可以简单来看一下,那现在这个里面连接的是本地的那个点,来看一下本地所建立的端口,先看一下11111有没有存在,很明显是存在的,然后看一下第二个8123,它也是存在的。接下来尝试跑一下 Canal client 的代码,然后在“52”这个位置打一个断看能不能正常的去发消息。因为现在 PolarDB-X 里边,也就是最远端,它其实是没有变更的,或者说只有一些系统心跳的消息,所以它其实不应该走到这一步,但是它居然完成了,那这就是心跳消息。再进一步到里面去看一下,也就说它走到这里,如果它是一些 dl 的变更 insert、delete、update的时候,它才会走到所需要的这个代码,如果不是它应该不会走到这边,反之就会结束了。

最终是需要它在 print 的时候把它写到一边,就是目前理论上它能从 messenger 拿到消息,意味着已经成功的拿到了clever server  那边的增量的消息,也就意味着clever server 已经成功的跟上游的 PolarDB-X 进行了一个增量的订阅,然后把这两个断点取消掉,那这个时候数据已经从PolarDB-X 到了 canal server ,然后再到了 canal client ,那接下来需要在原端,也就是PolarDB-X 那端来开始转账测试,产生一些dl的一些数据,那期望这段代码能够把这些变更投递到下游的 Kinkhouse 里面,在投递之前需要在 Kinkhouse 里面去建对应的一张表,因为这个这个容器是新建的,所以这里面既没有库,也没有表,所以如果现在直接投递会产生报错的结果,在建立的时候也是用了官方的一个一键连接到已有的容器里面的命令,连接到 Kinkhouse 容器里面的命令,这个就相当于执行一下 MySQL ,直接连接到了一个对应的 MySQL ,那这里就相当于获取到了一个连接到 Kinkhouse 一个终端,那这个连的是刚才启动Kinkhouse 的容器,来看一下它里面目前库的情况,这里面是没有想要叫做  test  这样的一个库,所以先来建立一下,之后再建立一下需要的表,反正测试的表结构还是比较简单的,所以它名字叫 accounts ,它里面有两列,一个叫ID也就是用户的,第二个是它账户余额 balance ,也就是说现在系统里面有一批人,他们现在账户余额是多少钱,就会记录这么个信息,之后系统会开启这些人之间的相互转账,你这边扣100,那他那边加100,这样一个过程。那可以看到Kinkhouse里面建表与 MySQL 基本一致,就是在最后制定一些额外的东西可能不太一样。

现在这张表已经完成了,看一下那显然是空的,这个符合预期,再来看一下远端也就是 PolarDB-X ,现在 test 这个库里面是没有表的,接下来启动转账测试,我把它放在另外一个工程里面,这个是平时用来测试的一个代码,可以看到它连的确实是电脑上的127上面的一个827端口,因为用 ssh 做了一个端口映射,所以才会连接到 ecs 的那边,并且账号和密码都是正确的,现在来启动,那个转账测试启动之后会在 PolarDB-X  或者 ecs里面建一张表。我这边端口映射还没做,我需要把远程的 PolarDB-X ,也就是它8527端口也映射到本地的电脑上,那再来跑一下转账测试,可以看到转账测试已经正常的在运行,然后来看一下PolarDB-X,这张表已经有了,那里面也有100个账户,这账户余额都是以前的,但是现在已经有些变化了,说明它们的转账已经在进行了,那同时刚才  Canal client 的那这个代码,它的断点已经成功运行到了即将写的 Kinkhouse 的那段代码,也就是说已经成功的获取到了这些dl的变更。执行第一条的已经成功,也就是说此应该在 Kinkhouse 里面看到了一条数据,现在打开的终端是那个Kinkhouse 一个命名窗口,这时候再来执行一下看一下有一条数据。

下面将这里的断点取消,让它是这些增量实施的一个同步,可以看到它在不停的 insert ,这个时候再来看一下最下游的 Kinkhouse ,那它里面已经有385条的,为什么会比 PolarDB-X 那边多?因为可以看到这里面有 ID 重复的情况,因为那边在代码处理 update 的时候把它转换成了 insert ,所以这边会往下游插入重复的数据,同步的数据因为没有走去重,所以其实是个追加的过程。

这样就会有这样一个现象,但没关系,这次的重点是已经成功的搭建起了一条同步的链路,这个链路最上游是 PolarDB-X ,那它的中间层是 clinicnk server ,再往下有一个Canal client 消费的clinicnk server里面的数据,最后 Canal client  这个代码的数据投递到了最下游的 Kinkhouse ,现在已经成功的搭建这样的一个的链路,那这里想强调几个点,第一个 PolarDB-X 提供了一个全局的一个 Binlog ,那这个功能是跟 MySQL 保持了一个完全的兼容,像 Canal 这样的一个工具,因为 Canal 是用来订阅 SQL Binlog的,那把它拿过来无脑的接到了  PolarDB-X 上,然后成功地取到了增量,说明 PolarDB-X  的 Binlog 跟 MySQL 的 Binlog 确实有一个很好的兼容性。

那在接下来获取到了增量之后,能够更了解其他的按照格式去解析,接着把增长数据也能投给下游,所以也就是说当原有的一些系统切换PolarDB-X  之后,你原有的是通过那个 Binlog 获取增量的,所有的下游的系统不需要做修改,还是可以正常的在运行,这样可以极大的降低去做系统切换时候的一些成本,这是第一个例子。

那现在就把这些东西全部停掉,一个是先把转账测试给剪掉。可以看到此时这个代码也停掉了,这个就是第一个例子。回到PPT,那在演示第二个例子之前,也就是将MySQL作为 PolarDB-X 的一个这样的一个例子。

image.png

先把环境清理一下,PolarDB-X 还用刚才那个,可以看到现在就剩一个容器,这个容器就是 PolarDB-X ,接下来将容器里面的数据清一下,那回到初始的状态,就是这个时候系统里面有一个库,里面的没有表的。

接下来建一个 MySQL 的容器,它也是直接用了官方提供的一个形象,我跑了 MySQL 容器,它的名字叫 MySQL ,然后root密码设了123456,然后做端口映射,这样容器里面3306映射到了我的那个 ecs 上面,这样就是在远程的 ecs 上面,我就跑了两个容器,一个容器是 PolarDB-X ,第二个容器是 MySQL , PolarDB-X 的是8527这个端口, MySQL 是3306,那么接下来就是将这个MySQL通过指令连接到PolarDB-X上,昨天连接到 MySQL上面的,可以看到连的是330端口,账号用的是root,密码用123456。首先来看一下里面是不是空的?需要建一个数据库,这样就上游 PolarDB-X 保持对齐了,那表就不建了,直接把它同步过来。接下来用这个自带的指令,就是打起一个同步链路的指令,它会有几个参数,第一个是指定 master host ,第二个参数是 master port,第三个参数是 master user,用来做同步的账号,最后才会让你指定说你从哪个Binlog文件开始,来看一下目前 PolarDB-X上有哪些Binlog文件,目前还是一个Binlog文件,直接无脑复制过来。最后就是要指定从这个Binlog文件的那个位置开始消费。然后来看一下,可以看到这个因为 PolarDB-X里面目前没变更,但是这个位点却一直在增加,为什么呢?

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
6月前
|
关系型数据库 MySQL Serverless
高顿教育:大数据抽数分析业务引入polardb mysql serverless
高顿教育通过使用polardb serverless形态进行数据汇总,然后统一进行数据同步到数仓,业务有明显高低峰期,灵活的弹性伸缩能力,大大降低了客户使用成本。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之大数据量的实时分析查询挑战如何解决
PolarDB 并行查询问题之大数据量的实时分析查询挑战如何解决
34 2
|
3月前
|
存储 关系型数据库 大数据
PolarDB 大数据处理能力及其应用场景
【8月更文第27天】随着数据量的爆炸性增长,传统的数据库系统面临着存储和处理大规模数据集的挑战。阿里云的 PolarDB 是一种兼容 MySQL、PostgreSQL 和高度可扩展的关系型数据库服务,它通过其独特的架构设计,能够有效地支持海量数据的存储和查询需求。
92 0
|
4月前
|
SQL 弹性计算 关系型数据库
PolarDB产品使用问题之如何和ECS实例实现内网互通
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
303 2
|
6月前
|
关系型数据库 分布式数据库 数据处理
【PolarDB 开源】PolarDB 在大数据分析中的应用:海量数据处理方案
【5月更文挑战第25天】PolarDB是解决大数据挑战的关键技术,以其高性能和可扩展性处理大规模数据。通过与数据采集和分析工具集成,构建高效数据生态系统。示例代码显示了PolarDB如何用于查询海量数据。优化策略包括数据分区、索引、压缩和分布式部署,广泛应用于电商、金融等领域,助力企业进行精准分析和决策。随着大数据技术进步,PolarDB将继续发挥关键作用,创造更多价值。
236 0
|
6月前
|
弹性计算 容灾 关系型数据库
ECS互通问题之与polarDB内网互通如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
存储 关系型数据库 MySQL
PolarDB-X 存储引擎核心技术 | Lizard分布式事务系统
关系型数据库作为支撑企业级数据的在线存储方案,发挥了无可替代的作用。随着海量数据的增长,以及面对创新业务爆发性增长的场景,如何能够快速,业务无损的进行在线数据库扩容,对数据库的架构提出了巨大的挑战,除此以外,企业的精细化经营,也要求数据库能够一站式提供事务处理能力和数据分析能力,为了应对这些挑战,分布式数据库应运而生。
|
SQL canal 关系型数据库
如何将 PolarDB-X 与大数据等系统互通
本场景带您体验如何将PolarDB-X通过Canal与ClickHouse进行互通。
|
存储 关系型数据库 物联网
大数据数据存储的数据库的非关系型数据库之InfluxDB
大数据时代,传统的关系型数据库已经不能满足海量数据存储和管理的需求。因此,非关系型数据库(NoSQL)应运而生,其中InfluxDB便是备受关注的一种。
449 0

热门文章

最新文章