canal mysql 集群,Canal Admin 搭建 Canal 集群以及体验

Canal 是阿里巴巴开源的一套分布式数据库同步系统,目前主要支持 MySQL、RDS。Canal 的主要原理是伪装成 MySQL 的 Slave 节点,监听 MySQL 主库的 binlog 文件,根据 binglog 将数据库事件发送到 MQ 中,消费端可以订阅 MQ 中的消息。为了方便 Canal 的运维人员,阿里还提供了 Canal Admin 这个运维平台,使用户可以快速和安全的操作。

准备环境

Canal Admin 的使用需要依赖 MySQL、Canal 、Zookeeper 这三个服务,在使用 Canal Admin 之前我已经体验过单机节点的搭建,这里列一下三个服务使用的版本:

MySQL 5.6

Canal 1.1.4

Zookeeper 3.4.10

为了更加方便的了解 Canal Admin 的作用,下面根据理解画了一下整体的架构图,根据架构图可以帮助我们理解整个系统运行的逻辑,出现问题也更加方便排查。

8087ace521b0710185663a8633dcfc50.png

部署 Canal Admin

Canal Admin 是跟随着 Canal 一起发布的,可以去 Canal 的 Release 模块下面下载对应版本的 Canal Admin,我这里下载的是”canal.admin-1.1.4.tar.gz“。

配置 application.xml

当压缩包下来之后进行加压缩,比较重要的配置 conf 目录下面的 application.yml 文件,里面涉及到 Canal Admin 的数据库连接配置以及管理员信息。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23server:

port: 8089

spring:

jackson:

date-format: yyyy-MM-dd HH:mm:ss

time-zone: GMT+8

spring.datasource:

address: 127.0.0.1:3306

database: canal_manager

username: root

password: root

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false

hikari:

maximum-pool-size: 30

minimum-idle: 1

canal:

adminUser: admin

adminPasswd: 123456

初始化 MySQL

因为 Canal Admin 是一个管理系统,需要使用数据库存放配置信息,只用在 MySQL 中执行 Canal Admin 提供的数据库初始化文件即可,该文件在“conf/canal_manager.sql”路径下面。

新建集群

上面的 Canal Admin 配置好了之后直接根据“/bin/startup.sh”启动 Canal Admin 即可,在浏览器上面输入”ip:8089”即可进入到管理页面,如果使用的默认的配置信息,用户名入”admin”,密码输入”123456”即可访问首页。

进入到首页点击集群的菜单栏,然后选择新建集群。

a6ec84aa47bdddf7787a3f4e4049c809.png

在里面输入集群的名称以及 Zookeeper 即可,这里的集群目前还没有任务节点,后续通过配置 Canal Server 的自动注册功能,便可以查看该集群下面拥有的节点。

启动 Canal Server

因为这里使用 Canal Admin 部署集群,所以 Canal Server 节点只需要关注 manager 相关的信息即可,具体的任务信息后续都通过 Canal Admin 下发,这一点与单机部署区别很大。

在 Canal 的配置目录下,有两个 canal 前缀的配置项,其中一个文件名是”canal_local.properties”,这是 Canal Admin 官网介绍的集群部署需要修改的配置文件,里面的配置信息相比”canal.properties”要少很多,多余的信息在集群模式下都由 Canal Admin 管理。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22# register ip

canal.register.ip = 10.37.129.3

# canal admin config

canal.admin.manager = 10.37.129.3:8089

canal.admin.port = 11110

canal.admin.user = admin

canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

# admin auto register

canal.admin.register.auto = true

canal.admin.register.cluster = xxx_cluster

上面配置信息中有几个地方要注意一下,这里简短介绍一下。第一个是”canal.register.ip”,这个配置用来指定当前 Canal Server 的 IP 信息,如果主机是多网卡,可以避免 IP 信息错乱的问题。第二个是”canal.admin.passwd”,这里的密码就是之前配置 Canal Admin 里面配置的管理员密码,只不过这里并不是明文展示,使用 MySQL 的”select password(“123456”)”语句查询处理过的密码,注意查询结果前面的”*”要去掉。第三个是”canal.admin.register.auto”,这里是自动注册的意思,如果没有配置,Canal Server 启动后需要自行在 Canal Admin 上面添加。第四个是”canal.admin.register.cluster”,这个配置如果不写代表当前的 Canal Server 是一个单机节点,如果添加的名字在 Canal Admin 上面没有提前注册,Canal Server 启动时会报错。

