阿里云服务器安装及部署canal

2023-10-29

阿里云服务器安装及部署canal

1、环境部署

1.1、mysql开启binlog模式

(1)查看当前mysql是否开启binlog模式。

SHOW VARIABLES LIKE '%log_bin%'

如果log_bin的值为OFF是未开启,为ON是已开启。

(2)修改/etc/my.cnf 需要开启binlog模式。

[mysqlId]
log-bin=mysql-bin
binlog-format=ROW
server_id=1

修改完成之后,重启mysqld的服务。

(3)进入mysql

mysql -h localhost -u root -p

(4)创建账号 用于测试使用
使用root账号创建用户并授予权限

create user canal@'%' IDENTIFIED by 'canal'; 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES;

1.2、 canal服务端安装配置

(1)下载地址canal

https://github.com/alibaba/canal/releases/tag/canal-1.0.24

在这里插入图片描述
(2)下载之后 上传到linux系统中,解压缩到指定的目录/usr/local/canal
解压缩之后的目录结构如下:
在这里插入图片描述
(3)修改 exmaple下的实例配置

vi conf/example/instance.properties

在这里插入图片描述
修改如图所示的几个参数。

(4)启动服务:

[root@localhost canal]# ./bin/startup.sh

(5)查看日志:

cat /usr/local/canal/logs/canal/canal.log

在这里插入图片描述

这样就表示启动成功了。(注意,红框中的内容为启动canal的ip及端口号,ip和端口号配置在usr/local/canal/conf中的canal.properties)

在这里插入图片描述
通过图片中的红框所示,其实我在这里并没有配置canal.ip的值,只配置了canal.port的值,这也是canal的默认端口号11111,如果这里没有配置ip地址,启动canal会自动分配一个ip地址,如第五步查看日志的第一张图所示;(ps:这里我试过自定义阿里云的地址,发现无法启动,最好还是留空让它自动配置吧!)

1.3数据监控微服务

当用户执行数据库的操作的时候,binlog 日志会被canal捕获到,并解析出数据。我们就可以将解析出来的数据进行相应的逻辑处理。

我们这里使用的一个开源的项目,它实现了springboot与canal的集成。比原生的canal更加优雅。

https://github.com/chenqian56131/spring-boot-starter-canal

使用前需要将starter-canal安装到本地仓库。(如何安装到本地仓库百度即可)

我们可以参照它提供的canal-test,进行代码实现。

1.3.1、微服务搭建

(1)创建工程模块changgou_canal,pom引入依赖

<dependency> 
	<groupId>com.xpand</groupId> 
	<artifactId>starter-canal</artifactId> 
	<version>0.0.1-SNAPSHOT</version> 
</dependency>

(2)创建包com.项目名.canal ,包下创建启动类

@SpringBootApplication
@EnableCanalClient //声明当前的服务室canal的客户端
public class CanalApplication {
    public static void main(String[] args) {
        SpringApplication.run(CanalApplication.class,args);
    }
}

(3)添加配置文件application.properties

canal.client.instances.example.host=xxx.xxx.xxx.xx #注意,这里填写的ip地址并非canal日志里的自动分配的启动ip地址,而是要填写自己的阿里云地址(始终canal是在自己的阿里云上部署,使用阿里云地址链接即可)
canal.client.instances.example.port=11111
canal.client.instances.example.batch-size=1000
spring.rabbitmq.host=xxx.xxx.xxx.xx #ip地址同上

(4)创建com.项目名.canal.listener包,包下创建类

@CanalEventListener //声明当前的类是canal的监听类
public class BusinessListener {
    /**
     *
     * @param eventType 当前操作数据库的类型
     * @param rowData 当前操作数据库的数据
     */
    @ListenPoint(schema = "数据库名称",table = "监听的表名称") //监听的数据库与表
    public void adUpdate(CanalEntry.EventType eventType,CanalEntry.RowData rowData){
        System.out.println("表数据发生改变");
        //获取改变之前的数据
        rowData.getBeforeColumnsList().forEach((c) -> System.out.println("改变前的数据:"+c.getName()+"::"+c.getValue()));

        //获取改变之后的数据
        rowData.getAfterColumnsList().forEach((c) -> System.out.println("改变之后的数据:"+c.getName()+"::"+c.getValue()));
    }

}

