Centos7 |Canal Admin搭建Canal Server集群|

news2024/11/13 8:53:01


一: 使用CanalAdmin来搭建一个canal集群 

1.1  环境规划 

   服务名称|主机节点           机器IP           节点   备注
 canal admin    | docker0  192.168.1.100 192.168.1.100:8888 canal admin 机器
 canal server 1  | docker1  192.168.1.101 192.168.1.100:8888 canal server机器
  canal server 2 | docker2  192.168.1.102  192.168.1.100:8888 canal server机器

                  | docker0
zookeeper | docker1

                  | docker2
        

   192.168.1.100 192.168.1.100:2181 主从节点随机选举
   192.168.1.101  192.168.1.101:2181 主从节点随机选举
   192.168.1.102  192.168.1.102:2181 主从节点随机选举

 mysql server  | docker0

                       | docker1

                       | docker2

   192.168.1.100  192.168.1.100:3306   master
    192.168.1.101 192.168.1.101:3306   slave
   192.168.1.102  192.168.1.102:3306   slave

1.2: 上传响应的包至docker0主机

主要包有:

canal.adapter-1.1.6.tar.gz

canal.admin-1.1.6.tar.gz

canal.deployer-1.1.6.tar.gz

包下载地址: https://github.com/alibaba/canal/releases

1.3:分发这些包至docker1,docker2主机

使用Xshell客户端控制同时控制|docker0|docker1|docker2|主机

在docker0主机上执行创建响应目录

[root@www canal]# mkdir -p /usr/local/canal/adapter
[root@www canal]# mkdir -p /usr/local/canal/admin
[root@www canal]# mkdir -p /usr/local/canal/deployer

docker0主机执行命令完成,则其他机器会同步创建这些目录


关闭docker1|docker2主机上的Xshell同步开发置为off,暂停同步操作

在docker0主机上分发对应安装包到docker1|docker2主机对应目录:/usr/local/tools/

[root@www tools]# scp canal.adapter-1.1.6.tar.gz canal.admin-1.1.6.tar.gz canal.deployer-1.1.6.tar.gz  docker1:/usr/local/tools/

[root@www tools]# scp canal.adapter-1.1.6.tar.gz canal.admin-1.1.6.tar.gz canal.deployer-1.1.6.tar.gz  docker2:/usr/local/tools/

 

1.3: Xshell同步执行解压包到响应目录 

[root@www canal]# cd /usr/local/tools
[root@www tools]# ll
总用量 1816124
-rw-r--r--  1 root root   19935216 7月  19 17:17 apache-zookeeper-3.9.0-bin.tar.gz
-rw-r--r--  1 root root  247732147 8月  30 09:07 canal.adapter-1.1.6.tar.gz
-rw-r--r--  1 root root   39171682 8月  30 09:07 canal.admin-1.1.6.tar.gz
-rw-r--r--  1 root root  107152758 8月  30 09:07 canal.deployer-1.1.6.tar.gz
-rw-r--r--  1 root root  195094741 8月  21 14:21 jdk-8u221-linux-x64.tar.gz
-rwxr-xr-x  1 root root  139219380 8月  21 15:50 jdk-8u371-linux-x64.tar.gz
-rw-r--r--. 1 root root 1111524352 7月   7 2022 mysql-8.0.30-linux-glibc2.12-x86_64.tar
-rwxr-xr-x  1 root root          7 8月  21 21:04 send.txt
 


[root@www tools]# tar -zxvf canal.adapter-1.1.6.tar.gz -C /usr/local/canal/adapter/
[root@www tools]# tar -zxvf canal.admin-1.1.6.tar.gz -C /usr/local/canal/admin/
[root@www tools]# tar -zxvf canal.deployer-1.1.6.tar.gz -C /usr/local/canal/deployer/
 

 1.4: 配置Canal Admin的数据库连接信息

[root@www conf]# cat application.yml 
server:
  port: 8888
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

spring.datasource:
  address: 192.168.1.100:3306
  database: canal_manager
  username: canal
  password: canal
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?sslMode=DISABLED&serverTimezone=GMT%2B8&useSSL=false
  hikari:
    maximum-pool-size: 30
    minimum-idle: 1

canal:
  adminUser: admin
  adminPasswd: admin123456
 

1.5: 导入数据库脚本

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tope-pay-user      |
+--------------------+
5 rows in set (0.03 sec)

