Canal 1.1.7的安裝

數據庫操作的準備
1、開啟 Binlog 寫入功能,配置 binlog-format 為 ROW 模式,my.cnf 中配置如下:
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin # 開啟 binlog
binlog-format=ROW # 選擇 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定義,不要和 canal 的 slaveId 重復重啟 MySQL
[root@localhost etc]# systemctl restart mysql查看下binlog是否開啟,如果值為on 代表開啟。
SHOW VARIABLES LIKE 'log_bin';查看binlog的格式
show variables like '%binlog_format%';https://dev.mysql.com/doc/refman/8.4/en/
https://dev.mysql.com/doc/refman/8.4/en/show-master-status.html8.4中已經沒有SHOW MASTER STATUS;這條命令,需要用SHOW BINARY LOG STATUS
SHOW MASTER STATUS; 是一條 MySQL 查詢命令,用于獲取當前 MySQL 服務器作為主服務器時的二進制日志狀態。這條命令對于設置從服務器的復制非常有用,因為它提供了從服務器需要的信息,以便知道從哪里開始復制數據。SHOW BINARY LOG STATUS
binlog.000034   1582、授權 canal 鏈接 MySQL 賬號具有作為 MySQL slave 的權限, 如果已有賬戶可直接 grantCREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;MySQL的slave需要的權限說明如下:
REPLICATION SLAVE權限,這是Slave服務器必須擁有的最重要的權限。它允許Slave服務器連接到Master服務器并獲取復制數據。如果Slave服務器沒有REPLICATION SLAVE權限,它將無法連接到Master服務器并執行復制操作。
REPLICATION CLIENT權限,這個權限允許Slave服務器向Master服務器發送查詢語句以獲取復制數據。如果Slave服務器沒有REPLICATION CLIENT權限,它將無法向Master服務器發送查詢語句,從而無法獲取復制數據。
SELECT權限,Slave服務器需要SELECT權限來讀取Master服務器上的數據。如果Slave服務器沒有SELECT權限,它將無法獲取Master服務器上的數據,從而無法保持與Master服務器的同步。查看權限
SHOW grants for 'canal'顯示:GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `canal`@`%`1、下載用1.1.7這個版本比較穩定
1.1
https://github.com/alibaba/canal/releases/tag/canal-1.1.71.2 解壓縮和修改配置
mkdir canal
mkdir canal-admin
tar -zxvf canal.deployer-1.1.7.tar.gz  -C canal/
tar -zxvf canal.admin-1.1.7.tar.gz   -C canal-admin/修改conf下的canal.properties,主要改綁定的IP,注意:最好改成IP,別用127.0.0.1,因為要是程序和代碼沒在一臺機器的話連不上。
[root@localhost conf]# vi canal.properties
# tcp bind ip
canal.ip = 192.168.150.50修改/conf/example下的 instance.propertiescanal.instance.master.address=192.168.3.70:3306
# username/password這個是要同步的數據庫的賬號和密碼這個里用的canal,前提是得提前在數據庫里創建canal的賬號和授權。
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal1.3啟動
/usr/local/software/canal/conf
/usr/local/software/canal/bin
看日志
/usr/local/software/canal/logs/canal/usr/local/software/canal/bin
./startup.sh
./stop.sh
使用注意事項:1)修改canal.admin-1.1.7\conf和/canal/conf下的application.yml 啟動的驅動driver-class-name: com.mysql.cj.jdbc.Driver2) java21去掉admin和canal bin目錄下startup.sh里的java8的參數。刪除掉:-XX:+AggressiveOpts -XX:-UseBiasedLocking 3)啟動提示druid找不到
將druid的jar包放在lib目錄就可以了。druid-1.2.22.jar測試通過
https://repo1.maven.org/maven2/com/alibaba/druid/1.2.22/ 2、加入依賴,Canal TCP模式需要的依賴
<dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.client</artifactId><version>1.1.7</version>
</dependency>
<dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.protocol</artifactId><version>1.1.7</version>
</dependency>3、canal 1.1.7 只能同步mysql8.0下的版本,mysql8.4版本的收不到消息。版本的觀念要建立起來,或者我哪弄的不對。4、RocketMQ 監聽 canal的變化。
1)啟動 RocketMQ
2)修改canal.properties
# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = rocketMQ
3)寫消費的監聽者
參考RocketMQTool類import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.demo.demo.entity.CanalBinlog;
import org.apache.rocketmq.shaded.com.google.gson.Gson;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;/*** canal.properties 設置生產者組rocketmq.producer.group = test 用的默認組* example/instance.properties 修改主題 canal.mq.topic=rocketmq_toppic_01*/
@Component
@RocketMQMessageListener(topic = "example", consumerGroup = "test", selectorExpression="*")
public class RocketMQTool implements RocketMQListener<String> {private Gson gson = new Gson();@Overridepublic void onMessage(String mqJson){CanalBinlog canalBinlog = gson.fromJson(mqJson, CanalBinlog.class);System.out.println(mqJson);System.out.println(canalBinlog);CanalBinlog canalBinlog2 = JSON.parseObject(mqJson, CanalBinlog.class);System.out.println("fastJson: "+JSON.toJSONString(canalBinlog2));}
}
import java.util.List;
import java.util.Map;@Data
public class CanalBinlog {// 數據private List<Map<String,Object>> data;// 數據庫名稱private String database;private long es;// 遞增,從1開始private int id;// 是否是DDL語句private boolean isDdl;// 表結構的字段類型private Map<String,Object> mysqlType;private List<Map<String,Object>> old;// 主鍵名稱private List<String> pkNames;// sql語句private String sql;private Map<String,Object> sqlType;// 表名private String table;private long ts;// INSERT、UPDATE、DELETE、ERASE(刪除表)private String type;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90732.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python---類型轉換

文章目錄1. 基本類型轉換函數int() - 轉換為整數float() - 轉換為浮點數str() - 轉換為字符串bool() - 轉換為布爾值2. 其他類型轉換list() - 轉換為列表tuple() - 轉換為元組set() - 轉換為集合&#xff08;去重&#xff09;dict() - 轉換為字典3. 注意事項1. 兼容性&#xff…

JVM terminated. Exit code=1

出現JVM terminated. Exit code1錯誤通常是因為 Eclipse 所需的 Java 版本與系統中配置的 Java 版本不匹配。從錯誤信息中可以看到關鍵線索&#xff1a;-Dosgi.requiredJavaVersion21&#xff0c;表示此 Eclipse 版本需要 Java 21 或更高版本&#xff0c;但系統當前使用的是 Ja…

20250727-1-Kubernetes 網絡-Ingress介紹,部署Ingres_筆記

一、NodePort存在的不足 ?1. 四層負載均衡 ?? 實現技術: 基于iptables和ipvs實現 OSI層級: 位于傳輸層(第四層) 轉發依據: 基于IP地址和端口進行轉發 特點: 只能看到IP和端口信息 無法識別應用層協議內容 配置簡單但功能有限 2. 七層負載均衡 ?1)七層負載均衡的概念 ?…

