canal server 标准化集群搭建(一)

news2024/11/29 10:50:29

1.背景

随这业务增加,数据同步服务 canal server 需求与日俱增,以往私搭乱建的 canal server 不符合运维标准化。

2.目的

规范 canal server 的部署,形成固定操作流程及文档

3. 环境版本

canal server  canal.deployer-1.1.4.tar.gz

canal admincanal.admin-1.1.4.tar.gz

zookeeperzookeeper-3.4.14.tar.gz

zkuiGitHub - DeemOpen/zkui: A UI dashboard that allows CRUD operations on Zookeeper.

4. 搭建步骤

3.1. 安装zookeeper

# 下载

wget http://mirror.olnevhost.net/pub/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

tar zxvf zookeeper-3.4.11.tar.gz 

mv zookeeper-3.4.11 /data/zookeeper

# 修改环境变量

export ZOOKEEPER_HOME=/data/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

# 重命名配置文件

mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

# 编辑配置文件

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/data

dataLogDir=/data/zookeeper/logs

clientPort=2181

server.1=10.90.48.28:2888:3888

server.2=10.90.48.29:2888:3888

server.3=10.90.48.30:2888:3888

# 添加 zk server id

    #master

echo "1">/data/zookeeper/data/myid

    #slave1

echo "2">/data/zookeeper/data/myid

    #slave2

echo "3">/data/zookeeper/data/myid

# 启动 zookeeper

cd /data/zookeeper/bin

./zkServer.sh  start

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

# 验证 zookeeper 状态

zkServer.sh  status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

# 访问 zookeeper

zkCli.sh -server

# 停止 ZooKeeper 服务

./zkServer.sh  stop

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg

Stopping zookeeper ... STOPPE

3.2. 安装 zkui

# 拉取代码

git clone https://github.com/DeemOpen/zkui.git

# 源码编译需要安装 maven

