当前位置: 首页 > news >正文

k8s部署canal 1.8

 

1、部署configmap

vim canal-config.yaml

 

apiVersion: v1
kind: ConfigMap
metadata:name: canal-confignamespace: canal
data:canal.properties: |# ========== Canal基础配置 ==========canal.id = 1canal.port = 11111canal.destinations = example# ========== 持久化路径 ==========canal.file.data.dir = /home/admin/canal-server/logs/db# ========== Zookeeper配置 ==========canal.zkServers = z-2.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:2181,z-1.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:2181,z-3.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:2181# ========== Server模式配置 ==========canal.serverMode = kafka# ========== Kafka生产者配置 ==========canal.mq.servers = b-2.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.subotizstgmsk.ck8tsh.c2.kafka.ap-southeast-1.amazonaws.com:9092canal.mq.topic = subotiz-canal-merchantdbcanal.mq.flatMessage = truecanal.mq.partitionsNum = 1canal.mq.maxRequestSize = 524288# Kafka生产者高级配置canal.mq.kafka.producer.retries = 5canal.mq.kafka.producer.retry.backoff.ms = 1000canal.mq.kafka.producer.retry.backoff.max.ms = 5000canal.mq.kafka.producer.metadata.fetch.timeout.ms = 120000canal.mq.kafka.producer.metadata.max.age.ms = 300000# ========== 动态Topic配置 ==========canal.mq.dynamicTopic = canal-subotiz-test-table:test1_sre\\.test_users canal.mq.dynamicTopicPartitionNum = subotiz-canal-merchantdb:1canal.mq.partitionHash = .*\..*# ========== 自动扫描配置 ==========canal.auto.scan = truecanal.auto.scan.interval = 5# instance.properties 实例配置instance.properties: |# ========== MySQL连接配置 ==========canal.instance.master.address = mypaydb1.cluster-cl20ky4iyqmn.ap-southeast-1.rds.amazonaws.com:3306canal.instance.dbUsername = canalcanal.instance.dbPassword = vGgRTZubA2qsI2mNcanal.instance.connectionCharset = UTF-8# ========== 表过滤配置 ==========# 白名单正则(同步的库表)canal.instance.filter.regex = (test1_sre)\..*# 黑名单正则(不同步的库表)canal.instance.filter.black.regex = (mysql|dts|mqbone|oauth2_production|account|act|crab|crawfish|datafountain|email_api_production|exec|fortunecat|kirin|notify_api_production|pangu_db|leopard)\\..*,tiger\\._order_transactions_new,main\\.menus,main\\.menu_items# Query语句过滤canal.instance.filter.query = truecanal.instance.filter.query.ddl = truecanal.instance.filter.query.dml = truecanal.instance.filter.query.regex = ^(SELECT|SHOW|DESC|EXPLAIN).*$# ========== 心跳检测 ==========canal.instance.filter.heartbeat = true# ========== DDL解析 ==========canal.instance.parse.ddl = true# ========== 表元数据配置 ==========canal.instance.filter.table.meta = truecanal.instance.tableMetaCache.enable = false# ========== TSDB表结构存储 ==========canal.instance.tsdb.enable = true# ========== 默认GTID配置 ==========canal.instance.gtidon = false# ========== 内存配置 ==========canal.instance.memory.buffer.size = 16384canal.instance.memory.buffer.memunit = 1024canal.instance.transaction.size = 1024# ========== 并行解析 ==========canal.instance.parser.parallel = true

 

kubectl apply -f  canal-config.yaml

 

2、部署statefulset

vim canal-statefulset.yaml

 

 ---