mysql> source /usr/local/canal/admin/conf/canal_manager.sql
Query OK, 1 row affected, 2 warnings (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| canal_manager      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tope-pay-user      |
+--------------------+
6 rows in set (0.00 sec)

mysql> use canal_manager;
Database changed
mysql> show tables;
+-------------------------+
| Tables_in_canal_manager |
+-------------------------+
| canal_adapter_config    |
| canal_cluster           |
| canal_config            |
| canal_instance_config   |
| canal_node_server       |
| canal_user              |
+-------------------------+
6 rows in set (0.00 sec)
 


1.6: 启动canal admin

bin/startup.sh
确认是否已经启动

[root@www bin]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.1.100:33806     0.0.0.0:*               LISTEN      1185/minio          
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      661/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1173/sshd           
tcp        0      0 192.168.1.100:9666      0.0.0.0:*               LISTEN      1185/minio          
tcp        0      0 127.0.0.1:9666          0.0.0.0:*               LISTEN      1185/minio          
tcp6       0      0 :::33060                :::*                    LISTEN      1171/mysqld         
tcp6       0      0 :::2181                 :::*                    LISTEN      1221/java           
tcp6       0      0 :::3306                 :::*                    LISTEN      1171/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      661/rpcbind         
tcp6       0      0 192.168.1.100:3888      :::*                    LISTEN      1221/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      1221/java           
tcp6       0      0 :::22                   :::*                    LISTEN      1173/sshd           
tcp6       0      0 :::45183                :::*                    LISTEN      1221/java           
tcp6       0      0 ::1:9666                :::*                    LISTEN      1185/minio          
[root@www bin]# netstat -lntp | grep 8888
没有发现8888这个端口进程,启动失败,看日志

该异常:由于装的数据库时8.0.30,该jar版本低了,或一个1.8版本的

[root@www lib]# find ./  -name mysq*
./mysql-connector-java-8.0.30.jar

再次重启: 

[root@www logs]# tail -f admin.log 
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
    at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:130)
    at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:49)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:447)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:212)
    at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1433)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:133)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
    ... 44 common frames omitted
 

这个是数据库加密升级原因;

MySQL8.xx 解决1251 client does not support ..解决方案   参考这篇文章解决

创建一个canal账号及密码: canal

CREATE USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal';

再次启动:

[root@www logs]# tail -f admin.log 
   Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.ebean.EbeanServer]: Factory method 'ebeanServer' threw exception; nested exception is javax.persistence.PersistenceException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579)
    ... 16 common frames omitted
Caused by: javax.persistence.PersistenceException: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
    at io.ebeaninternal.server.core.DefaultContainer.checkDataSource(DefaultContainer.java:323)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:106)
 

[root@www lib]# find ./ -name Hikari*
./HikariCP-2.7.8.jar
Access denied for user 'canal'@'%' to database 'canal_manager'

这个异常一般没权限: canal 用户没权限访问数据库canal_manager


UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='canal';
GRANT INSERT ON canal_cluster TO 'canal'@'%'
GRANT INSERT ON canal_config TO 'canal'@'%'
flush privileges;

解决方案:

canal报错,解决方法,将数据库切到canal_manager,使用以下命令即可
GRANT INSERT ON canal_node_server TO 'canal'@'%'

同样新增集群也会报这个错,类似命令:

GRANT INSERT ON canal_cluster TO 'canal'@'%'

模板保存也是

GRANT INSERT ON canal_config TO 'canal'@'%'

使用local启动的时候要创建相应的模板。


查看日志启动成功:


[root@www logs]# ps aux | grep 'canal'

[root@www logs]# netstat -lntp | grep 8888
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      6188/java      

http://192.168.1.100:8888/

后续补充完整.........................

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/948674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka3.0.0版本——Leader Partition自动平衡

目录 一、Leader Partition自动平衡的概述二、Leader Partition自动平衡的相关配置参数三、Leader Partition自动平衡的示例 一、Leader Partition自动平衡的概述 正常情况下,Kafka本身会自动把Leader Partition均匀分散在各个机器上,来保证每台机器的读…

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现,内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外,还有一个“其他文件”的项目磁盘占用比也非常大,想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件?我…

HBuilderX修改manifest.json设置,解决跨域问题(CORS、Cross-Origin)

搭建一个前台uniapp,后台springboot的开发环境时,遇到了跨域问题。 console提示错误信息: Access to XMLHttpRequest at http://10.0.180.203/api/cms/getAdList?apId1 from origin http://localhost:8080 has been blocked by CORS policy…

常用框架分析(7)-Flutter

框架分析(7)-Flutter 专栏介绍Flutter核心思想Flutter的特点快速开发跨平台高性能美观的用户界面 Flutter的架构框架层引擎层平台层 开发过程使用Dart语言编写代码编译成原生代码热重载工具和插件 优缺点优点跨平台开发高性能美观的用户界面热重载强大的…

pinia——添加插件——基础积累

问题:是否给pinia添加过插件?具体添加的方式是什么? 在pinia中,我们可以为仓库添加插件,通过添加插件能够扩展以下的内容: 为 store 添加新的属性 定义 store 时增加新的选项 为 store 增加新的方法 包装现…

怎么传输大文件跨国,如何跨国快速传输大文件

在当前数字化时代的背景下,跨国传输大文件已经成为企业和个人工作中不可避免的挑战。尽管存在技术障碍和阻碍,但借助先进的技术和服务,我们仍能高效完成跨国大文件传输任务。接下来将介绍几种常见的跨国快速传输大文件的方法。 一、FTP文件传…

固定资产台账怎么管理