Javaweb————HTTP的九種請求方法介紹

??????一.HTTP1.0定義的三種請求方式介紹 &#x1f3cd;?&#x1f3cd;?&#x1f3cd;?&#xff08;1&#xff09;GET請求 作用&#xff1a;向服務器獲取資源&#xff0c;比如常見的查詢請求 應用場景&#xff1a;絕大多數場景&#xff0c;比如我們訪問商城首頁查看圖…

C++day06(練習題)

循序漸進-基礎訓練 格式化輸入輸出 【描述】格式化輸入輸出練習輸入三個整數和一個浮點數&#xff0c;浮點數需要保留的不同小數點后面的數字。 【輸入描述】三個正整數以及以一個浮點數 【輸出描述】三個整數以及保留不同位數的浮點數 【樣例輸入】 1 2 3 9.12345678 【樣例輸…

基于大模型的預訓練、量化、微調等完整流程解析

隨著大語言模型&#xff08;LLM&#xff09;的飛速發展&#xff0c;模型的訓練、部署與優化成為了AI工程領域的重要課題。本文將從 預訓練、量化、微調 等關鍵步驟出發&#xff0c;詳細介紹大模型的完整技術流程及相關實踐。1. 預訓練&#xff08;Pre-training&#xff09; 1.1…

AI入門學習-模型評估示例講解

from sklearn.metrics import classification_report, confusion_matrix from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_classification# 生成示例分類數據 # n_samples: 樣本…

Python編程:初入Python魔法世界

一、常量表達式在編程中&#xff0c;常量指的是在程序執行期間其值不會改變的數據項。雖然 Python 并沒有專門的語法來定義常量&#xff08;不像某些其他語言如 Java 中有 final 關鍵字&#xff09;&#xff0c;但在實踐中&#xff0c;我們通常通過約定俗成的方式來表示一個變量…

Android WorkManager 詳解:高效管理后臺任務

引言在現代移動應用開發中&#xff0c;后臺任務處理是一個至關重要的功能。從同步數據到定期備份&#xff0c;從發送通知到處理耗時操作&#xff0c;后臺任務無處不在。然而&#xff0c;Android系統對后臺任務的限制越來越嚴格&#xff0c;開發者需要找到既高效又符合系統規范的…