测试:启动数据监控微服务,修改监听数据库中的xx表,观察控制台输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里云服务器安装及部署canal 的相关文章

  • 我应该保留远程数据库的本地副本吗?

    我正在开发一个应用程序 基本上允许人们创建 加入和管理其他人的群组 群组内的人也可以互相发送消息 我一直在想哪条路会更好 保留包含所有信息的远程数据库 包括发送给用户和从用户发送的消息 并让应用程序在每次需要信息时查询服务器 甚至是它以前见
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • _mysql_connector.MySQLInterfaceError:命令不同步;您现在无法运行此命令 python msql.connector

    我有一个功能 您可以在下面看到 如果运行此函数 我将收到您在标题中看到的错误 您能帮助我吗 不久前我能够用锁解决这个问题 但现在它们不起作用 我知道这与我的连接有关 但我不知道如何解决这个问题 def insertNewValues sel
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 计算表中的行数

    获取 MySQL 数据库中特定表的总行数的语法是什么 我一直都这么做 SELECT count FROM table 上面将为您提供所有行的总数 您可以轻松添加 WHERE 子句来获取某个子集的计数 SELECT count FROM ta
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • 尝试在空对象引用上调用虚拟方法“java.lang.String org.jsoup.nodes.Element.ownText()”

    我正在使用下面的代码来获取版本名称 from 应用商店通过使用 jsoup 我正在获取详细信息 但它引发了一些异常 我的代码是 public class ForceUpdateAsync extends AsyncTask
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • 在多模块项目中访问绑定适配器

    我有一个多模块项目 其中应用程序模块包含我的绑定适配器 而我的功能模块取决于我的应用程序模块 因为它是动态功能模块 应用程序 包含绑定适配器 gt 动态功能模块 存在布局的地方 我在所有模块中启用了数据绑定和 kapt 我无法成功构建应用程
  • 如何使用Peewee查询多个相似的数据库?

    我遇到了使用 Peewee 查询多个数据库的问题 我有 2 个现有的 mysql 数据库 让我们将它们命名为 A 和 B 结构相似 因为它是两个 Bugzilla 数据库 我使用 Pwiz 生成模型 modelsA py 和 modelsB
  • 如何列出所有可用的 LookAndFeel 主题?

    如何列出所有可用的 LookAndFeel 主题 我想在 JComboBox 中显示以供用户选择 这真的很简单 public static UIManager LookAndFeelInfo getInstalledLookAndFeels
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • JPA - 非主键字段上的 @OneToOne 关系不起作用

    我有一个 Spring Data JPA 后端 使用 Hibernate 作为 ORM 实现 这是模型 Person MailConfig id PK uid PK FK Person uid uid Entity
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • MySQL 查询获取每小时计数

    我需要统计每小时发生的操作次数 我的数据库按操作的时间戳保存日志 我明白我可以做一个 SELECT table time COUNT table time from table t group by t time 然而 也有一段时间没有采取
  • 测验程序的 MySql 数据库设计

    我目前正在开发一个项目 主要是创建一个测验应用程序 它将能够进行包含 10 到 20 个问题的多项选择题或简答题的测验 它需要能够根据正确答案检查用户的答案 然后对用户的答案进行评分 稍后 我可能会实现一个后端功能来在线创建测验 但现在我将
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri

随机推荐

  • Unity3D官方教程——Survival Shooter学习记录

    unity 官方教程Survival Shooter 学习笔记 1 准备工作 新建项目并导入官方商店的Survival Shooter资源 在Assets下新建文件夹 Scence并在新文件夹内保存当前新场景命名为Main 2 背景和背景音
  • allegro设置禁止铺铜区的方法

    allegro设置禁止铺铜区的方法 Cadence Allegro 16 6 关于shape分割的一种方法 Allegro 铺铜设置 使用Shape Keepout设置禁止铺铜区 操作方法是Setup Areas Shape Keepout
  • 数据可视化python,绘制饼图,代码和解析

    饼图样式 使用matplotlib pyplot pie绘制 代码描述 import matplotlib pyplot as plt import pandas as pd 定义饼状图的标签 标签是列表 timeData pd read
  • Leetcode刷题(14. 最长公共前缀)

    Leetcode刷题 14 最长公共前缀 一 题目 二 代码 C 三 提交记录 四 备注 一 题目 编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串 示例 1 输入 flower flow flight 输出
  • 延长线段ab到c的画法有几种_垂直与平行的画法

    点击蓝字关注我们 垂直与平行的画法 现在中考对作图要求越来越高 作图是对我们应用数学基本定理 性质以及动手能力的一种考察 问题的关键在于学生平时忽视了定理 性质的重要性 甚至初三念完了书还是新的 通过作图 对定理和性质进行理解记忆 问题1
  • 使用Python爬取不同类别的豆瓣电影简介

    使用Python爬取不同类别的豆瓣电影简介 之前做过一点文本分类的工作 从豆瓣上爬取了不同类别的数千条电影的简介 爬取目标 我们爬取的目标是 豆瓣影视 打开豆瓣网 随便点击一部电影 即可看到电影的介绍 评论等信息 我们需要爬取的是电影的简介
  • sed与awk读书笔记[sed篇]

    简介 个人基础及笔记重点 sed基础 常用参数包括 寻址包括 常用命令包括 标志flags 正则表达式 sed高级这一章要详细讲解要不迷惑性太大举例 N命令 D命令 跳转命令aba 跳转命令ata hHgGx利用保持空间的命令 熟悉例子 最
  • Idea工具的使用

    文章目录 一 IDEA的使用 二 IDEA工具的快捷键以及一些简单的设置 1 字体设置 2 快速生成main方法 psvm 3 快速生成System out println sout 4 注意 IEDA是自动保存 不需要ctrl s 5 删
  • Python+Opencv 提取图片中某种颜色组成的图形

    主要目标识别图中红色的裂缝 尝试了几种不同的方法 最后发现比较每一点的RGB差值可以很好的解决这个问题 也就是提取图片中的红色相关信息 处理结果如下 实现的代码如下 注意opencv读入的图片通道顺序是bgr import cv2 impo
  • AWG线规对照表

    AWG American Wire Gauge 是美国电线标准的简称 AWG值是导线直径 以英寸计 的单位 其中 4 0表示0000 3 0表示000 2 0表示00 1 0表示0 例如 常用的电话线直径为26AWG 约为0 4mm 下表是
  • 停更一次博客

    明天微机原理复习 下周补两次博客
  • scala 的模式匹配与类型系统

    主要内容 1 scala模式匹配 2 scala类型系统 scala模式匹配 scala中的模式匹配与java中的switch case很类似 但是不同的是java中switch case只能匹配值 而scala模式匹配更强大 还可以对类型
  • execjs._exceptions.ProcessExitedWithNonZeroStatus

    报错如下图 提示我292的换行符有问题 刚开始我以为是我服务器的nodejs环境没有配好 就忽略了换行错误 后面发现nodejs已经配置好了 才转过来正视这个问题 在gitlab的textview里发现了端倪 在pycharm里面根本发现不
  • 三路红外arduino循迹小车(两驱-----黑线循迹)

    原理 红外传感器检测到黑线 红外光被吸收 其对于的led将不亮 反之无黑线 红外光被反射接收 点亮led 源代码是我借鉴他人加以修改的 代码也很简单 缺点就是跑不快 一旦快了容易冲出巡线轨迹 define STOP 0 define FOR
  • SpringBoot+Netty+WebSocket 实现消息推送

    关于Netty Netty 是一个利用 Java 的高级网络的能力 隐藏其背后的复杂性而提供一个易于使用的 API 的客户端 服务器框架 Maven依赖
  • Zotero使用分享(一)——导入文献、管理文献、引用文献

    Zotero使用分享 一 导入文献 管理文献 引用文献 0 为什么要用文献管理工具 1 Zotero是什么 2 安装 3 添加资源到Zotero 3 1 通过文献DOI导入 3 2 从剪贴板中导入 3 3 利用EndNote导入 3 4 用
  • BindingException: Invalid bound statement (not found)

    org apache ibatis binding BindingException Invalid bound statement not found com UserInfoMapper listByRole 报错描述 程序一直可以正常
  • NTSC、PAL、SECAM三大制式简介

    NTSC PAL SECAM三大制式简介 NTSC PAL和SECAM是全球三大主要的电视广播制式 这三种制式是不能互相兼容的 例如在PAL制式的电视上播放NTSC的视频 则影像画面将不能正常显示 下面分别对这三种制式进行简要介绍 NTSC
  • Deeplabcut----(1)新建自己的训练(单只动物)

    Deeplabcut新建自己的训练 本教程最后使用Autodl云平台跑代码 本地电脑上只是进行数据标注 建议直接新建多动物训练 比单动物的项目能干的事多 也能对单动物进行预测 个人使用感觉还是mmpose预测新视频和图片的正确率更高 整个文
  • 阿里云服务器安装及部署canal

    阿里云服务器安装及部署canal 1 环境部署 1 1 mysql开启binlog模式 1 查看当前mysql是否开启binlog模式 SHOW VARIABLES LIKE log bin 如果log bin的值为OFF是未开启 为ON是