固定资产台账是指企业对固定资产进行登记、分类、统计和管理的账簿。固定资产管理系统是一款专业的固定资产管理软件,可以帮助企业实现资产全生命周期管理,包括资产采购、入库、领用、归还、维修、报废等环节。系统具有实时监控、预警提醒、报表分析等功…

PostgreSQL数据导入导出【亲测】有图有真相

pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。 有图有真相 文章目录 导出导入压缩方法 导出 pg_dump -h 127.0.0.1 -p 5432 -U readuser mydatabase > dum.sql导入 1、导入整个…

函数和方法回顾、cbv源码分析、APIView执行流程分析、序列化组件介绍、序列化组件快速使用之序列化、常用字段类和参数、序列化组件之校验

一 函数和方法回顾 函数和方法-函数:使用def关键字定义的函数,有几个参数,就要传几个参数,不能多,不能少-----》按位置传,按关键字传-方法:定义在类内部,可以自动传值的函数称之为方法---》绑定给对象的方…

vue3+ts+tinynce在富文本编辑器菜单栏实现下拉框选择

实现效果 代码&#xff1a; <script lang"ts" setup> import Editor from tinymce/tinymce-vue import tinymce from tinymce; import { getIndicator } from /api/data-assets/data-dictoryimport {computed, ref} from "vue"; const props defin…

Linux centos7 bash编程——-求质数和

训练项目&#xff1a;使用函数求质数和。 定义一个函数IsPrime()&#xff0c;据此判断一个数是否为质数 由用户输入一个整数&#xff0c;求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…

【word技巧】word隐藏文字的方法

Word文件中有些内容想要隐藏&#xff0c;该如何隐藏&#xff1f;今天分享几个方法给大家 方法一&#xff1a; 最简单的方法&#xff0c;将字体颜色与背景颜色设置为一致的&#xff0c;这样就达到了隐藏的效果&#xff0c;选中文字再修改颜色就可以恢复字体 方法二&#xff1a…

HCIP-OpenStack组件之网络服务Neutron(ovs、ovn)

1、Linux网络虚拟化基础 Neutron最为核心的工作是对二层物理网络的抽象与管理&#xff0c;物理服务器虚拟化后&#xff0c;虚拟机的网络功能由虚拟网卡&#xff08;vNIC&#xff09;和虚拟交换机&#xff08;vSwitch&#xff09;提供&#xff0c;各个vNIC连接在vSwitch的端口上…

DDD 与 CQRS 才是黄金组合

在日常工作中&#xff0c;你是否也遇到过下面几种情况&#xff1a; 使用一个已有接口进行业务开发&#xff0c;上线后出现严重的性能问题&#xff0c;被老板当众质疑&#xff1a;“你为什么不使用缓存接口&#xff0c;这个接口全部走数据库&#xff0c;这怎么能抗住&#xff01…

前端(十六)——微信小程序语音转文字,文字转语音功能的实现

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;微信小程序语音转文字&#xff0c;文字转语音功能的实现 文章目录 资源下载链接最关键的问题控制台报错30003语音转文字文字转语音效果图应用场景作用和优势实现思路 资源下载链接 CSDN资源下载&am…

【C51基础实验 LED闪烁】

51单片机项目基础篇 LED闪烁1、硬件电路设计和原理分析2、软件设计2.1、功能实现&#xff1a;LED闪烁2.2、通过 KEIL 软件自带仿真查看延时时间 4、编译结果5、结束语 LED闪烁 前言&#xff1a; 前一篇学会了点亮一颗LED以及驱动原理&#xff0c;那么这篇紧接着就来解锁LED的新…

智慧排水监测系统:创新监测技术保障排水系统安全运行

城市排水系统作为城市基础设施的重要组成部分&#xff0c;其安全运行直接关系到环境卫生、居民生活和城市发展。为了确保排水系统的顺畅运行&#xff0c;传统的监测手段已经不能满足日益复杂的城市排水需求&#xff0c;物联网技术的快速发展为排水系统的监测带来了巨大的便利&a…

正中优配:IPO刹车,再融资转向,A股投融资动态平衡

继8月18日推出“一揽子”方针措施后&#xff0c;证监会近来表态&#xff0c;将充分考虑当时商场局势&#xff0c;对IPO、再融资节奏作出安排&#xff1a;包含阶段性收紧IPO节奏、促进投融资两头的动态平衡&#xff1b;优化再融资监管。 “目前商场资金面偏弱&#xff0c;阶段性…

java八股文面试[多线程]——CAS同步机制

AtomicInteger 源码解析&#xff1a; public class AtomicInteger extends Number implements java.io.Serializable {// 设置使用Unsafe.compareAndSwapInt进行更新private static final Unsafe unsafe Unsafe.getUnsafe();private static final long valueOffset;static {t…

electron win系统通知修改通知标题栏

标题栏的 electron.app.Electron 如何修改&#xff1a; var package require("../package.json"); app.setAppUserModelId(package.description); app.setAppUserModelId 在主进程的app这里修改