bash <(curl -s -S -L https://git.xiaojukeji.com/elevate/environment/raw/master/setup-scripts/maven_setup.sh)

cd zkui/

yum install -y maven

mvn clean install

# 修改配置文件默认值

vim config.cfg

serverPort=8090     #指定端口(端口只开放了8000~8100)

zkServer=192.168.1.110:2181

sessionTimeout=300000

# 创建 target 目录(解压后有个 target 文件,执行 mvn 安装时报错找不到 target 目录,怀疑是 bug)

rm target

# 配置我滴 maven 源

bash <(curl -s -S -L https://git.xiaojukeji.com/elevate/environment/raw/master/setup-scripts/maven_setup.sh)

LDAP username:xxx   # 输入 LDAP 账号

password:       # 输入密码

# 安装 maven 包(自动安装到 target 目录下,zkui-2.0-SNAPSHOT-jar-with-dependencies.jar 会被安装)

mvn clean install

# 启动程序至后台,2.0-SNAPSHOT 会随软件的更新版本不同而不同,执行时请查看target 目录中真正生成的版本

nohup java -jar target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &

# 用浏览器访问

http://192.168.1.110:8090/

3.3. 安装 canal server

# 上传下载包

rsync -avr --port=8028 rsync@10.89.182.40::home/canal.deployer-1.1.4.tar.gz .

# 创建目录

mkdir -p /data/canal/canal_test_dhr_entry

# 解压

tar zxvf canal.deployer-1.1.4.tar.gz -C /data/canal/canal_test_dhr_entry

# 重命名 instance 名称

mv /data/canal/canal_test_dhr_entry/conf/example /data/canal/canal_test_dhr_entry/conf/c_test_dhr_entry

# 修改 canal.properties ——主进程配置文件

vim /data/canal/canal_test_dhr_entry/conf/canal.properties

# 第8、9行修改端口

canal.port = 21121

canal.metrics.pull.port = 21122

# 第11、12行取消注释

canal.user = canal

canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458

# 第15行取消注释,修改 admin server 地址

canal.admin.manager = :8089

# 第16行修改端口

canal.admin.port = 21120

# 第20行添加 zk server

canal.zkServers =

# 第60行修改为 true

canal.instance.filter.table.error = true

# 第79行修改为 false

canal.instance.tsdb.enable = false

# 第92行添加 instance name

canal.destinations = c_test_saber_warehouse

# 第106行注释

#canal.instance.global.spring.xml = classpath:spring/file-instance.xml

# 第107行取消注释

canal.instance.global.spring.xml = classpath:spring/default-instance.xml

# 保存

# 修改 instance 配置文件——非必须,可以不修改,因为配置 canal admin 后,该信息是从 admin 获取的

vim /data/canal/canal_test_dhr_entry/conf/c_test_dhr_entry/instance.properties

# 第9行修改源数据库地址:端口

canal.instance.master.address=10.179.250.150:3306

# 第33行修改为源数据库抽数用户,权限为 replication client、replication slave、指定库的 select 权限

canal.instance.dbUsername=u_test_dhr_org_srv

# 第34行修改为源数据库抽数用户的密码

canal.instance.dbPassword=xxxxxxxxx

# 第41行修改为要抽取的数据库(白名单)

canal.instance.filter.regex=dhr-organization-service\\..*

# 第50行修改为instance name,要与上级目录名、canal.properties 中的 intance name 一致

canal.mq.topic=c_test_dhr_org_srv

# 保存

3.4. 安装 canal admin

# 下载

wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz

# 解压缩

mkdir /tmp/canal-admin

tar zxvf canal.admin-$version.tar.gz  -C /tmp/canal-admin

# 修改配置

vi conf/application.yml

# 修改如下内容

server:

  port: 8089

spring:

  jackson:

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

    time-zone: GMT+8

spring.datasource:

  address: 127.0.0.1:3306   # canal manager 库的地址

  database: canal_manager   # 数据库名

  username: canal           # canal manager 数据库访问用户

  password: canal           # canal manager 数据库访问用户密码

  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          # canal admin 页面登陆用户,管理员权限

  adminPasswd: admin        # canal admin 登陆用户密码

# 初始化元数据库

mysql -h127.1 -uroot -p

# 导入初始化SQL

> source conf/canal_manager.sql

# 启动 canal admin

sh bin/startup.sh

# 访问 canal admin,默认密码:admin/123456

http://127.0.0.1:8089

4. canal admin 的使用

4.1. 新建集群

集群名称:zk + 环境标签(prod/stage/test/dev + 目标库缩写(compatible_hrdata+ @ + RD名字

zk 地址:zk 集群的 host:port ,多个主机用 "," 分隔

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

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

相关文章

电装光庭汽车电子(武汉)有限公司

电装光庭汽车电子&#xff08;武汉&#xff09;有限公司 &#xff08;汽车座舱显示系统&#xff0c;汽车电子产品及其材料和组件的开发&#xff0c;设计&#xff0c;制造&#xff0c;销售&#xff0c;批发&#xff0c;进出口&#xff09; 一、公司介绍 电装光庭汽车电子是一…

Android中使用kotlin进行xutils数据库版本升级

Android中使用kotlin进行xutils数据库版本升级 前言 最近的项目是一个很老的项目&#xff0c;数据库采用的是xutils中的数据库&#xff0c;之前的业务没有关于版本变更和数据库修改的业务&#xff0c;这次新需求数据库需要新加一张表&#xff0c;之前的表也需要修改字段&…

2022机器学习阶段性复盘

2022机器学习阶段性复盘 文章目录 2022机器学习阶段性复盘一、业务洞察1.1 业务调研1.2 采样策略 一、特征工程1.1 特征筛选之iv_psi1.2 特征筛选之启发式搜索1.3 时间特征的曲率变换1.4 多重共线性特征的剔除1.5 什么样的特征适合树模型或LR模型1.5 什么样的特征是稳定可泛化特…

cuda编程学习——GPU加速/时间计时Clock 干货向(五)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 文章所有代码可在我的GitHub获得&#xff0c;后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》&#xff0c;B站&#xff1a;出门吃三碗饭 …

路径规划算法:基于花授粉优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于花授粉优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于花授粉优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

面试官:这么简单的二叉树算法都不会?

今天我们来看一个有趣的算法题&#xff0c;也是一道高频面试题。这个题目是leetcode的第572题&#xff0c;要求是这样的&#xff1a;给定两颗二叉树A和B&#xff0c;判断B是否是A的子树。在下面这个例子中可以看到B是A的子树。 想一想该怎样解决这个问题呢&#xff1f;如果B是A…

Python丨tkinter开发常用的29种功能用法(建议码住)

在Python软件开发中&#xff0c;tkinter中command功能的作用是为按钮、菜单等组件绑定回调函数&#xff0c;用户操作该组件时会触发相应的函数执行。 本文涵盖了各种组件和功能&#xff1a; 1、为Button组件&#xff08;按钮&#xff09;绑定回调函数 import tkinter as tk …

模拟量偏差报警功能块(SCL代码)

工业模拟量采集的相关基础知识,可以查看专栏的系列文章,这里不再赘述,常用链接如下: PLC模拟量采集算法数学基础(线性传感器)_plc傳感器數據轉化_RXXW_Dor的博客-CSDN博客模拟量采集库如何设计,具体算法代码请参看我的另一篇博文:PLC模拟量输入 模拟量转换FC:S_ITR_R…

栈和队列(详解)

&#x1f355;博客主页&#xff1a;️自信不孤单 &#x1f36c;文章专栏&#xff1a;数据结构与算法 &#x1f35a;代码仓库&#xff1a;破浪晓梦 &#x1f36d;欢迎关注&#xff1a;欢迎大家点赞收藏关注 文章目录 &#x1f353;栈1. 栈的概念及结构2. 栈的实现2.1 初始化栈2.…

MySQL运维篇(三)

五.读写分离 5.1 介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作&#xff0c;从数据库提供读操作&#xff0c;这样能有效地减轻单台数据库的压力。 通过MyCat即可轻易实现上述功能&#xff0c;不仅可以支持MySQL&#x…

【论文总结】Composition Kills: A Case Study of Email Sender Authentication

构成杀伤力&#xff1a; 电子邮件发送者认证的案例研究 摘要 基于组件的软件设计是构建现代软件系统的一种主要工程方法。然而&#xff0c;由于不同组件之间对信息的解释可能不一致&#xff0c;这种编程范式产生了安全问题。在本文中&#xff0c;我们利用这种不一致来识别电子…

双列集合 JAVA

双列集合 一次需要添加一对数据&#xff0c;分别为键和值键不可以重复&#xff0c;值可以重复键和值是一一对应的&#xff0c;每一个键只可以找到自己对应的值键值对在java中也叫做Entry对象 #mermaid-svg-zKLj0vUbRaN9zlse {font-family:"trebuchet ms",verdana,ar…

SpringBoot2-基础入门(二)

SpringBoot2 - 基础入门&#xff08;二&#xff09; 了解自动装配原理 文章目录 SpringBoot2 - 基础入门&#xff08;二&#xff09;了解自动装配原理一、依赖管理1.1 父项目做依赖管理1.2 starer场景启动器 2、自动配置2.1 自动配置依赖2.2 组件扫描 3、配置文件3.1 各种配置…

【软件测试知识】

目录 软件测试软件测试模型瀑布模型V 模型W 模型敏捷开发模型 软件开发流程软件测试方法白盒测试黑盒测试 软件测试 软件测试模型 说到开发模型&#xff0c;从软件发展来看&#xff0c;比较典型的有瀑布模型&#xff0c;V 模型和 W 模型以及 敏捷开发模型。并不是说开发模型的…

【论坛java项目】第二章 Spring Boot实践,开发社区登录模块:发送邮件、开发注册功能、会话管理、生成验证码、开发登录、退出功能、

&#x1f600;如果对你有帮助的话&#x1f60a; &#x1f33a;为博主点个赞吧 &#x1f44d; &#x1f44d;点赞是对博主最大的鼓励&#x1f60b; &#x1f493;爱心发射~&#x1f493; 目录 一、发送邮件1、启用客户端SMTP服务2、导入jar包3、邮箱参数配置MailClientdemo.html…

第13届蓝桥杯Scratch省赛真题集锦

编程题 第 1 题 问答题 报数游戏 题目说明 背景信息: 5个男生和3个女生&#xff0c;8个人围成一个圆圈&#xff0c;给定一个数字n (2 小于等于n 小于等于5)。从第一个开始依次报数&#xff0c;当报数为n时&#xff0c;这个人离开圆圈。然后下一个从1开始报数&#xff0c;再次报…

MySQL---使用索引优化、大批量插入数据优化

1. 使用索引优化 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL 的性能优化问题&#xff1a; create table tb_seller (sellerid varchar (100),name varchar (100),nickname varchar (50),password varchar (60),status varchar…

高级Java多线程面试题及回答

高级Java多线程面试题及回答 1)现在有T1、T2、T3三个线程&#xff0c;你怎样保证T2在T1执行完后执行&#xff0c;T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到&#xff0c;目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单&#xff0c;可…

网络安全的红利还能吃几年?

在我看来这是一个伪命题&#xff0c;因为网络安全的核心和本质是持续对抗&#xff0c;只要威胁持续存在&#xff0c;网络安全的红利就会持续存在&#xff01; 对于网络安全新入行的同学们来说&#xff0c;这是一个最坏的时代&#xff0c;因为你只能自己搭环境才能重现那些大牛们…

网络编程 lesson5 IO多路复用

select 当需要在一个或多个文件描述符上等待事件发生时&#xff0c;可以使用select函数。 select函数是一个阻塞调用&#xff0c;它会一直等待&#xff0c;直到指定的文件描述符上有事件发生或超时。 select函数详解 int select(int nfds, fd_set *readfds, fd_set *writefd…