MCU(微控制器)中的高電平與低電平?

MCU&#xff08;微控制器&#xff09;中的高電平與低電平&#xff1f; 在數字電路和MCU&#xff08;微控制器&#xff09;中&#xff0c;**高電平&#xff08;High Level&#xff09;和低電平&#xff08;Low Level&#xff09;**是兩種基本的邏輯狀態&#xff0c;用于表示二進…

前端項目下載發票pdf文件要求改文件名筆記

1、a鏈接&#xff08;修改失敗&#xff0c;存在跨域&#xff09;<el-table-columnalignrightlabel"下載地址"width"200"><template slot-scope"{row}"><a :href"row.dataUrl" download"文件名">下載</…

Kotlin 數據容器 - List(List 概述、創建 List、List 核心特性、List 元素訪問、List 遍歷)

一、List 概述List 是一個不可變的有序集合&#xff0c;一旦創建就不能修改其內容&#xff0c;即不能添加、刪除、更改元素List 提供了豐富的操作函數來處理數據二、創建 List 1、基礎創建 通過 listOf 函數創建&#xff08;推薦&#xff09; // 創建一個 List&#xff0c;包含…

HarmonyOS NEXT 系列之規范開發三方共享包

規范開發三方共享包〇、前言一、了解評分規則二、規范開發共享包1、規范開源協議名稱寫法2、將 oh-package.json5 文件補充完整3、補充 example 目錄4、基本的 README 和 CHANGELOG三、ohpm 包的源碼隔離特性〇、前言 對于開發者來說&#xff0c;對外發布代碼制品&#xff0c;…

[電網備考]計算機組成與原理

計算機系統概述 計算機發展歷程 從數據表示: 計算機可以分為數字計算機與模擬計算機 1946 第一臺電子數字計算機 ENIAC 在賓夕法尼亞大學誕生,標志進入電子計算機時代時間計算機發展階段1946-1958電子管計算機時代1958-1964晶體管計算機時代1964-1971集成電路計算機時代1971-至…

8.c語言指針

內存管理C語言中&#xff0c;棧內存&#xff08;局部變量&#xff09;自動分配/釋放&#xff0c;靜態區&#xff08;全局、靜態變量&#xff09;編譯時分配&#xff1b;堆內存需手動分配/釋放&#xff0c;核心函數有3個&#xff1a;malloc函數原型&#xff1a;void* malloc(siz…

使用GPU訓練模型

本文代碼詳解參考&#xff1a; 模型訓練基礎流程-CSDN博客 目錄 為什么要用GPU訓練模型 什么是CUDA 利用GPU訓練—方式一(.cuda()) 利用GPU訓練—方式二 (.to()) Google Colaboratory 為什么要用GPU訓練模型 用 GPU 訓練模型的核心原因是GPU 的硬件架構和計算特性&#…

Matlab學習筆記:自定義函數

MATLAB 學習筆記&#xff1a;自定義函數自定義函數是MATLAB編程的基礎&#xff0c;它允許你將重復代碼封裝成可重用的模塊&#xff0c;提高代碼的可讀性和效率。本筆記將覆蓋所有重點知識點&#xff0c;包括語法細節、輸入輸出處理、函數文件管理、錯誤處理等。我會用自然易懂的…

【數學建模 | Matlab】二維繪圖 和 三維繪圖

- 第 115 篇 - Date: 2025 - 07 - 23 Author: 鄭龍浩&#xff08;仟墨&#xff09; 續寫上一篇&#xff0c;如下文章&#xff1a; 【數學建模|Matlab】Matlab「基礎知識」和「基礎操作」 五 二維繪圖 1 舉例 % 二維平面繪圖&#xff08;擴展至 -2π 到 2π&#xff09; x …

MCP (Model Context Protocol) 與 HTTP API:大模型時代的通信新范式

MCP (Model Context Protocol) 與 HTTP API&#xff1a;大模型時代的通信新范式在數字世界的兩端&#xff0c;API 扮演著不可或缺的橋梁角色。我們熟知的 HTTP API 是 Web 互聯互通的基石&#xff0c;驅動著無數應用程序的交互。然而&#xff0c;隨著大型語言模型&#xff08;L…

CentOS 搭建 Docker 私有鏡像倉庫

CentOS 搭建 Docker 私有鏡像倉庫 搭建 Docker 私有鏡像倉庫能為團隊提供高效、安全的鏡像管理方案。下面將詳細介紹每個步驟的操作細節&#xff0c;其中命令部分均用代碼塊展示。 一、環境準備 要搭建 Docker 私有鏡像倉庫&#xff0c;首先得確保服務器環境符合要求&#xff0…