如果你的集群需要部署多个 Canal Server,将上面的配置复制到另外几台机器上面,主要别忘记修改 IP 信息,配置好所有的节点之后启动即可,这些节点会自动注册到 Canal Admin。

配置 Canal Server

通过上面的操作之后所有的 Canal Server 便可以在 Canal Admin 上面看到,接着可以通过 UI 界面配置 Canal Server。

103b1aec6c56e0e1a819998d4e652cac.png

从上面的截图可以看到两个节点都归属于同一个集群,如果我们点击单个节点编辑配置,Admin 会提示我们集群模式下不允许修改单个节点的配置,需要在集群下面修改配置。

11069bea4196b38164d8b8fd490987d2.png

下面通过集群管理页面修改 Canal Server 的配置,主要是添加 Canal Server 需要对接的 MQ。一开始进入的时候是空白的,我们可以选择载入模板,然后根据模板修改自己关注的配置。为了对接 MQ,需要在配置中指定”canal.serverMode”,我这里配置的是“RocketMQ”,另外一个配置就是 MQ 的连接信息“canal.mq.servers”。

指定消息队列为 RocketMQ。

1b69981361b70f626a6f7132f1d94a6e.png

配置 RocketMQ 的连接信息。

220c8fc2bdb0290a580deafce39d04da.png

创建 Canal Instance

Canal Admin 提供了 Canal Instance 的管理功能,我们可以通过 UI 界面添加需要监听的数据库,让该 Instance 消费 binlog 并将事件发送到 MQ。

点击“新建 Instance”按钮创建 Instance。

7c92f27fac720d4fd7e9622c7f2518fb.png

修改”canal.instance.mysql.slaveId”和”canal.instance.master.address”。

11d4e03d4508087dab37d7ed8915ee2c.png

查看 Instance 日志,判断 Instance 是否配置正确。

12020-01-10 14:46:50.800 [destination = parallels_mysql5.6 , address = /10.37.129.3:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000007,position=104805,serverId=1,gtid=,timestamp=1578638732000] cost : 7ms , the next step is binlog dump

测试 MySQL 事物

创建好了 Canal Instance 之后,就可以通过消费者消费 MQ 里面的数据库事件了。对于普通的操作例如新增、修改、删除等操作都是没有问题,下面可以来测试一下事物比较特殊的场景。其实只需要验证未提交的事物是否会产生 binlog 即可推测出结果。

关闭自动提交

为了测试事物,可以将当前会话的自动提交关闭。

1set @global.autocommit=0;

查询当前自动提交是否关闭。

1set @@session.autocommit=0;

开始测试事物

当我们关闭自动提交之后就要定位 binlog 当前最后的位置,这样后续写入数据时但是没有提交时可以判定 binlog 是否有写入。

查找最后一个 binlog 的文件名。

1show binary logs;

查看最后一个 binlog 最后的位置。

1show binlog events in 'mysql-bin.000007';

我这里查找到的结果是 106667。

9642a59b17ef6fb4e88f16633936da69.png

执行数据库插入语句。

1INSERT INTO `test`.`tb_user`(`username`, `password`, `age`, `nickname`) VALUES ('testtttttttt', 'tttttttttt', 3, 'ttttttttttt');

再次查看 binlog 最后的位置。

da3088902df1bdba1b4ad6388aa51a6e.png

可以看到位置没有发生变化,我的消费端也没有收到数据添加的消息,最后将该次事物提交,然后查看下最后的位置。

7d778f1c965437c595e619914e044fd9.png

可以看到 binlog 的位置发生了变化,证明只有事物提交之后才能 binlog 才会写入,我的消费端也接收到了数据库变化的消息。

1aa92c49236858d938fdca3c682ee3a5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验
基于GPT-SoVITS的视频剪辑快捷配音工具 GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值