apiVersion: v1
kind: Service
metadata:name: canal-servicenamespace: canal
spec:selector:app: canal-serverports:- name: canalport: 11111targetPort: 11111type: ClusterIP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: canal-servernamespace: canal
spec:serviceName: canal-servicereplicas: 1selector:matchLabels:app: canal-servertemplate:metadata:labels:app: canal-serverspec:securityContext:runAsUser: 0runAsGroup: 0fsGroup: 1000containers:- name: canal-serverimage: canal/canal-server:v1.1.8imagePullPolicy: IfNotPresentports:- containerPort: 11111name: canalenv:- name: JAVA_OPTSvalue: "-Xms2g -Xmx4g -XX:+UseG1GC"command: ["/bin/sh", "-c"]args:- |set -e# 配置修改函数(仅改sed分隔符,其余不变)update_config() {local config_file=$1local custom_config=$2while IFS='=' read -r key value; doif [[ -z "$key" || "$key" =~ ^# ]]; thencontinuefilocal clean_key=$(echo "$key" | tr -d ' \t' | xargs)local clean_value=$(echo "$value" | xargs)local standard_line="$clean_key = $clean_value"if grep -q "^[ \t]*$clean_key[ \t]*=" "$config_file"; thensed -i "s@^\([ \t]*$clean_key[ \t]*=[ \t]*\).*@\1$clean_value@" "$config_file"echo "修改配置项:$clean_key = $clean_value"elseecho "$standard_line" >> "$config_file"echo "新增配置项:$clean_key = $clean_value"fidone < "$custom_config"}# 1. 处理全局配置(指���example实例)if [ ! -f /home/admin/canal-server/conf/canal.properties ]; thencp /home/admin/canal-server/conf/canal.properties.example /home/admin/canal-server/conf/canal.propertiesfiecho "===== 处理canal.properties ====="update_config "/home/admin/canal-server/conf/canal.properties" "/tmp/config/canal.properties"# 2. 核心:直接修改example实例的配置(无需创建自定义目录)echo "===== 处理example实例配置 ====="update_config "/home/admin/canal-server/conf/example/instance.properties" "/tmp/config/instance.properties"# 3. 权限配置(仅给example实例赋权)chown -R admin:admin /home/admin/canal-server/conf/example/chmod -R 755 /home/admin/canal-server/conf/mkdir -p /home/admin/canal-server/data/db /home/admin/canal-server/data/logchown -R admin:admin /home/admin/canal-server/data/db /home/admin/canal-server/data/log# 4. 验证配置echo "===== 最终配置验证 ====="grep "canal.destinations" /home/admin/canal-server/conf/canal.propertiesgrep "canal.instance.master.address" /home/admin/canal-server/conf/example/instance.propertiesecho "========================"# 5. 启动Canal(原生方式,自动加载example实例)/home/admin/app.shresources:requests:memory: "1Gi"cpu: "500m"limits:memory: "3Gi"cpu: "2000m"volumeMounts:- name: canal-configmountPath: /tmp/config- name: canal-datamountPath: /home/admin/canal-server/logsvolumes:- name: canal-configconfigMap:name: canal-configvolumeClaimTemplates:- metadata:name: canal-dataspec:accessModes: ["ReadWriteOnce"]storageClassName: "gp2-ap-southeast-1b"resources:requests:storage: 50Gi

 

kubectl apply -f  canal-statefulset.yaml

 

http://www.jsqmd.com/news/266798/

相关文章:

  • 如何快速掌握GHelper:5个实用技巧让你的ROG设备性能翻倍
  • 终极指南:轻松掌握Retrieval-based-Voice-Conversion-WebUI,实现专业级语音转换效果的完整教程
  • 2026年氨甲环酸精华液实用终极指南:从选购、使用到进阶护理一站式解决 - 资讯焦点
  • PowerJob跨平台部署终极指南:5分钟搞定Windows与Linux环境
  • 2026阿里巴巴运营达人排行,揭秘高效运营之道,阿里运营/阿里巴巴资深运营/阿里资深运营,阿里巴巴运营达人推荐榜单 - 品牌推荐师
  • 热弯成型亚克力产品加工2026年实力厂家推荐几家? - 品牌宣传支持者
  • Chatbox完全攻略:揭秘这款强大AI桌面助手的8大核心功能
  • BabelDOC 终极指南:一键实现专业级PDF翻译与文档处理
  • NMN哪个牌子好?2026年最新十大品牌排名,榜首凭独家矩阵与临床数据胜出 - 资讯焦点
  • NMN品牌哪个强?2026年NMN品牌数据化评分,专利与临床数据权重高 - 资讯焦点
  • Flutter车载应用交互设计与构建实践指南
  • 拼多多店主们看过来小象助手拼多多出评补单软件 - 资讯焦点
  • 实用指南:JAVA自动化测试平台Parasoft Jtest 插件Eclipse/IDEA安装教程
  • IIS服务器的基本使用
  • 2026广西防水公司最新推荐,全场景真实调研口碑数据化解析! - 品牌鉴赏师
  • Python 使用 openpyxl 从 URL 读取 Excel 并获取 Sheet 及单元格样式信息
  • 导师严选9个AI论文平台,专科生轻松搞定毕业论文!
  • 统一身份认证让学工系统管理更简单:一个账号解决所有问题
  • STM32死机90%是因为ISR踩了这5个坑!
  • 终极网盘下载助手:如何一键解锁八大云盘高速下载
  • VirtualLab Fusion:系统建模分析器
  • 合规为基,场景为锚:文心一言API接入的备案要求与深度场景合规解析
  • 2026年口碑苗木批发基地,供应商榜单新鲜出炉,紫薇/白蜡/樱花/红叶李/金叶女贞/苗木/丝棉木,苗木批发基地种植找哪家 - 品牌推荐师
  • 企业如何选择geo优化服务商?2026年geo优化公司全面评测与推荐,破解垂直行业理解与效果保障痛点 - 十大品牌推荐
  • 全内反射棱镜(TIR)的建模
  • 连云港华博机械设备有限公司:蒸汽消音器优势解析 - 速递信息
  • 热门的黑白PE布生产厂家怎么联系?2026年最新排行 - 品牌宣传支持者
  • SpringBoot 拦截器-监听器实战
  • 2026年知名的生态防草布厂家哪家便宜?性价比推荐 - 品牌宣传支持者
  • XUnity.AutoTranslator 完整使用教程:Unity游戏自动翻译插件终极指南